梯度下降与海森矩阵

举报
tea_year 发表于 2021/12/23 00:07:30 2021/12/23
【摘要】 理一理基础优化理论,解释一下深度学习中的一阶梯度下降遇到的病态曲率(pathological curvature)问题。当海森矩阵condition number很大时,一阶梯度下降收敛很慢,无论是对鞍点还是局部极值点而言都不是个好事。 鞍点 $f'(x)=0$时函数不一定抵达局部最优解,还可能是鞍点(见上图),此时还必须根据二...

理一理基础优化理论,解释一下深度学习中的一阶梯度下降遇到的病态曲率(pathological curvature)问题。当海森矩阵condition number很大时,一阶梯度下降收敛很慢,无论是对鞍点还是局部极值点而言都不是个好事。

鞍点

$f'(x)=0$时函数不一定抵达局部最优解,还可能是鞍点(见上图),此时还必须根据二阶导数确定。

$f'(x)$ $f''(x)$ $f(x)$
$f'(x)=0$ $f''(x)>0$ 局部最小值
$f'(x)=0$ $f''(x)<0$ 局部最大值
$f'(x)=0$ $f''(x)=0$ 局部极值或鞍点

对角化

如果一个矩阵$A$可分解为如下乘积:

A=WΛW1 A = W Λ W 1


WΛ=(a1a2an)=λ1000λ2000λn(1) W = ( a 1 a 2 a n ) (1) Λ = [ λ 1 0 0 0 λ 2 0 0 0 λ n ]


WΛ=(λ1a1λ2a2λnan) W Λ = ( λ 1 a 1 λ 2 a 2 λ n a n )

$W$中的$n$个特征向量为标准正交基,即满足$W^TW=I$,等价于$W^T=W^{-1}$,也等价于$W$是Unitary Matrix。

由于对角化定义在方阵上,不适用于一般矩阵。一般矩阵的“对角化”就是大名鼎鼎的奇异值分解了。

奇异值分解

Am×n=Um×mΣm×nVTn×n A m × n = U m × m Σ m × n V n × n T

其中,$AA^T$的特征向量stack为$U$,$A^TA$的特征向量stack为$V$,奇异值矩阵$\Sigma$中对角线元素为$\sigma_i = \frac{Av_i}{u_i} $。

Hessian 矩阵

一阶导数衡量梯度,二阶导数衡量曲率(curvature)。当 $f''(x)<0$, $f(x)$ 往上弯曲;当 $f''(x)>0$时,$f(x)$ 往下弯曲,一个单变量函数的二阶导数如下图所示。

fpp.png

对于多变量函数$f(x, y, z, \dots)$,它的偏导数就是Hessian矩阵:

Hf=2fx22fyx2fzx2fxy2fy22fzy2fxz2fyz2fz2 H f = [ 2 f x 2 2 f x y 2 f x z 2 f y x 2 f y 2 2 f y z 2 f z x 2 f z y 2 f z 2 ]

$Hf$并不是一个普通的矩阵,而是一个由函数构成的矩阵。也就是说,$\textbf{H}f$的具体取值只有在给定变量值$(x_0, y_0, \dots)$时才能得到。

 

Hf(x0,y0,)=2fx2(x0,y0,)2fyx(x0,y0,)2fxy(x0,y0,)2fy2(x0,y0,) H f ( x 0 , y 0 , ) = [ 2 f x 2 ( x 0 , y 0 , ) 2 f x y ( x 0 , y 0 , ) 2 f y x ( x 0 , y 0 , ) 2 f y 2 ( x 0 , y 0 , ) ]

由于$Hf$是对称的实数矩阵:

δ2δxiδxjf(x)=δ2δxjδxif(x)Hij=Hji δ 2 δ x i δ x j f ( x ) = δ 2 δ x j δ x i f ( x ) H i j = H j i


vRn,||v||=1vTHvλmax v R n , | | v | | = 1 v T H v λ max

证明

由对角化形式$H = Q\Lambda Q^T$得到${\bf v}^TH{\bf v} = {\bf v}^TQ\Lambda Q^T{\bf v}$。定义一个由$\bf{v}$经过$Q^T$转换的向量${\bf y} = Q^T{\bf v}$,于是

vTHv=yTΛy(2) (2) v T H v = y T Λ y

将对角矩阵$\Lambda$定义(1)代入有:

yTΛy=λmaxy21+λ2y22++λminy2Nλmaxy21+λmaxy22++λmaxy2N=λmax(y21+y22+y2N)=λmaxyTyyTΛyλmaxyTy(3) y T Λ y = λ max y 1 2 + λ 2 y 2 2 + + λ min y N 2 λ max y 1 2 + λ max y 2 2 + + λ max y N 2 = λ max ( y 1 2 + y 2 2 + y N 2 ) = λ max y T y (3) y T Λ y λ max y T y


yTy=vTQQTv=vTv(4) (4) y T y = v T Q Q T v = v T v


yTΛyλmaxyTy(5) (5) y T Λ y λ max y T y


vTHvλmaxvTv v T H v λ max v T v


vTHvλmax(6) (6) v T H v λ max

Condition Number of Hessian

任意可对角化矩阵的Condition Number定义如下:

maxi,jλiλj max i , j | λ i λ j |

line search

在使用line search确定学习率的梯度下降中,参数点可看做首先往梯度最陡峭方向的垂线方向移动一个步长,接着往次陡峭方向移动一个步长。比如$2$个参数的损失函数:

CSx2a.png

将上面的等高线还原为3d的爬山问题,则如下图所示:

ScNMT.png

$3$个参数:

cOPZW.png

7Q1oE.png

$N$个参数:

S0HzM.png

步长(学习率$\epsilon$)是通过如下方式估计的。

根据泰勒级数

f(x)=n=0f(n)(a)n!(xa)n=f(a)+f(a)(xa)+f′′(a)2!(xa)2+f′′′(a)3!(xa)3+ f ( x ) = n = 0 f ( n ) ( a ) n ! ( x a ) n = f ( a ) + f ( a ) ( x a ) + f ( a ) 2 ! ( x a ) 2 + f ( a ) 3 ! ( x a ) 3 +


f(x)f(x)f(x(0)ϵg)=f(x(0))+(xx(0))Tg+12(xx(0))TH(xx(0))+ g f(x(0))+(xx(0))Tg+12(xx(0))TH(xx(0))f(x(0))ϵgTg+12ϵ2gTHg x=x(0)ϵg,ϵ(0,1)(7) f ( x ) = f ( x ( 0 ) ) + ( x x ( 0 ) ) T g + 1 2 ( x x ( 0 ) ) T H ( x x ( 0 ) ) + 其中  g  为偏导数向量 f ( x ) f ( x ( 0 ) ) + ( x x ( 0 ) ) T g + 1 2 ( x x ( 0 ) ) T H ( x x ( 0 ) ) (7) f ( x ( 0 ) ϵ g ) f ( x ( 0 ) ) ϵ g T g + 1 2 ϵ 2 g T H g   x = x ( 0 ) ϵ g , ϵ ( 0 , 1 )

当$g^T H g\le0$时,$\epsilon$增加会导致$f(x)$减小。但$\epsilon$不能太大,因为$\epsilon $越大泰勒级数中的$\approx$越不准。当$g^T H g>0$时,增大$\epsilon$不一定导致损失函数增加或减小。此时,对式(7)中的$\epsilon$求导,得到最佳学习率为:

ϵ=gTggTHggTggTgλmax=1λmax7 gTHggTgλmax.(8) (8) ϵ = g T g g T H g g T g g T g λ m a x = 1 λ m a x 利用式(7)  g T H g g T g λ max .


f(x(0)ϵg)f(x(0))12ϵgTg f ( x ( 0 ) ϵ g ) f ( x ( 0 ) ) 1 2 ϵ g T g

1.png

梯度下降要么下降的很慢,要么步长太大跑得太远。

patho2-1.png

如同在一个狭长的峡谷中一样,梯度下降在两边的峭壁上反复碰撞,很少顺着峡谷往谷底走。

2.png

如果有种方法能让参数点在峭壁上采取较小步长,慢慢移动到谷底(而不是一下子撞到对面),然后快速顺流而下就好了。一阶梯度下降只考虑一阶梯度,不知道损失函数的曲率是如何变化的,也就是说不知道下一步会不会离开峭壁。解决方法之一是考虑了二阶梯度的牛顿法。

牛顿法

损失函数的泰勒展开近似,以及相应的导数近似为:

f(x)df(x)dΔxf(xn)+f(xn)Δx+12f′′(xn)Δx2f(xn)+f′′(xn)Δx f ( x ) f ( x n ) + f ( x n ) Δ x + 1 2 f ( x n ) Δ x 2 d f ( x ) d Δ x f ( x n ) + f ( x n ) Δ x


f(xn)+f′′(xn)Δx=0Δx=f(xn)f′′(xn) f ( x n ) + f ( x n ) Δ x = 0 Δ x = f ( x n ) f ( x n )


xn+1=xn+Δx=xnf(xn)f′′(xn)=xn[Hf(xn)]1f(xn) x n + 1 = x n + Δ x = x n f ( x n ) f ( x n ) = x n [ H f ( x n ) ] 1 f ( x n )


x=x[Hf(x)]1f(x) x = x [ H f ( x ) ] 1 f ( x )


ϵ=[Hf(x)]1f(x) ϵ = [ H f ( x ) ] 1 f ( x )

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/105004738

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。