优化方法小结

将各类型优化方法总结下方便查阅,大体分为:一阶梯度依赖的,二阶梯度依赖的;不依赖梯度的优化方法。

1)一阶梯度依赖的优化方法
1.1)GD:Gradient Descent

这个很好理解,根据梯度 wf(w) ▽ w f ( w ) 来指导下一步优化方向。
梯度来源于 f f 沿着某方向l=(e0,e1,...,ei)的方向导数: fw|l=fw,l ∂ f ∂ w | l = ⟨ ∂ f ∂ w , l ⟩ .
其中变化(增长)最快的方向及导数值称为梯度: wf(w)=(fw0,fw1,..,fwi) ▽ w f ( w ) = ( ∂ f ∂ w 0 , ∂ f ∂ w 1 , . . , ∂ f ∂ w i )

w=wηwf(w) w = w − η ▽ w f ( w )

1.2)Moment GD

[带有动量的GD](On the momentum term in gradient descent learning algorithms),其基本思路是,设想如果当前的梯度方向与历史累积的方向相同,是不是可以加大这个方向上的步幅,以加快收敛速度;若震荡的梯度,则是不是可以互相抵消,避免多走弯路,以加快收敛速度。[同向累计,反向抵消]如下, γ=0.9 γ = 0.9

{vt=γvt1+ηww=wvt { v t = γ v t − 1 + η ▽ w w = w − v t

另外一种更新方式如下(需要见证下,来自安德鲁的课程):
{vt=γvt1+(1γ)ww=wηvt { v t = γ v t − 1 + ( 1 − γ ) ▽ w w = w − η v t

[ bias correct ]
假设一个时间变量 vt v t ,如果

vt=γvt1+(1γ)tw v t = γ v t − 1 + ( 1 − γ ) ▽ w t

E[vt]=E[(1γ)tj=1γtjjw] → E [ v t ] = E [ ( 1 − γ ) ∑ j = 1 t γ t − j ▽ w j ]

E[vt]=E[tw](1γ)tj=1γtj+ϵ → E [ v t ] = E [ ▽ w t ] ( 1 − γ ) ∑ j = 1 t γ t − j + ϵ

E[vt]=E[tw](1γt)+ϵ → E [ v t ] = E [ ▽ w t ] ( 1 − γ t ) + ϵ

得到 vt v t 的期望值是 tw ▽ w t 的期望的指数衰减值。
若修正 vt=vt1γtE[vt]E[tw]+ϵ v t = v t 1 − γ t → E [ v t ] ∝ E [ ▽ w t ] + ϵ

1.3) NAG

NAG:Nesterov accelerated gradient [A method for unconstrained convex minimization problem with the rate of convergence o(1/k2)]
基本想法是,提前预知下一步的位置是上坡,则减小步幅,提前预支下一步的位置是下坡,则增大步幅。

{vt=γvt1+ηwf(wγvt1)w=wvt { v t = γ v t − 1 + η ▽ w f ( w − γ v t − 1 ) w = w − v t

1.4) RMSprop

RMSprop GD :root mean square
是Hitton提出的,基本思路是Bias-correct,不过是利用 E[v] E [ v ] 2w ▽ w 2 的正相关关系,找到梯度的期望来指导当前的参数更新。
假设 vt=γvt1+(1γ)2w v t = γ v t − 1 + ( 1 − γ ) ▽ w 2
E[v]=E[2w](1γ)+ϵ → E [ v ] = E [ ▽ w 2 ] ( 1 − γ ) + ϵ

{vt=γvt1+(1γ)2ww=wηwvt { v t = γ v t − 1 + ( 1 − γ ) ▽ w 2 w = w − η ▽ w v t

1.5) Adam

Adam GD:adaptive moment estimation [2015-Adam, A Method for Stochastic Optimization]
结合了moment和RMSP的两者优点,如下:

vt=γ1vt1+(1γ1)wst=γ2st1+(1γ2)2ww=wηvtst+ϵvt=vt1γ1st=st1γ2γ1=0.9;γ2=0.999 { v t = γ 1 v t − 1 + ( 1 − γ 1 ) ▽ w → v t = v t 1 − γ 1 s t = γ 2 s t − 1 + ( 1 − γ 2 ) ▽ w 2 → s t = s t 1 − γ 2 w = w − η v t s t + ϵ γ 1 = 0.9 ; γ 2 = 0.999

并且在online-learning时,Adam也是收敛的。

1.6) AdaGrad

AdaGrad Descent [ Adaptive Subgradient Methods for Online Learning
and Stochastic Optimization]
基本思路: 自适应学习率,能够对频繁更新的参数采取更小的步幅;对更新不频繁的参数采取更大的步幅。非常适合稀疏数据的学习。其中 Gi G i 表示到update当时为止,所有已计算的梯度的平方和。

wi=wiηGi+ϵwi w i = w i − η G i + ϵ ▽ w i

1.7) AdaDelt

AdaDelt GD [ An Adaptive Learning Rate Method]
AdaGrad存在问题:平方和的累和会一直增加下去,导致分母部分无限大,梯度被削弱至非常小,参数不再更新。而AdaDelt则刚好为解决这问题而诞生,借助指数衰减平均 E[2w]t=γE[2w]t1+(1γ)2wt E [ ▽ w 2 ] t = γ E [ ▽ w 2 ] t − 1 + ( 1 − γ ) ▽ w t 2 的思路来避免所有历史梯度^2的平均加和。
首先参数的增量值 xt,i △ x t , i 用梯度的期望来表示为: xt,i=ηE[2wi]t+ϵwt,i △ x t , i = − η E [ ▽ w i 2 ] t + ϵ ▽ w t , i
然后增量值的期望值也用指数衰减平均表示 E[2x]t=γE[2x]t1+(1γ)2xt E [ △ x 2 ] t = γ E [ △ x 2 ] t − 1 + ( 1 − γ ) △ x t 2
用梯度的期望,增量值的期望估计(当次的不知道,用前一次的来估计),以及当前梯度来指导学习的方向。

wt,i=wt1,iE[2xi]t1+ϵE[2wi]t+ϵwt,i → w t , i = w t − 1 , i − E [ △ x i 2 ] t − 1 + ϵ E [ ▽ w i 2 ] t + ϵ ▽ w t , i

作者在原文里解释,是用一阶导数去估计二阶导数Hassion矩阵。

补充阅读

AdaMax
Nadam:Nesterov Momentum into Adam
DFP
DFBS
AdamW

估计函数的二阶导数,其实好多方法都是对二阶导数的估计得来的,比如DFP/DFBS/AdaDelt。

2)二阶梯度依赖的优化方法

各种适应性,在有道云笔记上有部分内容。
牛顿下降法
求解 argminxf(x) a r g m i n x f ( x ) ,等价于找到 f(x)=0 f ′ ( x ) = 0 对应的 x x ∗ 值。
要想找到函数的零值点,可以根据其泰勒展开 f(x)=f(xk)+(xxk)f(xk) f ( x ) = f ( x k ) + ( x − x k ) f ′ ( x k ) 作近似逼近,另f=0,得到 xk+1=xkf(xk)f(xk) x k + 1 = x k − f ( x k ) f ′ ( x k ) ,由于导数是描述增幅的,那么对应的 xk+1 x k + 1 就相应的比 xk x k 要更靠近零值点,如下图。


那么回到等价问题上,找到函数 f(x) f ′ ( x ) 的零值点,我们对 f(x) f ′ ( x ) 在某处 xk x k 做一阶展开 f(x)=f(xk)+(xxk)f′′(xk) f ′ ( x ) = f ′ ( x k ) + ( x − x k ) f ″ ( x k ) ,于是得到迭代关系 xk+1=xkf(xk)f′′(xk) x k + 1 = x k − f ′ ( x k ) f ″ ( x k ) 可以不断逼近 f(x) f ′ ( x ) 的零值点。

3)不依赖梯度的优化方法
3.1)Gradient Boost

Gradient Boost的梯度方向是由最终label与当前的预测label之间的差距给出的,详细见GB

3.2)Constractive Divergence

对比散度类方法,主要是根据条件随机场的收敛性,可以根据下次采样比当前状态更靠近稳定最优解,来给出优化方向,详细见RBM

梯度相关的trick

1) ReLU等激活函数的各种类型。
2) Gradient Clip,常用在RNN类方法中。
3) Batch Normalize,对所有网络都使用。(Group Normalization, Switchable Normalization等改进的方法)
4) 正则化方法及各种变形改进。(DIN里面有个根据数据对梯度作约束的正则,非常有意思)

未完待续
后续会补充能查到的资料,并且会讲解如何在TF里面实现自定义的Gradient Optimize Operation。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值