Levenberg-Maquardt Algorithm 推导
前置知识
1. 牛顿法
作用:1. 求根 2.求极值
-
求根
目标: 求解
的根
计算穿过初始点
并且斜率为
的直线与x轴的交点可得
迭代公式:
-
求解一维无约束最小值
目标: 求解
的根
牛顿法也可用来求解函数的极值。极值点是导数为0,可用牛顿法求导数的零点。
的二阶泰勒展开为
求解
可得
迭代公式:
-
求解高维无约束最小值
高维情况下泰勒二阶展开为
因此迭代公式:
优点
- 牛顿法是二阶收敛,比一般梯度下降法更快收敛,特别是当初始点距离目标足够靠近。
缺点
- 应用求极值的时候需要目标函数二次可微,而梯度下降法只需要可微
- 需要
矩阵正定,遇到
的极值点,或者初始点距离目标远时候可能无法收敛
- 每次迭代需要求
的逆矩阵,运算量非常大
2. 高斯-牛顿法
作用:降低牛顿法的计算量,提高计算效率
最小二乘法问题
对于向量函数
最小化 或者找到
这里
牛顿法推导
已知牛顿法迭代公式:
的梯度
即
矩阵有
忽略二阶导数项有:
所以:
高斯-牛顿迭代公式:
优点
-
满秩,此时二次项
可以忽略,高斯牛顿和牛顿法都会收敛
- 无需计算
矩阵
缺点
- 若
或
比较大,会导致难以忽略该二次项,高斯牛顿法的收敛速度会很慢,甚至无法收敛。
Levenberg-Maquardt 算法
根据目标函数 二阶近似得到:
我们定义下降方向为
高斯牛顿法迭代公式:
LM迭代公式:
or
作用:结合了高斯牛顿法与梯度下降法的特点,引入阻尼因子来调节算法特性。
因子作用:
- 当
时保证系数矩阵正定,从而确保迭代的下降方向
- 当
很大时,退化为梯度下降法:
- 当
很小时,退化为高斯牛顿法:
的计算
-
初始取值:
的初始值
与
矩阵的元素个数有关:
-
更新: 由系数
来控制,这里:
分子的目标函数在步长
下的实际变化,分母为目标函数二阶近似的变化:
可以看出
-
越大,表明
对
的效果越好,可以缩小
以使得
算法接近高斯牛顿法
-
越小,表明
对
的效果越差,所以增大
以使得
算法接近梯度下降法并减少步长
-
和
关系曲线图
LM算法流程图
Reference
-
boksic 非线性优化整理-1.牛顿法 http://blog.csdn.net/boksic/article/details/79130509
-
boksic 非线性优化整理-2.高斯牛顿法 https://blog.csdn.net/boksic/article/details/79055298
-
boksic 非线性优化整理-3.Levenberg-Marquardt法(LM法)https://blog.csdn.net/boksic/article/details/79177055#
-
Timmy_Y 训练数据常用算法之Levenberg–Marquardt(LM)https://blog.csdn.net/mingtian715/article/details/53579379
-
Miroslav Balda 的Methods for non-linear least square problems http://download.csdn.net/detail/mingtian715/9708842