目前在学习 最优化:建模、算法与理论这本书,来此记录一下,顺便做一些笔记,在其中我也会加一些自己的理解,尽量写的不会那么的条条框框(当然最基础的还是要有)
本章将从常用的建模技巧开始,接着介绍统计学、信号处理、图像处理以及机器学习中常见的优化模型,我们会侧重于解释优化建模背后的思想和实际含义。
最小二乘法,依我之见,应该很少有初学者来直接学习这本书,所以这个东西大家应该已经司空见惯了。
设 ϕ i ( x ) : R n → R , i = 1 , 2 , ⋯ , m \phi_i(x):R^n{\rightarrow}R,i=1,2,\cdots,m ϕi(x):Rn→R,i=1,2,⋯,m为 n n n元函数,且有如下方程组
b i = ϕ i ( x ) , i = 1 , 2 , ⋯ , m (3.1.1) b_i={\phi_i(x)},i=1,2,\cdots,m \tag{3.1.1} bi=ϕi(x),i=1,2,⋯,m(3.1.1)
其中 b i b_i bi是已知的实数,我们知道,这个问题并不总是可解的,首先,如果方程组的个数 m m m超过自变量个数 n n n,因此方程组的解可能不存在,其次,由于测量误差等因素,方程组的等式关系可能不是精确成立的,为了能实际情况下求解,最小二乘法的思想是极小化误差的 l 2 l_2 l2范数平方,即
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 (3.1.2) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2} \tag{3.1.2} x∈Rnmini=1∑m(bi−ϕi(x))2(3.1.2)
如果 ϕ i ( x ) \phi_i(x) ϕi(x)为线性函数,那么就称之为线性最小二乘,否则称为非线性最小二乘
最小二乘的思想很直观的,如果方程(3.1.1)存在解,则求解问题(3.1.2)的全局最优解为0,就相当于求出了方程的解,如果方程的解不存在的话,问题(3.1.2)给出了某种程度上误差最小的解。
最小二乘法使用了 l 2 l_2 l2范数来度量误差大小,其主要优点有两个
(1) l 2 l_2 l2范数平方是光滑可微的,它会给目标函数带来较好的性质
(2) l 2 l_2 l2范数对于某种误差的处理有最优性,后续会给出解答
当然,最小二乘并不总是最合理的,No free lunch theorem,根据实际问题,我们还经常建立最小一乘模型以及最大最小模型,其思想是使用不同的范数代替 l 2 l_2 l2范数,如果要保证偏差和绝对值之和最小回归,相应的模型为:
min x ∈ R n ∑ i = 1 m ∣ b i − ϕ i ( x ) ∣ (3.1.3) \min_{x{\in}R^n}\sum_{i=1}^{m}|b_i-\phi_i(x)|\tag{3.1.3} x∈Rnmini=1∑m∣bi−ϕi(x)∣(3.1.3)
如果要最小化最大偏差,其对应的优化模型为:
min x ∈ R n max i ∣ b i − ϕ i ( x ) ∣ (3.1.4) \min_{x{\in}R^n}\max_i|b_i-{\phi_i(x)}|\tag{3.1.4} x∈Rnminimax∣bi−ϕi(x)∣(3.1.4)
在建模时,我们往往需要借助于想要得到的解的性质,例如当最优解不止一个的时候,并不一定所有的解都是我们想要的,为了让解具有光滑性以及克服问题的病态性质,亦或者为了解决过拟合的问题(更具光滑性实际上就是变相解决过拟合),那么改进的模型为
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 + μ ∣ ∣ x ∣ ∣ 2 2 (3.1.5) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2}+\mu||x||_2^2 \tag{3.1.5} x∈Rnmini=1∑m(bi−ϕi(x))2+μ∣∣x∣∣22(3.1.5)
其中 μ > 0 \mu>0 μ>0是个平衡参数,如果想要得到一个稀疏的解,可以借助 l 0 l_0 l0范数构造如下模型( l 0 l_0 l0范数定义为向量中非零元素的个数)
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 + μ ∣ ∣ x ∣ ∣ 0 (3.1.6) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2}+\mu||x||_0 \tag{3.1.6} x∈Rnmini=1∑m(bi−ϕi(x))2+μ∣∣x∣∣0(3.1.6)
其中 μ > 0 \mu>0 μ>0用来控制解的稀疏度,但由于 l 0 l_0 l0范数在实际中难以处理,我们往往使用 l 1 l_1 l1范数来保证稀疏性,模型如下
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 + μ ∣ ∣ x ∣ ∣ 1 (3.1.7) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2}+\mu||x||_1 \tag{3.1.7} x∈Rnmini=1∑m(bi−ϕi(x))2+μ∣∣x∣∣1(3.1.7)
在图像处理中, x x x本身可能不是稀疏的,但是其在变换域中是稀疏的,相应的模型为
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 + μ ∣ ∣ W ( x ) ∣ ∣ 0 (3.1.8) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2}+\mu||W(x)||_0 \tag{3.1.8} x∈Rnmini=1∑m(bi−ϕi(x))2+μ∣∣W(x)∣∣0(3.1.8)
以及
min x ∈ R n ∑ i = 1 m ( b i − ϕ i ( x ) ) 2 + μ ∣ ∣ W ( x ) ∣ ∣ 1 (3.1.9) {\min_{x{\in}R^n}{\sum_{i=1}^m}(b_i-{\phi_i(x)})^2}+\mu||W(x)||_1 \tag{3.1.9} x∈Rnmini=1∑m(bi−ϕi(x))2+μ∣∣W(x)∣∣1(3.1.9)
其中 W : R n → R p W:R^n{\rightarrow}R^p W:Rn→Rp表示某种变换,常用的有全变差以及小波变换
正则项在目标函数的意义是很明显的,我们要同时满足误差尽量小以及它的系数相对来说不能太大,如果系数太大那么他的正则项惩罚就会很高,而当所有的系数都减少下来,那么模型自然而然也就平滑了。
在实际问题中有许多数据来自未知的分布,从数据反推分布的具体形式是非常虫咬的,最大似然估计就是统计中常用的一种估计概率分布的方法,且通过最大似然函数,使得观测数据尽可能地服从假定的模型。
这里我们考虑一种简单的情况,假设已经知道数据来自某种特定的分布,但不知道分布具体的参数,为了方便起见,令 p ( a ; x ) p(a;x) p(a;x)是其分布律或概率密度函数,其中 x x x是未知参数,为了估计 x x x,我们选取一列独立同分布的样本点 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an,似然函数定义为在参数 x x x下,数据集{ a i , i = 1 , 2 , ⋯ , n a_i,i=1,2,\cdots,n ai,i=1,2,⋯,n}发生的概率,即
L ( x ) = ∏ i = 1 n p ( a i ; x ) L(x)=\prod_{i=1}^{n}p(a_i;x) L(x)=i=1∏np(ai;x)
L ( x ) L(x) L(x)实际上就是这 n n n个点的联合概率(联合密度),但此时自变变为了参数 x x x
那么现在就很明显了,参数的最大似然估计定义为
x ^ ∈ arg max x ∈ χ L ( x ) \hat{x}{\in}\argmax_{x{\in}\chi}L(x) x^∈x∈χargmaxL(x)
其实就是求能让 L ( x ) L(x) L(x)最大的那个x,就是通过参数 x x x让发生这件事情的概率最大
其中 χ \chi χ为参数空间,假设最大似然估计存在,则求解最大似然估计本质上是在一族分布中找寻最有可能产生该样本的参数(跟我上面说的差不多),实际中,似然函数的对数的最大值更容易求解,即考虑最大化问题
max x ∈ χ l ( x ) = ln L ( x ) (3.1.10) \max_{x{\in}{\chi}}l(x)={\ln}L(x)\tag{3.1.10} x∈χmaxl(x)=lnL(x)(3.1.10)
因为 l n ( x ) ln(x) ln(x)是严格单调递增的,实际计算中我觉得最大的原因可能是因为相乘可以转化成相加,更容易操作
运筹学中的很多问题就算极小化代价(损失)并极大化收益的过程,比如,我们在玩游戏的时候,每走一步都会有相应的分数奖励,我们期望自然是最后的得分越高越好,旅游时,我们希望在游览所有城市的情况下路径最短或者差旅费最少,在超市物品定价的时候,我们一般会根据价格与其对应可能的销售数,来确定一个最大利益的定价,在这些实际问题中,都可以写成优化问题的形式,其目标函数或者是最小化损失,或者是最大化收益,亦或者二者兼顾(风险最小,收益最大)
物理、化学中很多问题都可以表述成能量极小化的形式,比如,在电子结构计算中,我们通过极小化原子和电子之间的相互作用能量来计算稳定态,一般来说,能量泛函是定义在函数空间上的,即相应优化问题的自变量是无穷维空间中的函数,我们可以通过变分来得到其相应的最优性条件等,实际中常用的另一种办法,是利用合适的离散化,将能量泛函的极小化问题从无穷维空间中拉回到有限空间中,从而得到相应问题的离散解,注意,不同的离散化一般对应于不同的目标函数以及不同的优化问题。
PS:这一块我也还没学,不太能深入理解
当原始问题不容易求解时,优化中一个常用的技巧是松弛,这一技巧的基本思想是:在保留原问题部分性质的条件下,使用简单的项替代目标函数中难以处理的项,进而使得问题更容易求解。例如, l 0 l_0 l0范数是不可微且非凸的,由于 l 1 l_1 l1范数是 l 0 l_0 l0范数在某种程度上的近似,实际中往往用 l 1 l_1 l1范数代替 l 0 l_0 l0范数,因为 l 1 l_1 l1范数是凸 的,其相应模型的理论分析以及算法设计会更简单。
对于低秩优化问题,秩对应矩阵奇异值中非零元的个数,其也是非凸且不可微的,常用方式是将其用矩阵的核范数(矩阵奇异值组成的向量的 l 1 l_1 l1范数)代替,得到一个更容易处理的凸松弛项
另一种松弛的策略是例如处理一个 m i n f ( x ) minf(x) minf(x)问题,使用目标函数的一个下界 f R ( x ) f_R(x) fR(x)来替换 f ( x ) f(x) f(x)进行求解,其中 f R ( x ) f_R(x) fR(x)应该满足:
(1) f R ( x ) ≤ f ( x ) , ∀ x ∈ χ f_R(x){\le}f(x),{\forall}x{\in}{\chi} fR(x)≤f(x),∀x∈χ
(2) f R ( x ) f_R(x) fR(x)具有简单结构
后续介绍的拉格朗日函数,实际上就可以看成是原问题目标函数的松弛
需要注意的是,松弛之后的问题未必与原问题等价,之前我们反复提到 l 0 l_0 l0范数可替换为 l 1 l_1 l1范数均是在一定条件下进行的, l 2 l_2 l2范数一般不能作为 l 0 l_0 l0范数的松弛