梯度下降法和(拟)牛顿法区别及介绍

梯度下降法和牛顿法介绍

梯度下降法和牛顿法都是求解无约束最优化问题的常用方法。
假设 f(x) f ( x ) Rn R n 上具有一阶连续偏导数的函数,要求解的无约束最优化问题为

minxRn f(x) min x ∈ R n   f ( x )

x x ∗ 表示目标函数的极小点。下面分别介绍梯度下降法和牛顿法。


梯度下降法

梯度下降法是一种迭代算法。选取适当的初值 x(0) x ( 0 ) ,不断迭代,更新 x x 的值,进行目标函数的极小化,直到收敛。因为负梯度方向是使函数值下降最快的方向,在迭代的每一步,以扶梯度方向更新x的值,从而达到减少函数值的目的。

由于 f(x) f ( x ) 具有一阶连续偏导数,若第k次迭代值为 x(k) x ( k ) ,则可将 f(x) f ( x ) x(k) x ( k ) 附近进行一阶泰勒展开:

f(x)=f(x(k))+gTk(xx(k))(1.1) (1.1) f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) )

这里, gk=g(x(k))=f(x(k)) g k = g ( x ( k ) ) = ∇ f ( x ( k ) ) f(x) f ( x ) x(k) x ( k ) 处的梯度。

求出第k+1次迭代值 x(k+1) x ( k + 1 ) :

x(k+1)x(k)+λkpk(1.2) (1.2) x ( k + 1 ) ← x ( k ) + λ k p k

其中, pk p k 是搜索方向,取负梯度方向 pk=f(x(k)) p k = − ∇ f ( x ( k ) ) , λk λ k 是步长,由一维搜索确定,即 λk λ k 使得
f(x(k)+λkpk)=minλ0f(x(k)+λpk)(1.3) (1.3) f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k )


牛顿法

牛顿法收敛速度快,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂,可通过拟牛顿法简化计算过程。

假设 f(x) f ( x ) 具有二阶连续偏导数,若第k次迭代值为 x(k) x ( k ) ,则可在 x(k) x ( k ) 附近进行二阶泰勒展开:

f(x)=f(x(k))+gTk(xx(k))+12(xx(k))TH(x(k))(xx(k))(2.1) (2.1) f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) )

这里, gk=g(x(k))=f(x(k)) g k = g ( x ( k ) ) = ∇ f ( x ( k ) ) f(x) f ( x ) x(k) x ( k ) 处的梯度, H(x(k)) H ( x ( k ) ) f(x) f ( x ) 的海塞矩阵(Hesse matrix)
H(x)=[2fxixj]n×n(2.2) (2.2) H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n

在点 x(k) x ( k ) 的值。函数 f(x) f ( x ) 有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0。特别是当 H(x(k)) H ( x ( k ) ) 为正定矩阵时,函数 f(x) f ( x ) 的极值为极小值。

牛顿法利用极小点的必要条件

f(x)=0(2.3) (2.3) ∇ f ( x ) = 0

每次迭代从点 x(k) x ( k ) 开始,求目标函数的极小点,作为第k+1次迭代值 x(k+1) x ( k + 1 ) 。具体地,假设 x(k+1) x ( k + 1 ) 满足:
f(x(k+1))=0(2.4) (2.4) ∇ f ( x ( k + 1 ) ) = 0


f(x)=gk+Hk(xx(k))(2.5) (2.5) ∇ f ( x ) = g k + H k ( x − x ( k ) )

其中 Hk=H(x(k)) H k = H ( x ( k ) ) 。这样
gk+Hk(x(k+1)x(k))=0(2.6) (2.6) g k + H k ( x ( k + 1 ) − x ( k ) ) = 0

因此,
x(k+1)x(k)H1kgk(2.7) (2.7) x ( k + 1 ) ← x ( k ) − H k − 1 g k

牛顿法只适用于Hessian矩阵时正定的情况。在深度学习中,目标函数的表面通常非凸,如鞍点。如果Hessian矩阵的特征值并不都是正的,牛顿法实际上回导致更新朝错误方向移动。这种情况可以通过正则化Hessian矩阵来避免。常用的正则化策略包括在Hessian矩阵对角线上增加常数 α α ,即 H=H+αI H = H + α I .但是当曲率方向极端的情况下, α α 的值必须足够大以抵消负特征值,这会导致Hessian矩阵由对角矩阵 αI α I 主导,牛顿法选择的方向会收敛到普通梯度除以 α α ,梯度下降也比合适学习率的步长更小。


梯度下降法和牛顿法的区别与对比

  • 梯度下降法是一阶优化算法,牛顿法是二阶优化算法
  • 牛顿法的收敛速度相比梯度下降法常常较快
  • 牛顿法每次需要更新一个二维矩阵,计算代价很大,实际使用中常使用拟牛顿法
  • 牛顿法对初始值有一定要求,在非凸优化问题中(如神经网络训练),牛顿法很容易陷入鞍点(牛顿法步长会越来越小),而梯度下降法则很容易逃离鞍点(因此在神经网络训练中一般使用梯度下降法,高维空间的神经网络中存在大量鞍点)
  • 梯度下降法在靠近最优点时会震荡,因此步长调整在梯度下降法中是必要的,具体有adagrad, adadelta, rmsprop, adam等一系列自适应学习率的方法

拟牛顿法介绍

在牛顿法的迭代中,需要计算海塞矩阵的逆矩阵,矩阵中元素的数目是参数数量的平方,这一计算比较复杂(在神经网络中,很小的网络参数可能也是百万数量级的),对于参数数目为k的网络,需要计算 k×k k × k 矩阵的逆,计算复杂度为 O(k3) O ( k 3 ) 。考虑用一个n阶矩阵 Gk=G(x(k)) G k = G ( x ( k ) ) 来近似代替 H1k=H1(x(k)) H k − 1 = H − 1 ( x ( k ) ) .

先看牛顿法中海塞矩阵满足的条件。首先 Hk H k 满足以下关系。在式 (2.5) ( 2.5 ) 中取 x=x(k+1) x = x ( k + 1 ) ,即得

gk+1gk=Hk(x(k+1)x(k))(3.1.1) (3.1.1) g k + 1 − g k = H k ( x ( k + 1 ) − x ( k ) )

yk=gk+1gk,δk=x(k+1)x(k) y k = g k + 1 − g k , δ k = x ( k + 1 ) − x ( k ) ,则
yk=Hkδk(3.1.2) (3.1.2) y k = H k δ k

称为拟牛顿条件。

如果 Hk H k 是正定的,可以保证牛顿法搜索方向 pk p k 是下降方向,这是因为搜索方向是 pk=λgk p k = − λ g k ,由式 (2.7) ( 2.7 ) 可得

x=x(k)+λpk=x(k)λH1kgk(3.1.3) (3.1.3) x = x ( k ) + λ p k = x ( k ) − λ H k − 1 g k

所以 f(x) f ( x ) x(k) x ( k ) 的泰勒展开式 (2.1) ( 2.1 ) 可以近似写成:
f(x)=f(x(k))λgTkH1kgk(3.1.4) (3.1.4) f ( x ) = f ( x ( k ) ) − λ g k T H k − 1 g k

H1k H k − 1 正定,当 λ λ 为一个充分小的正数时,总有 f(x)<f(x(k)) f ( x ) < f ( x ( k ) ) ,也就是说 pk p k 是下降方向。

拟牛顿法将 Gk G k 作为 H1k H k − 1 的近似,要求矩阵 Gk G k 满足同样的条件。首先,矩阵 Gk G k 是正定的,同时满足拟牛顿条件:

Gk+1yk=δk(3.1.5) (3.1.5) G k + 1 y k = δ k

按照拟牛顿条件,每次迭代中可以选择更新矩阵 Gk+1 G k + 1
Gk+1=Gk+ΔGk(3.1.6) (3.1.6) G k + 1 = G k + Δ G k

下面介绍Broyden类拟牛顿法。

DFP(Davidon-Fletcher-Powell)算法

DFP算法选择 Gk+1 G k + 1 的方法是,假设每一步迭代中 Gk+1 G k + 1 是由 Gk G k 加上两个附加项构成的:

Gk+1=Gk+Pk+Qk(3.2.1) (3.2.1) G k + 1 = G k + P k + Q k

其中 Pk,Qk P k , Q k 是待定矩阵。

为使 Gk+1 G k + 1 满足拟牛顿条件,可使 Pk,Qk P k , Q k 满足:

Pkyk=δkQkyk=Gkyk(3.2.2) (3.2.2) P k y k = δ k Q k y k = − G k y k

可取
Pk=δkδTkδTkykQk=GkykyTkGkyTkGkyk(3.2.3) (3.2.3) P k = δ k δ k T δ k T y k Q k = − G k y k y k T G k y k T G k y k

那么可得迭代公式:
Gk+1=Gk+δkδTkδTkykGkykyTkGkyTkGkyk(3.2.4) (3.2.4) G k + 1 = G k + δ k δ k T δ k T y k − G k y k y k T G k y k T G k y k

BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法

BFGS算法是最流行的拟牛顿法
考虑用 Bk B k 逼近海塞矩阵 H H
相应的拟牛顿条件为

(3.3.1)Bk+1δk=yk


Bk+1=Bk+Pk+Qk(3.3.2) (3.3.2) B k + 1 = B k + P k + Q k

考虑使 Pk,Qk P k , Q k 满足:
Pkδk=ykQkδk=Bkδk(3.3.3) (3.3.3) P k δ k = y k Q k δ k = − B k δ k

找出适合条件的 Pk,Qk P k , Q k ,得到迭代公式:
Bk+1=Bk+ykyTkyTkδkBkδkδTkBkδTkBkδk(3.3.4) (3.3.4) B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k

事实上,若记 Gk=B1k,Gk+1=B1k+1 G k = B k − 1 , G k + 1 = B k + 1 − 1 ,那么对式 (3.3.4) ( 3.3.4 ) 应用两次Sherman-Moriison公式可得:

Gk+1=(IδkyTkδTkyk)Gk(IδkyTkδTkyk)+δkδTkδTkyK(3.3.5) (3.3.5) G k + 1 = ( I − δ k y k T δ k T y k ) G k ( I − δ k y k T δ k T y k ) + δ k δ k T δ k T y K

称为BFGS算法关于 Gk G k 的迭代公式

L-BFGS算法

在上述的BFGS算法的计算过程中, Gk G k 逐渐的变得稠密,因此计算量逐渐正大。为了避免这个问题,L-BFGS算法做了以下的改进:

  • 在每一步估算海塞矩阵的近似的时候,给出一个当前的初始估计 G0 G 0
  • 利用过去的m-1次的曲率信息修正 G0 G 0 直到得到最终的海塞矩阵。


    ρk=1δTkykVk=(IρkykδTk)(3.4.1) (3.4.1) ρ k = 1 δ k T y k V k = ( I − ρ k y k δ k T )

    则式 (3.3.5) ( 3.3.5 ) 变为
    Gk+1=VTkGkVk+ρkδkδTk=(VTkVTkm)G(0)k(VkmVk)+Σmj=0ρkm+1(Πmj1l=0VTkl)δkm+jδTkm+j(Πmj1l=0Vkl)(1)(2)(3.4.2) (1) G k + 1 = V k T G k V k + ρ k δ k δ k T (2) = ( V k T ⋯ V k − m T ) G k ( 0 ) ( V k − m ⋯ V k ) (3.4.2) + Σ j = 0 m ρ k − m + 1 ( Π l = 0 m − j − 1 V k − l T ) δ k − m + j δ k − m + j T ( Π l = 0 m − j − 1 V k − l )

    初始值由下式给出:
    G(0)k=δTkyk||yk||2I(3.4.3) (3.4.3) G k ( 0 ) = δ k T y k | | y k | | 2 I

L-BFGS算法的优点是,它不需要记忆 G G 或者B这两个近似矩阵,而只需要存储 {δiyi} { δ i , y i } 的一个序列,这样就大大节省了存储空间。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页