2.1 Mini-batch梯度下降法
机器学习的应用是高度依赖经验的过程,伴随着大量的迭代过程,需要训练大量的模型才能找到最合适那个。Mini-batch梯度下降法是一种有效的能够提升计算效率的优化算法。
假如你的模型有5,000,000个样本,如果直接对整个样本集(batch)进行训练的话,过程将会非常缓慢。因此,可以将大样本划分为许多小样本,分别对每个小样本进行训练。例如可以划分出5000个小样本,一个小样本中有1000个样本数据,每个小样本就叫做mini-batch。对这5000个小样本进行完成一次向前和向后传播,称为一个epoch,也就是一次历遍了训练集。

2.2 理解mini-batch梯度下降法
在整个训练集进行上进行训练时,绘制的代价函数随迭代次数的变化曲线是连续下降的。而用mini-batch进行训练时,代价函数随迭代次数的变化曲线虽然也是整体下降,但是会伴随着上下的微小波动,如图1所示。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图1 batch和mini-batch梯度下降法代价函数的不同

这是由于每次梯度下降使用的是不同的mini-batch数据,有些mini-batch数据容易进行梯度下降,有些则较为困难。

在选择mini-batch中样本的大小size时,如果size=m,则变为batch梯度下降法。
如果size=1,则这种算法称为随机梯度下降法(Stochastic Gradient Descent),这时每个样本都是独立的mini-batch。以上两种情况是极端的情况,一般常见的做法是size取1~m的中间值。
实施不同size的梯度下降法时效果如下图所示。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图2 不同大小的mini-batch梯度下降法

蓝色折线为batch梯度下降法,下降幅度较大,相对噪声较低,但是一次训练样本太多,单次迭代耗时太长。
紫色折线为随机梯度下降法,大部分情况下每步的优化方向是指向代价函数最小值的方向,但是有时候会偏离最小化的方向,随机梯度下降永远不会到达代价函数最小值,只会在最小值附近徘徊。随机梯度下降法不能利用向量化带来的加速计算的效果,效率低下。
绿色折线是正常size的mini-batch梯度下降法。这种方法能够充分利用向量化的优点,不需要完整的训练集结束就可以开展后续的改进过程。
在选取mini-batch的size时的选取原则是:如果训练样本较小(如小于2000时),则直接使用batch梯度下降法。如果训练样本较大时,可以选择size为64,128,256,512等,可以尝试几次来确定最合适的size大小。

2.3 指数加权平均
在后面几节中将会讲到一些优化算法,这些算法需要用到指数加权平均,统计学中叫做指数加权移动平均。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图3 伦敦天气随时间的变化规律

图3为伦敦天气随时间的变化规律,移动平均值的计算如下:
v0=0
v1=0.9v0+0.1θ1
v2=0.9v1+0.1θ2
...
vt=0.9vt1+0.1θt
其中vt为第t天的加权平均值,θt为第t天的温度。用一个公式表示的话:
vt=βvt1+(1β)θt
直观理解的话,vt大约等于11β天温度的平均值。如果β=0.9的话,vt就是前10天的平均值,窗口宽度为10,如果β=0.98的话,vt就是前50天的平均值,窗口宽度为50,增加了更多的权重,曲线也更为平稳。如图4所示,红色曲线为β=0.9的平均值,绿色曲线为β=0.98的平均值。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图4 β=0.9β=0.98的平均值

一种极端的情况是β=0.5时,平均值只考虑到两天的权重,曲线波折很明显,有很多的噪声。如图5中的黄色曲线所示。
吴恩达《深度学习工程师》Part2.Week2 优化算法
图5 β=0.5时的平均值

2.4 理解指数平均
vt=βvt1+(1β)θt,取β=0.9,计算100天的平均值,有:
v100=0.9θ100+0.1×0.9θ99+0.1×0.92θ98+...
这样就构建了一个指数衰减函数与每日的温度相乘,得到了第100天的平均温度。上式中的系数加起来接近于1。

2.5 指数加权平均的偏差修正
实际上,按照上节讲到的方法计算指数加权平均值时,绘出的曲线是图6中的紫色曲线,在起始阶段的平均值要低得多。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图6 指数加权平均的修正

原因如下:
v0=0
v1=0.98v0+0.02θ1=0.02θ1
v2=0.98v1+0.1θ2=0.0196θ1+0.02θ2
可以看出,平均值v2明显过小。可以进行修正,用vt1βt代替vt,修正以后紫色曲线就变为了绿色曲线。

2.6 动量梯度下降法
动量(momentum)梯度下降法是一种比标准梯度下降法效率更好的优化算法,其基本思路是计算梯度的指数加权平均数,并用梯度来更新权重。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图7 不同的梯度下降法示意图

图7中蓝色折线是采用batch或mini-batch梯度下降法进行的优化过程,经过多次波折后到达最小值,这种上下波动减慢了梯度下降法的速度,限制了学习率的选取,如果选取了较大的学习率,则下降过程会很容易偏离最优方向,如图中紫色折线所示。为了获得最快的下降速率,我们希望下降曲线在是水平方向较快,而垂直方向则缓慢,如图中红色曲线所示,可以用momentum梯度下降法来实现,具体步骤如下:

在第t次迭代过程中,首先计算dwdb,然后计算VdwVdb
Vdw=βVdw+(1β)dw
Vdb=βVdb+(1β)db
然后更新Wb
w=wαVdw
b=bαVdb
这样就可以减小在垂直方向的摆动幅度,图7中的蓝色折线在垂直方向上下摆动,正负抵消,平均值为0,通过指数加权平均,可以使得在垂直方向的梯度更新值很小。在水平方向上,由于所有的方向都指向最低值,则指数加权平均以后的值依然很大,能够实现快速的下降。

在上面的式子中dwdw类似于物理中的加速度,而β是一个小于1的值,类似于摩擦力。标准梯度下降法中,每步的更新都是独立的,不依赖于前面的步骤。而momentum梯度下降法则于前面步骤的更新值有关,获得类似动量的特性。

2.7 RMSprop
RMSprop(root mean square prop)是另外一种优化算法,

吴恩达《深度学习工程师》Part2.Week2 优化算法
图8 RMSprop梯度下降法

在第t次迭代过程中,首先计算dwdb,然后计算SdwSdb
Sdw=βSdw+(1β)dw2
Sdb=βSdb+(1β)db2
然后更新Wb
w=wαdwSdw+ϵ
b=bαdbSdb+ϵ
图8中w梯度较小,而b梯度较大,这样w的更新速度会较大,而b的更新速度会较小。ϵ的作用是防止分母为0,可以取一个很小的值,如108
RMSprop和Momentum类似的地方时,它们都可以防止下降过程中的剧烈摆动,以及可以选用较大的学习率。

2.8 Adam优化算法
Adam(adaptive moment estimation)算法是将RMSprop和Momentum结合起来的优化算法,可以应用于各种不同的神经网络结构中。具体实现方法如下:
Vdw=0,Vdb=0,Sdw=0,Sdb=0
在第t次迭代过程中:
Vdw=β1Vdw+(1β1)dw
Vdb=β1Vdb+(1β1)db
Sdw=β2Sdw+(1β2)dw2
Sdb=β2Sdb+(1β2)db2

Vdwcorrected=Vdw1β1t
Vdbcorrected=Vdb1β1t
Sdwcorrected=Sdw1β2t
Sdbcorrected=Sdb1β2t
w=wαdwSdw+ϵ
b=bαdbSdb+ϵ

然后更新Wb
w=wαVdwcorrectedSdw+ϵ
b=bαVdwcorrectedSdb+ϵ

在Adam算法中,有几个关键的超参数:α,β1,β2,ϵ
其中学习率α需要不断调试,β1可以设置为0.9,β2可以设置为0.99,ϵ可以设置为108

2.9 学习率衰减
一个有效的提高学习速率的方法是随着之间的增加,慢慢减小学习率,实现方法有以下几种:
α=11+decayRateepochNumberα0
α=0.95epochNumberα0
α=kepochNumberα0
α=ktα0

2.10 局部最优的问题
在机器学习的早期阶段,人们在进行模型优化的时候,总是担心当代价函数梯度为零的时候模型会困在局部最优点(图9中蓝色点所示的位置),而不是全局最优点。

吴恩达《深度学习工程师》Part2.Week2 优化算法
图9 神经网络优化问题

但是上述理解存在问题,因为图9画出了2维输入变量与代价函数的关系图。
实际上代价函数梯度为零的点大多数情况下都是鞍点(saddle point),如图10所示,而不是局部最优点。
吴恩达《深度学习工程师》Part2.Week2 优化算法
图10 鞍点

这是由于在高维输入的模型中,当梯度为零时,不同纬度的函数既可能是凸函数也可能是凹函数,例如,在2000维输入的模型中,所有这2000个wJ函数的都为凸函数的概率极小,更可能遇到的是图10所示的有凸有凹的鞍点的情况。
像Momentum,RMSprop和Adam这样的优化算法能够快速脱离鞍点达到最优值。

相关文章:

  • 2021-05-06
  • 2021-04-14
  • 2021-10-30
  • 2021-05-16
  • 2021-12-08
  • 2021-12-03
  • 2021-04-13
  • 2021-12-11
猜你喜欢
  • 2021-08-14
  • 2021-09-28
  • 2021-08-26
  • 2021-10-15
  • 2021-10-24
  • 2021-08-19
  • 2021-06-22
相关资源
相似解决方案