与梯度下降法一样,牛顿法和拟牛顿法也是求解无约束优化问题的常用的迭代方法。
1、牛顿法
考虑无约束最优化问题:
其中x∗为目标函数的极小点。
牛顿法的一个直观解释:每一次迭代过程中,目标函数在局部可以近似表示成二次函数,然后以该二次函数的极值点来代替目标函数的极值点,不断重复直到收敛。
既然要将目标函数局部近似为二次函数,自然地我们就要引入泰勒公式了。假设f(x)具有二阶连续偏导,若第k次迭代值为
其中,H(x(k))是f(x)在x(k)处的Hesse阵:
f(x)有极值的必要条件是它的一阶导在极值点处取值为0,特别地,若是极小值点则Hesse还是正定矩阵。f(x)的一阶导为:
因此,若从x(k)开始迭代,求f(x)的极小点x(k+1),作为第k+1次的迭代值。即:
则有:
上式即为牛顿法的迭代公式。
算法(牛顿法)
输入:目标函数f(x),梯度g(x)=∇f(x),hesse阵H(x),精度ϵ.
输出:f(x)的极小点。
(1)初始点x(0),迭代次数k=0
(2)计算gk=g(x(k)),若||gk<ϵ||,停止,x∗=x(k)
(3)计算Hk=H(x(k)),并求pk
Hkpk=−gk
(4)置x(k+1)=x(k)+pk
(5)置k=k+1,转步骤(2).
总结:牛顿法与梯度下降法相比,其收敛速度快(二次收敛),但由于每一次迭代都要求解hesse阵的逆,因此计算复杂。
2、拟牛顿法
拟牛顿法的原理本质上是与牛顿法一样的,只不过是在牛顿法的迭代过程中将hesse阵的逆的计算用一个n阶矩阵
那么满足什么条件的Gk可以代替Hesse阵的逆呢?先看Hk满足的条件,由于
令x=x(k+1),则有
记yk=∇f(x(k+1))−∇f(x(k)),δk=x(k+1)−x(k),则
或
上面两式称为拟牛顿条件。
此外,如果Hk是正定的,那么可以保证牛顿法搜索方向pk是下降方向。所以,Gk要扮演H−1k在牛顿法的角色,应当满足同样条件,即:(1)迭代矩阵Gk正定;(2)Gk满足拟牛顿条件:Gk+1yk=δk.
按照拟牛顿条件,每次迭代中可以选择更新矩阵Gk+1:
显然,Gk的选择不是唯一的。常用的拟牛顿法有DFP算法、BFGS算法、Broyden类算法。
3、DFP、BFGS算法
DFP中,记Gk满足拟牛顿条件:Gk+1yk=δk,则迭代公式:
BFGS中,记Bk满足拟牛顿条件:Bk+1δk=yk,则迭代公式: