非线性最小二乘问题的求解方法(一)


本文仅仅根据《Methods For Non-Linear Least Squares Problems》文章做了整理,主要讨论求解函数极小值的各种方法,文章中多次引用了Frandsen于2004出版的书籍,有兴趣的读者可以查阅。本文借鉴了知乎文章https://zhuanlan.zhihu.com/p/93344177,并根据自己的理解做了部分补充和摘要,以备需要时查阅笔记,也欢迎网友们批评指正。

1.非线性最小二乘问题

最小二乘问题(Non-linear least squares problems)可以归结为以下的数学形式:

1.1 最小二乘问题
求解使得F(x)取得极小值的x
F(x)= 1 2 ∑ i = 1 m f i ( x ) 2 \frac {1}{2}\sum_{i=1}^{m}{f_i(x)^{2}} 21i=1mfi(x)2
其中: f i f_i fi: R n R^n Rn → \rightarrow R, i=1,2,⋯,m是给定的函数,并且m>=n

例1.1 最小二乘问题的典型来源之一就是数据拟合。如下图所示,考虑用曲线对图中的点进行拟合:

假设对点( t i t_i ti, y i y_i yi)进行拟合的曲线M的形式为:
M ( x , t ) = x 3 e x 1 t + x 4 e x 2 t M(x,t)=x_3e^{x_1t}+x_4e^{x_2t} M(x,t)=x3ex1t+x4ex2t
这个拟合模型的依赖参数为x= [ x 1 , x 2 , x 3 , x 4 ] T [x_1,x_2,x_3,x_4]^T [x1,x2,x3,x4]T。我们假设存在 x ∗ x^* x使得下式成立:
y i = M ( x ∗ , t i ) + ϵ i y_i=M(x^*,t_i)+\epsilon_i yi=M(x,ti)+ϵi
其中 ϵ i \epsilon_i ϵi为数据源的(测量)误差,类似于白噪音。对于任意的x,存在残差:
f i ( x ) = y i − M ( x , t i ) = y i − x 3 e x 1 t i − x 4 e x 2 t i , i = 1 , 2 , ⋯ , m f_i(x)=y_i-M(x,t_i)=y_i-x_3e^{x_1t_i}-x_4e^{x_2t_i},i=1,2,⋯,m fi(x)=yiM(x,ti)=yix3ex1tix4ex2ti,i=1,2,,m
最小二乘拟合方法需要求解使得残差的平方和最小的参数x取值。

最小二乘问题可以认为是求解这个问题的变体:存在函数F: R n R^n Rn → \rightarrow R,求解使得该函数取得最小值(通常是目标函数(object function)或代价函数(cost function))的参数。

1.2 全局最小值
给定F(x): R n R^n Rn → \rightarrow R,求解 x ∗ = a r g m i n x x^*=argmin_x x=argminx{F(x)}

事实上这个问题的求解非常困难,这里只讨论简化后的问题,求解F的局部最小值,这里定义列向量x和无穷小量 δ \delta δ,求解局部最小值的问题定义如下:

1.3 局部最小值
给定F(x): R n R^n Rn → \rightarrow R,求解 x ∗ x^* x使得
F ( x ∗ ) < = F ( x ) , 其 中 ∣ ∣ x − x ∗ ∣ ∣ < δ F(x^*)<=F(x), 其中||x-x^*||<\delta F(x)<=F(x),xx<δ

我们假设函数F是连续可微函数,那么根据泰勒展开式有:
F ( x + h ) = F ( x ) + h T g + 1 2 h T H h + O ( ∣ ∣ h ∣ ∣ 3 ) F(x+h)=F(x)+h^Tg+\frac {1}{2}h^THh+O(||h||^3) F(x+h)=F(x)+hTg+21hTHh+O(h3)
其中: g ≡ F ′ ( x ) = [ ∂ F ( x ) ∂ x 1 , ∂ F ( x ) ∂ x 2 , ⋯ , ∂ F ( x ) ∂ x n ] T g\equiv F'(x)=[\frac{\partial F(x)}{\partial x_1},\frac{\partial F(x)}{\partial x_2},⋯,\frac{\partial F(x)}{\partial x_n}]^T gF(x)=[x1F(x),x2F(x),,xnF(x)]T
H ≡ F ′ ′ ( x ) = [ ∂ 2 F ( x ) ∂ x i ∂ x j ] H\equiv F''(x)=[\frac{\partial ^2F(x)}{\partial x_i\partial x_j}] HF(x)=[xixj2F(x)]
如无特殊说明,||h||为二范数, ∣ ∣ h ∣ ∣ = h 1 2 + h 2 2 + ⋯ + h n ||h||=\sqrt {h_1^2+h_2^2+⋯+h_n} h=h12+h22++hn
如果 x ∗ x^* x是局部极小点,那么对于任意列向量h均无法使得 F ( x ∗ + h ) F(x^*+h) F(x+h)取得更小值(相较于 F ( x ) F(x) F(x)),综合连续可微的条件,可得 x ∗ x^* x为函数的局部极小点的必要条件: g ∗ ≡ F ′ ( x ) = 0 g^*\equiv F'(x)=0 gF(x)=0.满足该条件的 x ∗ x^* x称为驻点。
函数的驻点并不一定是函数的局部极小点或局部最大点,不满足局部最大点或局部最小点的驻点称为鞍点,对于驻点 x s x_s xs,有:
F ( x s + h ) = F ( x s ) + 1 2 h T H s h + O ( ∣ ∣ h ∣ ∣ 3 ) F(x_s+h)=F(x_s)+\frac {1}{2}h^TH_sh+O(||h||^3) F(xs+h)=F(xs)+21hTHsh+O(h3), H = F ′ ′ ( x ) H=F''(x) H=F(x)
如果 H s H_s Hs为正定矩阵,则 x s x_s xs为局部最小值;如果 H s H_s Hs为负定矩阵,则 x s x_s xs为局部最大值;否则, x s x_s xs为鞍点。

2.下降方法

非线性优化问题的求解思路大多相似:从初始点 x 0 x_0 x0经过一系列的迭代: x 1 , x 2 , ⋯ x_1, x_2, ⋯ x1,x2,最终(可能)收敛于 x ∗ x^* x,即函数的极小点。需要注意的是,函数可能有很多局部极小点,迭代最终得到的局部极小点与选取的初始点具有密切联系。在迭代初始阶段,我们并不能知道最终的迭代结果,因为局部极小值并不一定接近初始值。迭代的过程明显分为两个阶段:当初始值离局部极小点较远时,除了最初的几步迭代,我们期待迭代过程中误差逐渐减小(原文中这里是不增大): ∣ ∣ e k + 1 < e k ∣ ∣ , k > K . ||e_{k+1}<e_k||, k>K. ek+1<ek,k>K.其中 e k = x k − x ∗ e_k=x_k-x^* ek=xkx;当迭代值 x k x_k xk距离 x ∗ x^* x较近时,即最后阶段,我们需要较快的收敛速度,如:
线性收敛, ∣ ∣ e k + 1 ∣ ∣ < a ∣ ∣ e k ∣ ∣ , 其 中 ∣ ∣ e k ∣ ∣ 为 较 小 值 且 0 < a < 1 ||e_{k+1}||<a||e_k||,其中||e_k||为较小值且0<a<1 ek+1<aek

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值