理解牛顿法

牛顿法与梯度下降法相比,收敛速度更快,在搜索空间中进行二阶收敛,即以椭圆曲面去逼近最优解,也可以将牛顿法看作二次曲面下的梯度下降法。牛顿法对于凸二次最优问题,迭代一次即可得到最优解。

首先给出无约束最优目标问题定义(统计学习方法附录B):

minxRnf(x)

其中, x 为目标函数的极小点。
假设f(x)具有二阶连续偏导,若第k次迭代值为 x(k) ,在该点对目标函数二阶泰勒展开,得到:

f(x)=f(x(k))+gTk(xx(k))+12(xx(k))H(x(k))(xx(k))
(式1)

其中, gk 表示f(x)在点 x(k) 的梯度值, H(x(k)) 是f(x)在点 x(k) 的海赛矩阵,表示函数对x,y的二阶混合偏导。海赛矩阵定义如下:

H(x)=[2fxiyi]n×n

学习高数时,我们知道,对于有二阶倒数的函数求极小值,要使一阶导数等于0,二阶导数大于0。在这里,f(x)有极小值也要求一阶导数等于0,其海赛矩阵是正定矩阵。
牛顿法的迭代公式通过极小点的必要条件 f(x)=0 来推出,具体过程如下:
x(k) 处对式1两侧求导,得:

f(x)=gk+Hk(xx(k))

由极小点条件 f(x)=0 得:

gk+Hk(xx(k))=0
, 则
x(k+1)=x(k)H1kgk

pk=H1kgk ,即可得出牛顿法的迭代公式:

x(k+1)=x(k)+pk

综上,牛顿法的过程如下:
(1)、取初始值 x(0) ,置k=0;
(2)、计算 gk 的值,若 ||gk||<ϵ ,则停止迭代,记 x=x(k) ;
(3)、计算海赛矩阵 Hk ,并求出 pk
(4)、利用式 x(k+1)=x(k)+pk 对x值进行更新
(5)、置 k=k+1 ,转步骤(2)。

由过程(3)可知,牛顿法在求解过程中,需要在每次迭代过程中计算海赛矩阵的逆矩阵,比较复杂,这也是制约牛顿法的一个因素,因此人们对牛顿法进行了改进,提出了拟牛顿法。由过程(4)可知,牛顿法使用二阶导数来对当前点进行更新,不仅考虑了梯度下降的方向,还考虑了梯度的梯度,根据梯度的变化自动更新步长。此外,牛顿法对初始点的选取敏感,若选取的初始点离极小点太远,会造成海赛矩阵非正定,从而使得算法不一定收敛,因此在使用中,会配合梯度下降法一起使用,当点离极小点比较近时,使用牛顿法来更新。

你可能感兴趣的:(牛顿法)