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