前置知识
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