与梯度下降法一样,牛顿法和拟牛顿法也是求解无约束优化问题的常用的迭代方法。
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 ,则迭代公式: