权重更新优化器总结

权重更新优化器总结

在上吴恩达的深度学习课程时,学习了很多权重更新的方式,但当时学习的时候比较蒙,可能当时理解了,后面又忘了为什么这么用。这两天又看到一些资料,正好整理总结一下。

在这里插入图片描述
我们先计算一下反向传播的公式,具体详细过程就不再讲解了/
以上图为例,现在我们更新权重 w 11 ( 2 ) w_{11}^{(2)} w11(2),更新公式如下所示:
w 11 ( 2 ) ( n e w ) = w 11 ( 2 ) ( o l d ) − l e a r n i n g _ r a t e × g r a d i e n t w_{11}^{(2)}(new) = w_{11}^{(2)}(old) - learning\_rate\times gradient w11(2)(new)=w11(2)(old)learning_rate×gradient

在实际训练时数据集的量是非常庞大的,我们不能保证数据一次性全部载入内存,因此只能分批次训练。

如果使用整个样本集进行训练,损失梯度会指向全局最优的方向,如下图所示。
在这里插入图片描述
因此在进行梯度传播时我们不能总是保证梯度朝着最优的方向前进。如果使用分批次样本进行求解损失梯度则会指向当前批次最优的方向,但是这个方向从全局来说不一定是最优的方向。如下图所示:
在这里插入图片描述
为了解决这个问题我们就要使用到优化器(optimizer),常见的优化器主要有一下几个:

  • SGD
  • SGD + Momentum
  • Adagrad
  • RMSProp
  • Adam
    它们的目的就是为了使网络收敛的更快。
1. SGD优化器(Stochastic Gradient Descent)

SGD也就是我们常说的随机梯度下降方法。
W t + 1 = W t − α ⋅ g ( W t ) W_{t+1} = W_t - \alpha· g(W_t) Wt+1=Wtαg(Wt)
缺点:

  • 易受样本噪声影响,比如说样本集中有样本的标签标注错误,那么这就会影响梯度下降的方向,可能会使下降方向很大程度上偏离最优方向。
  • 可能陷入局部最优解。每一批数据都是随机进行分批次训练,因此在可能存在在某一个批次下其方向与最优方向相背,去了另一个较低点,如下图红线部分所示:
    在这里插入图片描述
    为了解决这个问题,我们就要用到另一个优化方法:SGD + Momentum
2. SGD + Momentum

v t = η ⋅ v t − 1 + α ⋅ g ( w t ) v_t = \eta ·v_{t-1}+\alpha ·g(w_t) vt=ηvt1+αg(wt) w t + 1 = w t − v t w_{t+1} = w_t - v_t wt+1=wtvt其中 α \alpha α为学习率, g ( w t ) g(w_t) g(wt)为时刻t对参数 w t w_t wt的损失梯度, η ( 0.9 ) \eta(0.9) η(0.9)为动量系数。
这么做的意义:
在这里插入图片描述
这个方法可以有效抑制样本噪声的干扰。

3. Adagrad

计算公式:
s t = s t − 1 + g ( w t ) ⋅ g ( w t ) s_t = s_{t-1} + g(w_t)·g(w_t) st=st1+g(wt)g(wt) w t + 1 = w t − α s t + ε ⋅ g ( w t ) w_{t+1} = w_t - \frac{\alpha}{\sqrt{s_t+\varepsilon}}·g(w_t) wt+1=wtst+ε αg(wt)其中 α \alpha α为学习率, g ( w t ) 为 t g(w_t)为t g(wt)t时刻对参数 w t w_t wt的损失梯度, ε ( 1 0 − 7 ) \varepsilon(10^{-7}) ε(107)为防止分母为0的小数。

从公式我们可以看出 s t s_{t} st实际上是对前面的梯度求和,这就会使得 s t s_{t} st的值不断增大,在第二个式子中 α s t + ε \frac{\alpha}{\sqrt{s_t+\varepsilon}} st+ε α的值会不断减小,就会达到一种学习率自己调节的效果。
但是这样也会出现另一个缺点:刚开始的时候学习率下降的太快,可能还没有收敛就停止了训练。
为了解决这个问题我们可以使用RMSProp优化器(自适应学习率)。

4. RMSProp优化器(自适应学习率)

其实这个优化器就是在Adagrad第一个式子的基础上添加了两个控制因子。
s t = η ⋅ s t − 1 + ( 1 − η ) ⋅ g ( w t ) ⋅ g ( w t ) s_t = \eta·s_{t-1} + (1-\eta)·g(w_t)·g(w_t) st=ηst1+(1η)g(wt)g(wt) w t + 1 = w t − α s t + ε ⋅ g ( w t ) w_{t+1} = w_t - \frac{\alpha}{\sqrt{s_t+\varepsilon}}·g(w_t) wt+1=wtst+ε αg(wt)其中 α \alpha α为学习率, g ( w t ) 为 t g(w_t)为t g(wt)t时刻对参数 w t w_t wt的损失梯度, ε ( 1 0 − 7 ) \varepsilon(10^{-7}) ε(107)为防止分母为0的小数, η ( 0.9 ) \eta(0.9) η(0.9)控制衰减速度。

5.Adam优化器(自适应学习率)

计算公式:
m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g ( w t )               一 阶 动 量 m_t = \beta_1·m_{t-1} + (1-\beta_1)·g(w_t) \space\space\space\space\space\space\space\space\space\space\space\space\space 一阶动量 mt=β1mt1+(1β1)g(wt)              v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g ( w t ) ⋅ g ( w t )               二 阶 动 量 v_t = \beta_2·v_{t-1} + (1-\beta_2)·g(w_t)·g(w_t) \space\space\space\space\space\space\space\space\space\space\space\space\space 二阶动量 vt=β2vt1+(1β2)g(wt)g(wt)              m t ^ = m t 1 − β 1 t \hat{m_t} = \frac{m_t}{1-\beta_1^t} mt^=1β1tmt v t ^ = v t 1 − β 2 t \hat{v_t} = \frac{v_t}{1-\beta_2^t} vt^=1β2tvt w t + 1 = w t − α v t ^ + ε m t ^ w_{t+1} = w_t - \frac{\alpha}{\hat{v_t}+\varepsilon}\hat{m_t} wt+1=wtvt^+εαmt^其中 α \alpha α为学习率, g ( w t ) 为 t g(w_t)为t g(wt)t时刻对参数 w t w_t wt的损失梯度, ε ( 1 0 − 7 ) \varepsilon(10^{-7}) ε(107)为防止分母为0的小数, β 1 ( 0.9 ) , β 2 ( 0.999 ) \beta_1(0.9),\beta_2(0.999) β1(0.9)β2(0.999)控制衰减速度。

在实际应用中一般会选择SGD、SGD+Momentum、Adam这几个优化器。
最后附上几个优化器的优化效果。:
在这里插入图片描述
我们可以看出这几个优化器的优化路径和速度,大家可以比较一下。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值