最小二乘非线性优化整理 (METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS)

泰勒展开

在整理非线性最小二乘问题之前,先整理一个预备知识,泰勒展开。
这里直接放上一个很不错的学习视频,看完这个我就开始在B站学数学了。
泰勒级数
这是一位博主对该视频做了一个简单的总结: 泰勒级数博客

泰勒展开的公式如下:
f ( x ) = f ( a ) 0 ! + f ′ ( a ) 1 ! ( x − a ) + f ′ ′ ( a ) 2 ! ( x − a ) 2 + . . . + f ( n ) ( a ) n ! ( x − a ) n + R n ( x ) f(x) = \frac{f(a)}{0!} + \frac{f'(a)}{1!}(x-a) + \frac{f''(a)}{2!}(x-a)^2 + ...+ \frac{f^{(n)}(a)}{n!}(x-a)^n +R_n(x) f(x)=0!f(a)+1!f(a)(xa)+2!f(a)(xa)2+...+n!f(n)(a)(xa)n+Rn(x)
从视频中我们可以知道,泰勒展开其实就是用一系列的多项式来在a点附近拟合一个复杂的函数。本质上就是让多项式与原函数的各级导数保持一致,从而在a点附近保持比较高的一致性。

接下来的内容则是从一篇文章中截取的:
METHODS FOR NON-LINEAR LEASTSQUARES PROBLEMS

最小二乘问题与非线性优化

问题定义:
问题定义
这个问题定义可能看着不是很明朗,但带上数据拟合的例子就比较清楚了。
在这里插入图片描述
数据点与待拟合模型之间总是有误差的,设拟合模型为
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 = [x_1, x_2, x_3, x_4]^T x=[x1,x2,x3,x4]T,这是待求的。那么最小二乘的的目的就是计算一个最优的 x ′ x' x, 使 y i y_i yi M ( x ′ , t i ) M(x',ti) M(x,ti)的误差之和最小。与公式1.1对应,也就是 F ( x ) = 1 2 ∑ i = 1 m ( y i − M ( x , t i ) ) 2 F(x) = \frac{1}{2}\sum\limits_{i = 1}^m (y_i - M(x,ti))^2 F(x)=21i=1m(yiM(x,ti))2
【m表示数据点的个数,其中 f ( x i ) = ( y i − M ( x , t i ) ) f(x_i) = (y_i - M(x,ti)) f(xi)=(yiM(x,ti)) 被称为cost function】

求取全局最优解是很复杂的。在后面的解释中,我们只给出一个较为简单的解决方案,也就是求取局部最优解。问题定义为:
在这里插入图片描述
这也是非线性最优化问题的基本解题思路,寻找 F ( x ) F(x) F(x) 的下降方向,持续迭代直至该函数无法再下降。【从定义1.1可以看出 F ( x ) F(x) F(x) 总是大于等于0 的。只要 F(x) 不断减小,那么就拟合的越好。在ICP匹配中,就是使用最小二乘,不断迭代来找到使总体匹配误差最小的情况,从而求得位移矩阵及旋转矩阵。】
在这里插入图片描述
原泰勒公式描述的是复杂函数在a点的拟合公式,那么对于a+h,其泰勒公式为
f ( a + h ) = f ( a ) 0 ! + f ′ ( a ) 1 ! ( h ) + f ′ ′ ( a ) 2 ! ( h ) 2 + . . . + f ( n ) ( a ) n ! ( h ) n + R n ( a + h ) f(a+h) = \frac{f(a)}{0!} + \frac{f'(a)}{1!}(h) + \frac{f''(a)}{2!}(h)^2 + ...+ \frac{f^{(n)}(a)}{n!}(h)^n +R_n(a+h) f(a+h)=0!f(a)+1!f(a)(h)+2!f(a)(h)2+...+n!f(n)(a)(h)n+Rn(a+h)
然后用x来替换a,就可以得到1.4a的公式。
后面是两个定理。如果一个点,其一次导数等于0,附近的二次导数是正定的,那么该点就是局部最小点。二次导数正定意味着一次导数是递增的,也就意味着该点附近的一次导数,左边小于0,右边大于0。也就是该点左边是递减的,右边是递增的。那么显然该点是一个局部最小点。
在这里插入图片描述
在这里插入图片描述
总之,最小二乘的目标就是找到一个点,使总误差最小。而为了达到这个目标,所有的非线性优化方法都是通过迭代来完成的。每次迭代都需要满足
F ( x k + 1 ) < F ( x k ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 2.1 ) F(x_{k+1}) < F(x_k) ...............................(2.1) F(xk+1)<F(xk)...............................(2.1)
在这里插入图片描述
在这里插入图片描述
那么第一个方法也就呼之欲出了。 h T h^T hT就是我们想要求的迭代增量。下面介绍非线性优化的常用方法。

下降法 (Descent methods)

最速下降法 (The Steepest Descent method)

最速下降法也叫梯度法,此方法只需要计算原函数的一次导数,故计算速度比较快。从前面的定义2.6也可以大概看出,要想满足该条件,那么显然 h T = − F ′ ( x ) h^T = -F'(x) hT=F(x)。具体的推导见下。【注意, c o s ( θ ) cos(\theta) cos(θ)中的 θ \theta θ指的是 h h h F ′ ( x ) F'(x) F(x)的夹角】
在这里插入图片描述
从几何角度来看,最速下降法的下降方向就是与该点切线方向(一次导数)相反的方向。该方法的优势在于计算速度快,对初始位置要求低,但在最终的收敛阶段会比较慢,容易陷入局部最优。

牛顿法(Newton’s Method)

最速下降法只利用了一次导数的信息,并没有关注一次导数的变化趋势。只关注表面,而不掌握其背后的规律,这样肯定会被迷惑,栽跟头。比如当迭代到某一处,其附近的一次导数都为0时,最速下降法就停止迭代了,而这个点可算不上局部最优点(原文中称之为Stationary point, 驻点)。而牛顿法则更聪明一点,它还考虑了二次导数的信息。一次导数反映的函数值的变化趋势,而二次导数反映的则是一次导数的变化趋势。
在这里插入图片描述
牛顿法得到的结果可以确保是局部最优,其同时满足定理 1.5 和 1.8。但代价是较慢的下降速度与较复杂的计算(二次导数的计算)。那么很自然的,就会有人提出一种混合的方法。在初始阶段,使用最速下降法。在收敛阶段,使用牛顿法。
在这里插入图片描述
如果该点二次导数是正定的(初始阶段),使用最速下降法的下降方向。如果该点不是正定的(收敛阶段),那就使用牛顿法的下降方向。

该章节后面还介绍了怎么选取步长 α \alpha α,这不是我所关注的,有兴趣的可自己去看看原文。同样,后面还有对信赖域法和阻尼法的介绍。

非线性最小二乘问题(NON-LINEAR LEAST SQUARES PROBLEMS)

问题定义

下面的定义其实与前面的最小二乘问题是一样的,区别在于用 Jacobian Matrix 代替了一次导数, 用 Hessian Matrix 代替了 二次导数。关于线性代数,再次推荐B站学习视频:线性代数的本质 - 系列合集
在这里插入图片描述
在这里插入图片描述

高斯牛顿法(The Gauss–Newton Method)

3.7a 公式是用 l ( h ) l(h) l(h) 来表示 f ( x + h ) f(x+h) f(x+h)。 后面虽然看着复杂,其实也就是一些符号变换,比如用 f 表示 f(x), 用 J 表示 J(x) , 为了将问题说的更清楚。涉及一些线性代数的知识。这里的转置是为了维度匹配,简单理解可以直接看成是乘法就好。比如 f T f f^Tf fTf 直接看成 f 2 f^2 f2 即可。而此处得到的结果 3.9,你会发现跟 2.9a 是一样的。 知道怎么求每次的下降方向,也就解决了问题了。
在这里插入图片描述
在这里插入图片描述
然而,一般牛顿高斯法只是一个引子,真正高效常用的方法是 LM 方法,一种带阻尼的高斯牛顿法。通过阻尼来混合使用高斯牛顿法和最速下降法。

The Levenberg–Marquardt Method

LM算法与 高斯牛顿法的区别在于其加入了一个阻尼因子,从而将 公式 3.11 中的 J T J J^T J JTJ 变成了 J T J + μ I J^T J + \mu I JTJ+μI, 得到下面的 3.13 式。这个 μ \mu μ 虽然看着不起眼,但作用巨大。

  1. 确保了二次导数是正定的,这意味着在未到达最优点之前,求得的增量肯定是下降的。
  2. μ \mu μ 比较大时, LM算法类似于最速下降法,这意味着该算法对初始迭代点要求不高。
  3. μ \mu μ 较小时,LM 算法类似于高斯牛顿法,有利于收敛到最优解。
  4. 与前面方法相比,此动态步长更加灵活高效。

后面描述了 μ \mu μ 的初始值选取以及如何更新的。 μ \mu μ 的更新取决于一个更新比公式。该公式分子部分是原函数在某个点的增量,分母部分是近似函数在该点的增量。根据此增量比来更新 μ \mu μ
在这里插入图片描述
在这里插入图片描述
下面是 LM 算法的伪代码。总体架构和前面的一样。
在这里插入图片描述
最后放上一篇论文,使用 FPGA 对非线性优化最小二乘问题做加速。【虽然非线性优化需要求解高维矩阵的逆,但评估发现其运算很快,只有几十us。】
Pang Y, Wang S, Peng Y, et al. A microcoded kernel recursive least squares processor using fpga technology[J]. ACM Transactions on Reconfigurable Technology and Systems (TRETS), 2016, 10(1): 1-22.

如果有什么地方写的有问题,欢迎大佬们批评指正。

Levenberg-Marquardt-Fletcher算法是一种用于非线性最小二乘问题的迭代优化算法。该算法通过在每次迭代中结合高斯牛顿法和梯度下降法的优点,来求解非线性最小二乘问题。 该算法的基本思想是通过不断调整模型参数来提高目标函数的拟合度。在每一轮迭代中,算法根据当前参数估计计算目标函数的梯度矩阵和雅可比矩阵,然后使用这些矩阵来更新参数估计。更新参数的过程是通过调整一个称为 "衰减因子" 的参数,来平衡高斯牛顿法和梯度下降法对参数的调整力度。 具体地说,算法从初始参数值开始,计算目标函数的误差平方和和梯度矩阵。然后,根据衰减因子的大小来判断是使用高斯牛顿法还是梯度下降法。如果衰减因子较大,则使用梯度下降法进行参数调整;如果衰减因子较小,则使用高斯牛顿法进行参数调整。通过不断迭代调整参数,算法逐渐收敛到最优解。 Levenberg-Marquardt-Fletcher算法具有全局收敛性、快速收敛速度和较好的数值稳定性等优点。它在解决非线性最小二乘问题中广泛应用,比如曲线拟合、参数估计等领域。但是,该算法对初始参数的选择敏感,需要借助先验知识或试验来确定初始参数。 总之,Levenberg-Marquardt-Fletcher算法是一种强大的迭代优化算法,可以用于解决非线性最小二乘问题,通过不断调整模型参数来提高目标函数的拟合度和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值