Quasi-Newton拟牛顿法(共轭方向法)
- 1. Introduction
- 2. 牛顿法
- 2.1 不能保证收敛
- 2.2 Hessian计算复杂
- 3. 共轭方向法
- 3.1 共轭方向
- 3.2 共轭方向上可以收敛到极小
- 3.3 共轭梯度法得到的是Q上的共轭方向
- 3.4 算法效果
- 4. 拟牛顿法
- 4.1 拟牛顿法构造的是Q的共轭方向
- 4.2 确定Hk - 秩1修正公式
- 4.2 确定Hk - DFP
- 4.3 确定Hk - BFGS
- 4.4 BFGS ceres
1. Introduction
拟牛顿法可以理解为使用迭代的方法近似Hessian矩阵,但是拟牛顿法本质上其实是共轭方向法,所以用共轭方向法来理解拟牛顿法更加贴切。
本文的主要内容来自于《最优化导论》(《An introduction to optimization》)
2. 牛顿法
牛顿法在很多地方都有详细的说明,就不在这里赘述了。
2.1 不能保证收敛
一般的非线性函数,牛顿法不能保证从任意起始点都可以收敛到极小值点。结果可能会随着迭代在极小值附件震荡,甚至越走越远。这就要求我们设置合理的步长。
2.2 Hessian计算复杂
另外牛顿法中Hessian矩阵计算十分复杂,于是就引入了拟牛顿法,可以设计近似矩阵来代替复杂的Hessian矩阵。
3. 共轭方向法
共轭方向法的求解的主要是n维的二次型函数:
通过找到关于Q的一系列共轭方向d,然后分别从每个共轭方向上优化,最终可以在n步之内得到结果。
同时为了更方便的找到共轭方向,引入使用迭代求出共轭方向的方法,如下的共轭梯度法:
为了说明清楚,我们需要:
- 定义共轭方向
- 通过朝共轭方向更新x,可以收敛到极小值
- 共轭梯度法构造得到的是共轭方向
3.1 共轭方向
共轭方向的定义如下,Q是上面所述的二次型函数中的表达。
关于共轭方向还有一个重要引理: