梯度下降法和牛顿下降法

泰勒公式可以表示为:
f ( x + δ ) = f ( x ) + g T δ + 1 2 δ T h δ + O ( δ 3 ) (1) f(\boldsymbol{x}+\boldsymbol{\delta})=f(\boldsymbol{x})+\boldsymbol{g}^{\rm T}\boldsymbol{\delta}+\frac{1}{2}\boldsymbol{\delta}^{\rm T}\boldsymbol{h}\boldsymbol{\delta}+O(\boldsymbol{\delta^3}) \tag{1} f(x+δ)=f(x)+gTδ+21δThδ+O(δ3)(1)
在(2)中
x = [ x 1 , . . . , x n ] T δ = [ δ 1 , . . . , δ n ] T g = [ ∂ f ∂ x 1 , . . . , ∂ f ∂ x n ] T h = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] \boldsymbol{x}=[x_1,...,x_n]^{\rm T} \\ \boldsymbol{\delta}=[\delta_1,...,\delta_n]^{\rm T}\\ \boldsymbol{g}=[\frac{\partial f}{\partial x_1},...,\frac{\partial f}{\partial x_n}]^{\rm T}\\ \boldsymbol{h}= \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n}\\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix} x=[x1,...,xn]Tδ=[δ1,...,δn]Tg=[x1f,...,xnf]Th= x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f

在上面的表达式中 x \boldsymbol{x} x表示函数自变量, δ \boldsymbol{\delta} δ中每个元素分别对应自变量的扰动, g \boldsymbol{g} g表示梯度矩阵, h \boldsymbol{h} h表示海参矩阵,它是一个实对称矩阵。以下推导梯度下降法和牛顿下降法。


(1)梯度下降法

当每个自变量的扰动量足够小时,可以忽略二阶及二阶以上的泰勒展开项,此时(2)可以表示为:
f ( x + δ ) ≈ f ( x ) + g T δ (2) f(\boldsymbol{x}+\boldsymbol{\delta}) \approx f(\boldsymbol{x})+\boldsymbol{g}^{\rm T}\boldsymbol{\delta} \tag{2} f(x+δ)f(x)+gTδ(2)
我们希望每次运动后的函数值都小于运动前的函数值,即 f ( x + δ ) < f ( x ) f(\boldsymbol{x}+\boldsymbol{\delta})< f(\boldsymbol{x}) f(x+δ)<f(x),所以显然此时需要满足 g T δ = ∣ ∣ g ∣ ∣ ∣ ∣ δ ∣ ∣ c o s ( < g , δ > ) < 0 \boldsymbol{g}^{\rm T}\boldsymbol{\delta}=||\boldsymbol{g}||||\boldsymbol{\delta}||{\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)< 0 gTδ=∣∣g∣∣∣∣δ∣∣cos(<g,δ>)<0,需要注意的函数在已知点处的梯度是确定的,也就是说在某点上 g \boldsymbol{g} g是一个常向量,所以 g T δ \boldsymbol{g}^{\rm T}\boldsymbol{\delta} gTδ中能改变的只有 δ \boldsymbol{\delta} δ,显然,当 c o s ( < g , δ > ) < 0 {\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)< 0 cos(<g,δ>)<0,即向量 g \boldsymbol{g} g δ \boldsymbol{\delta} δ之间的夹角为钝角时,该扰动量能够使函数值下降,且当 c o s ( < g , δ > ) = − 1 {\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)=-1 cos(<g,δ>)=1,即该扰动向量的方向和该点处的梯度向量反向时,函数值下降最快。梯度下降法就是在每个点上均朝着该点梯度反方向运动,经过不断迭代使函数值取得最小值的方法。
函数 f ( x ) f(\boldsymbol{x}) f(x)是一个超曲面(如图1所示),令 f ( x ) = C f(\boldsymbol{x})=C f(x)=C,其中 C C C为常数,即用一个超平面去切 f ( x ) f(\boldsymbol{x}) f(x)对应的超曲面,则当 C C C取不同值时,可以得到如图1所示的等值线图,函数 f ( x ) f(\boldsymbol{x}) f(x)上某一点的梯度方向与该点切线方向垂直,且指向等值线增大的方向,因此,梯度下降法的运动路线即如图1所示,始终沿着函数梯度反方向运动。

图1 梯度下降示意图

梯度下降法的具体操作步骤如下:
a) 设第 k k k次迭代的对应的点为 ( x k , f ( x k ) ) (\boldsymbol{x}_k,f(\boldsymbol{x}_k)) (xk,f(xk)),计算该点的梯度向量 g k \boldsymbol{g}_k gk;
b) 根据梯度下降法可得迭代公式 x k + 1 = x k − α g k \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\alpha \boldsymbol{g}_k xk+1=xkαgk,其中 α \alpha α表示学习率;
c) 不断重复上面的迭代过程,直到满足一定的停止准则。
以一个例子进行说明,设函数 f ( x ) = f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(\boldsymbol{x})=f(x_1,x_2)=x_1^2+x_2^2 f(x)=f(x1,x2)=x12+x22,显然(0,0)即为该函数的最小值点,梯度向量为 g = [ 2 x 1 , 2 x 2 ] T \boldsymbol{g}=[2x_1,2x_2]^{\rm T} g=[2x1,2x2]T,设初始时刻 x 0 = ( 1 , 3 ) \boldsymbol{x}_0=(1,3) x0=(1,3),学习率 α = 0.1 \alpha=0.1 α=0.1,则迭代过程如下:
x 0 = ( 1 , 3 ) x 1 = x 0 − α g 0 = ( 1 , 3 ) − 0.1 ( 2 , 6 ) = ( 0.8 , 2.4 ) x 2 = x 1 − α g 1 = ( 0.8 , 2.4 ) − 0.1 ( 1.6 , 4.8 ) = ( 0.64 , 1.92 ) x 3 = ( 0.512 , 1.536 ) ⋮ x 10 ≈ ( 0.107374 , 0.322122 ) ⋮ x 100 ≈ ( 1.6296 e − 10 , 4.8888 e − 10 ) \boldsymbol{x}_0=(1,3)\\ \boldsymbol{x}_1=\boldsymbol{x}_0-\alpha \boldsymbol{g}_0=(1,3)-0.1(2,6)=(0.8,2.4)\\ \boldsymbol{x}_2=\boldsymbol{x}_1-\alpha \boldsymbol{g}_1=(0.8,2.4)-0.1(1.6,4.8)=(0.64,1.92)\\ \boldsymbol{x}_3=(0.512,1.536)\\ \vdots\\ \boldsymbol{x}_{10} \approx (0.107374,0.322122)\\ \vdots\\ \boldsymbol{x}_{100} \approx (1.6296e^{-10},4.8888e^{-10})\\ x0=(1,3)x1=x0αg0=(1,3)0.1(2,6)=(0.8,2.4)x2=x1αg1=(0.8,2.4)0.1(1.6,4.8)=(0.64,1.92)x3=(0.512,1.536)x10(0.107374,0.322122)x100(1.6296e10,4.8888e10)
显然,经过多次迭代后,已逐渐靠近最优点。


(2)牛顿下降法

梯度下降法只利用到泰勒展开式的一次项,将泰勒展开至二次项可得到:
f ( x + δ ) ≈ f ( x ) + g T δ + 1 2 δ T h δ (3) f(\boldsymbol{x}+\boldsymbol{\delta}) \approx f(\boldsymbol{x})+\boldsymbol{g}^{\rm T}\boldsymbol{\delta}+\frac{1}{2}\boldsymbol{\delta}^{\rm T}\boldsymbol{h}\boldsymbol{\delta} \tag{3} f(x+δ)f(x)+gTδ+21δThδ(3)
可以看出,此时在很小的一个区域内函数 f ( x + δ ) f(\boldsymbol{x}+\boldsymbol{\delta}) f(x+δ)可以看成一个关于 δ \boldsymbol{\delta} δ的二阶曲面,并可通过对 δ \boldsymbol{\delta} δ求导得到该二阶曲面的最小值,将(3)对 δ \boldsymbol{\delta} δ求导可得
∂ f ( x + δ ) ∂ δ = g + h δ = 0 → δ = − h − 1 g (4) \frac{\partial f(\boldsymbol{x}+\boldsymbol{\delta})}{\partial \boldsymbol{\delta}}=\boldsymbol{g}+\boldsymbol{h}\boldsymbol{\delta}=\boldsymbol{0} \rightarrow \boldsymbol{\delta}=-\boldsymbol{h}^{-1}\boldsymbol{g} \tag{4} δf(x+δ)=g+hδ=0δ=h1g(4)

(4)中得到的 δ \boldsymbol{\delta} δ即为牛顿下降法对应的运动向量。牛顿下降法属于二阶收敛,因此收敛速度很快,但是它每次迭代都要计算海森矩阵的逆矩阵,计算量比较大。此外,牛顿下降法还存在一些问题,以下进行分析:
从第(1)节中梯度下降法的分析我们知道,一个运动向量,如果满足 g T δ < 0 \boldsymbol{g}^{\rm T}\boldsymbol{\delta}< 0 gTδ<0,即该向量与梯度向量的夹角为钝角时,那么该运动方向就是有效的运动方向。所以对于(4)中 δ \boldsymbol{\delta} δ,当 g T δ = − g T ( h − 1 g ) < 0 → g T h − 1 g > 0 \boldsymbol{g}^{\rm T}\boldsymbol{\delta}=-\boldsymbol{g}^{\rm T}(\boldsymbol{h}^{-1}\boldsymbol{g})< 0 \rightarrow \boldsymbol{g}^{\rm T}\boldsymbol{h}^{-1}\boldsymbol{g}>0 gTδ=gT(h1g)<0gTh1g>0时,才能保证牛顿下降法给出的方向是有效的方向,即必须要保证 h − 1 ≻ 0 \boldsymbol{h}^{-1} \succ 0 h10,由于 h \boldsymbol{h} h为实对称矩阵,即 h = h T \boldsymbol{h}=\boldsymbol{h}^{\rm T} h=hT,所以 h − 1 = ( h T ) ( − 1 ) = ( h − 1 ) T \boldsymbol{h}^{-1}=(\boldsymbol{h}^{\rm T})^{(-1)}=(\boldsymbol{h}^{-1})^{\rm T} h1=(hT)(1)=(h1)T,所以 h − 1 \boldsymbol{h}^{-1} h1也是实对称矩阵,所以它可以进行正交对角化且其特征值全为实数, h − 1 = U Σ U T \boldsymbol{h}^{-1}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^{\rm T} h1=UΣUT,其中 Σ = d i a g ( λ 1 , . . . , λ n ) \boldsymbol{\Sigma}={\rm diag}(\lambda_1,...,\lambda_n) Σ=diag(λ1,...,λn),当 m i n ( λ 1 , . . . , λ n ) > 0 {\rm min}(\lambda_1,...,\lambda_n)>0 min(λ1,...,λn)>0时,矩阵 h − 1 \boldsymbol{h}^{-1} h1满足正定性要求,此时牛顿下降法给出的方向是有效的方向。
当海森矩阵的逆矩阵不满足正定性要求时,可对牛顿下降方向进行适当修正,具体做法如下:
m i n ( λ 1 , . . . , λ n ) = λ n < 0 {\rm min}(\lambda_1,...,\lambda_n)=\lambda_n< 0 min(λ1,...,λn)=λn<0,则可以令 h ^ = h − 1 + σ I = U Σ U T + σ U I U T = U ( Σ + σ I ) U T = U Σ ^ U T \hat{\boldsymbol{h}}=\boldsymbol{h}^{-1}+\sigma\boldsymbol{I}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^{\rm T}+\sigma\boldsymbol{U}\boldsymbol{I}\boldsymbol{U}^{\rm T}=\boldsymbol{U}(\boldsymbol{\Sigma}+\sigma\boldsymbol{I})\boldsymbol{U}^{\rm T}=\boldsymbol{U}\hat{\boldsymbol{\Sigma}}\boldsymbol{U}^{\rm T} h^=h1+σI=UΣUT+σUIUT=U(Σ+σI)UT=UΣ^UT,其中 σ = ∣ λ n ∣ + ϵ \sigma=|\lambda_n|+\epsilon σ=λn+ϵ ϵ \epsilon ϵ表示很小的正数, Σ ^ = d i a g ( λ 1 + σ , . . . , λ n + σ ) \hat{\boldsymbol{\Sigma}}={\rm diag}(\lambda_1+\sigma,...,\lambda_n+\sigma) Σ^=diag(λ1+σ,...,λn+σ),则牛顿下降方向可以修正为 δ = − h ^ − 1 g \boldsymbol{\delta}=-\hat{\boldsymbol{h}}^{-1}\boldsymbol{g} δ=h^1g


牛顿下降法是二阶收敛,梯度下降是一阶收敛,所以牛顿法的收敛速度更快。形象一点说明就是,如果想找一条最短的路径到盆地的最底部,梯度下降法每次都朝当前位置处坡度最大的方向走,而牛顿法不仅会考虑当前坡度大不大,还会考虑下一步之后,坡度是否会变得更大,因此牛顿法比梯度下降法看得更远,能更快走到最底部。从几何的观点看,牛顿法是用一个二次曲面去拟合当前所在位置的局部曲面,而梯度下降法适用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合效果会比平面更好,因此牛顿法能够选择出更符合真实情况的最优下降路径。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值