深度学习之优化算法

前言

          以下内容是个人学习之后的感悟,转载请注明出处~

Mini-batch梯度下降法

  见另一篇文章:梯度下降法

指数加权平均

  其原理如下图所示,以每天的温度为例,每天的温度加权平均值等于β乘以前一天的温度加权平均值,再加上(1-β)乘以

当天温度的和。β值得选取对温度加权平均值的影响非常明显,图中的红黄绿三条曲线即β取不同值时的曲线。

             

  不过此方法有个弊端,就是前期v0为0,导致初期阶段的值很小,并不准确。对此,我们可以对它进行偏差修正,

vt  := v/ ( 1-β t ) 。但是大部人都不太喜欢用偏差修正,宁愿忍受初期阶段。

动量(momentum)梯度下降法

  有时候遇到下图中的情况,我们用传统的梯度下降法,需要花费很长的时间这并不是我们想要的效果。

                 

  想要解决这种问题,我们能够快速想到的便是增大横向的跨度,减小纵向的跨度,那么具体该怎么实施呢?

  这就需要用到动量梯度下降法了,其具体实现如下图所示,其中β一般取0.9 。

                                 

  总之,该方法可以加快梯度下降。

RMSprop

  除了上述的方法外,RMSprop也可以加快梯度下降,解决动量梯度下降法提到的问题。其具体实现如下图所示,其中写成β2

为了和上面的β区分开来,取值一般取0.999,至于ε是为了防止分母太接近0,其一般取10-8

                                        

Adam优化算法

  该算法结合了动量(momentum)下降梯度法和RMSprop法,其具体实现见下图:

                              

  其具体参数的取值一般如下图所示:

                                          

学习率衰减

   在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),

但是训练集的损失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之间来回震荡,不能进一步下降。如下图所示:

                                         

  遇到这种情况通常可以通过适当降低学习率(learning rate)来实现。但是,降低学习率又会延长训练所需的时间。

  学习率衰减(learning rate decay)就是一种可以平衡这两者之间矛盾的解决方案。学习率衰减的基本思想是:学习率随着训练的

进行逐渐衰减。

  学习率衰减基本有两种实现方法:

  1. 线性衰减。例如:每过5个epochs学习率减半
  2. 指数衰减。例如:每过5个epochs将学习率乘以0.1

注:不同的优化算法适用于不同的深度结构。

以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~

原文地址:https://www.cnblogs.com/steed/p/7522975.html