在MIT的公开课[Introduction to Computer Science and Programming Using Python] 6.00.1x 中,Eric Grimson曾提到过迭代算法的思想就在于将当前迭代点向正确的方向移动一定的“步长”,然后检验目标值是否满足一定要求。同时,“方向”和“步长”也是不同优化算法主要关心的两个方面。除此之外,我们还关心不同优化算法的收敛速率(rate of convergence),这表征了算法是否能在尽量少的迭代次数之外逼近最优解。本文以最速下降法(Steep Descent)和牛顿法(Netwon Method)为例,说明不同算法的收敛速率。本文主要参考了Jorge Nocedal 和 Stephen J. Wright 的 Numerical Optimization 一书(第二版)。
最速下降法(Steep Descent)
最速下降法的思路是以当前迭代点的导数方向的相反方向,也就是下降最快的方向(名字由来),为前进方向。步长选取的一种思路是选择相应的步长使得目标函数取在前进方向上取得最小值。
这里我们以一个简单的二次规划命题为例进行说,即
f(x)=12xTQx+cTx
其中
Q
是对称正定阵。对于目标函数
f(x−α∇fk)=12(x−α∇fk)TQ(x−α∇fk