牛顿法介绍
- 首先牛顿法是求解函数值为0时的自变量取值的方法。如果你看不懂这句没关系,继续往下看就好。
- 利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是,函数的极值点处的一阶导数为0。
- 其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。
其迭代过程如下:
这里我们通过对上图迭代过程的描述就可以求出参数 θ θ θ的迭代公式,这里来推导一下。
设上图的切线为 y = k x + b y=kx+b y=kx+b,很明显,斜率 k k k是 f ′ ′ ( θ ) f''(θ) f′′(θ),同时切线过点 ( θ , f ′ ( θ ) ) (θ,f'(θ)) (θ,f′(θ)),则b=f’(θ)-f’’(θ)θ,所以切线方程为: y = f ′ ′ ( θ ) x + f ′ ( θ ) − f ′ ′ ( θ ) θ y=f''(θ)x+f'(θ)-f''(θ)θ y=f′′(θ)x+f′(θ)−f′′(θ)θ,现在求 y = 0 y=0 y=0时候的 x x x值,结果为: x = ( f ′ ′ ( θ ) θ − f ′ ( θ ) ) / f ′ ′ ( θ ) = θ − f ′ ( θ ) / f ′ ′ ( θ ) x=(f''(θ)θ-f'(θ))/f''(θ)=θ-f'(θ)/f''(θ) x=(f′′(θ)θ−f′(θ))/f′′(θ)=θ−f′(θ)/f′′(θ)即每次执行的迭代操作是 θ − = f ′ ( θ ) / f ′ ′ ( θ ) θ-=f'(θ)/f''(θ) θ−=f′(θ)/f′′(θ),其中 f ( ⋅ ) f(·) f(⋅)是损失函数。
推导
- 其正规的推导流程如下:
其中 H H H是海森矩阵。
海森矩阵、泰勒公式、梯度下降法
- 这里说一下海森矩阵、泰勒公式、梯度下降法之间的关系。
- 首先由泰勒公式有:
这里涉及到多元函数下的泰勒展开式子,可见下图:
以二元为例:
然后再看:
是这样的,因为 ε ∈ ( 0 , 1 ) ε∈(0,1) ε∈(0,1),而当 g T H g < = 0 g^THg<=0 gTHg<=0时二次函数开口向下,然后极值点的横坐标=-b/2a(高中数学),即 ( g T g ) / ( g T H g ) < 0 ( 分 子 大 于 0 , 分 母 小 于 0 ) (g^Tg)/(g^THg)<0(分子大于0,分母小于0) (gTg)/(gTHg)<0(分子大于0,分母小于0),所以在 ε ∈ ( 0 , 1 ) ε∈(0,1) ε∈(0,1)时, ε ε ε增加会导致 f ( x ) f(x) f(x)减小。至于 ( g T H g ) < ( g T g λ m a x ) (g^THg)<(g^Tgλ_{max}) (gTHg)<(gTgλmax)则是一个定理证明,这里不多说了,有兴趣的看这里:https://www.hankcs.com/ml/gradient-descent-and-hessian-matrix.html#respond - 学习率与曲率成反比,也就是说在曲率大的方向(垂直于峭壁)的学习率小,而在曲率小的方向(平行于峭壁)的学习率大。也就是是说此时的梯度下降在顺流而下的方向的学习率更大,也就更快收敛了。
牛顿法特点
- 牛顿法收敛速度为二阶,对于正定二次函数一步迭代即达最优解。
- 牛顿法是局部收敛的,当初始点选择不当时,往往导致不收敛
- 牛顿法不是下降算法,当二阶海塞矩阵非正定时,不能保证产生方向是下降方向。
- 二阶海塞矩阵必须可逆,否则算法进行困难。
- 对函数要求苛刻(二阶连续可微,海塞矩阵可逆),而且运算量大。
- 当函数的海森矩阵在梯度为零的位置上的特征值全为正时,该函数得到局部最小值。
- 当函数的海森矩阵在梯度为零的位置上的特征值全为负时,该函数得到局部最⼤值。
- 当函数的海森矩阵在梯度为零的位置上的特征值有正有负时,该函数得到鞍点。