optimizer for neural nets

本文主要对Momentum和adaptive lr进行介绍

Pytorch实现Momentum的方式

Regular momentum
p k + 1 = β k ^ p k + ∇ f i ( w k ) p_{k+1}=\hat{\beta_k}p_k+\nabla f_i(w_k) pk+1=βk^pk+fi(wk) w k + 1 = w k − γ k p k + 1 w_{k+1}=w_k-\gamma_kp_{k+1} wk+1=wkγkpk+1

p p p表示Momentum, w w w表示权重,在每次更新的时候,同时对 p p p w w w进行更新,其中 0 ≤ β k ^ < 1 0 \leq \hat{\beta_k}<1 0βk^<1,当 β k ^ \hat{\beta_k} βk^等于0的时候,等价于在直接做gradient descent。一般 β k ^ \hat{\beta_k} βk^可以取0.9或者0.99,但是要注意的是,在调 β k ^ \hat{\beta_k} βk^大小的时候,learning rate也需要做出对应的改变, β k ^ \hat{\beta_k} βk^增大, l r lr lr就需要适当减小

Nesterov’s momentum
p k + 1 = β k ^ p k + ∇ f i ( w k ) p_{k+1}=\hat{\beta_k}p_k+\nabla f_i(w_k) pk+1=βk^pk+fi(wk) w k + 1 = w k − γ k ( ∇ f i ( w k ) + β k ^ p k + 1 ) w_{k+1}=w_k-\gamma_k(\nabla f_i(w_k)+\hat{\beta_k}p_{k+1}) wk+1=wkγk(fi(wk)+βk^pk+1)

个人觉得相对于Regular momentum来说,因为 p k + 2 = β k ^ p k + 1 + ∇ f i ( w k + 1 ) p_{k+2}=\hat{\beta_k}p_{k+1}+\nabla f_i(w_{k+1}) pk+2=βk^pk+1+fi(wk+1),而Nesterov版本更新 w k w_k wk的时候使用的是 ∇ f i ( w k ) + β k ^ p k + 1 \nabla f_i(w_k)+\hat{\beta_k}p_{k+1} fi(wk)+βk^pk+1,感觉上相当于是介于 p k + 1 p_{k+1} pk+1 p k + 2 p_{k+2} pk+2之间,比 p k + 1 p_{k+1} pk+1往前多看了半步的感觉。

在训练神经网络的时候,带Momentum的版本一般会比普通SGD版本要快一些,但是Regular和Nesterov版本表现相似。除了它的速度之外,Momentum的版本具有noise smoothing的特性,对于有噪声的梯度,或者在某步更新的时候选取的样本点计算的梯度方向与global minimum的方向相差甚远,Momentum对其的矫正作用显著。

另外的Regular Momentum表示方式

w k + 1 = w k − γ k ∇ f i ( w k ) + β k ( w k − w k − 1 ) w_{k+1}=w_k-\gamma_k\nabla f_i(w_k)+\beta_k(w_k-w_{k-1}) wk+1=wkγkfi(wk)+βk(wkwk1)

Adaptive methods

不再是网络中的每一个权重都具有相同的学习率,而是每一个权重有它特有的学习率

RMSprop

v t + 1 = α v t + ( 1 − α ) ∇ f i ( w t ) 2 v_{t+1}=\alpha v_t+(1-\alpha)\nabla f_i(w_t)^2 vt+1=αvt+(1α)fi(wt)2 w t + 1 = w t − γ ∇ f i ( w t ) v t + 1 + ϵ w_{t+1}=w_t-\gamma \frac{\nabla f_i(w_t)}{\sqrt{v_{t+1}}+\epsilon} wt+1=wtγvt+1 +ϵfi(wt)

上式中的 f i ( w t ) 2 f_i(w_t)^2 fi(wt)2为element-wise的平方。

Adam:带Momentum的RMSprop

m t + 1 = β m t + ( 1 − β ) ∇ f i ( w t ) m_{t+1}=\beta m_t +(1-\beta) \nabla f_i(w_t) mt+1=βmt+(1β)fi(wt) v t + 1 = α v t + ( 1 − α ) ∇ f i ( w t ) 2 v_{t+1}=\alpha v_t+(1-\alpha)\nabla f_i(w_t)^2 vt+1=αvt+(1α)fi(wt)2 w t + 1 = w t − γ m t v t + 1 + ϵ w_{t+1}=w_t-\gamma \frac{m_t}{\sqrt{v_{t+1}}+\epsilon} wt+1=wtγvt+1 +ϵmt

m t m_t mt相当于Momentum

Adam得以work的原因在理论上并没有得到比较好的解释,并且Adam有着一些缺点,比如说在一些简单的问题上不会收敛,泛化误差可能较大,需要调的参数多了一个,但是在一些复杂的问题上,一般来说Adam的表现要远优于SGD。

参考资料:NYU《Deep Learning》2020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值