改善深层神经网络:超参数调试、正则化以及优化 优化算法 第二周

改善深层神经网络:超参数调试、正则化以及优化  优化算法 第二课

1. Mini-batch

Batch vs Mini-batch gradient descent

Batch就是将所有的训练数据都放到网络里面进行训练,计算量大,硬件要求高。一次训练只能得到一个梯度。

Mini-batch是将训练集分为若干小部分,每次训练都将小部分放到网络里面进行训练。速度快,每个Mini-batch都可以得到一个梯度。

上图是Batch和Mini-batch在训练过程中损失函数的变化趋势,由于Batch使用了全部的训练集来训练网络因此每次都可以找到一个全局最优梯度,Mini-batch每次使用了一部分的数据来训练网络,每一部分的分布存在着差距所以他的损失函数会上下波动,但是整体趋势是变小的。

上图就是Mini-batch的大小对网络的影响。当Mini-batch大小为训练集大小之后(相当于Batch)就会出现蓝色线那种情况。当Mini-batch为1的时候就会出现紫色线那种情况,每次训练一个样本所以它的梯度方向变化很大。绿色的是Mini-batch选择适当的时候梯度下降。

2. 指数加权平均

举例子,记录半年内伦敦市的气温变化,并在二维平面上绘制出来,如下图所示。看上去,温度数据似乎有noise,而且抖动较大。如果我们希望看到半年内气温的整体变化趋势,可以通过移动平均(moving average)的方法来对每天气温进行平滑处理。

例如我们可以设V0=0,当成第0天的气温值。

第一天的气温与第0天的气温有关:V1=0.9V0+0.1θ1V1=0.9V0+0.1θ1

第二天的气温与第一天的气温有关:V2=0.9V1+0.1θ2

第三天的气温与第二天的气温有关:V3=0.9V2+0.1θ3

即第t天与第t-1天的气温迭代关系为:Vt=0.9Vt−1+0.1θt 

经过移动平均处理得到的气温如上图红色曲线所示。

这种滑动平均算法称为指数加权平均(exponentially weighted average)。根据之前的推导公式,其一般形式为:

上面的例子中,β=0.9。β值决定了指数加权平均的天数,近似表示为:

例如,当β=0.9,表示将前10天进行指数加权平均。当β=0.98,表示将前50天进行指数加权平均。β值越大,则指数加权平均的天数越多,平均后的趋势线就越平缓,但是同时也会向右平移。下图绿色曲线和黄色曲线分别表示了β=0.98和β=0.5时,指数加权平均的结果。

偏差修正问题:

如上图所示紫色和绿色相比在初始化阶段存在的误差比较大。就是在网络初始化寻来你的时候会出现偏差比较大的问题,随着训练的增加偏差会慢慢的变小。一般的机器学习都不会在意偏差问题。

这是因为开始时我们设置V0=0,所以初始值会相对小一些,直到后面受前面的影响渐渐变小,趋于正常。修正这种问题的方法是进行偏移校正(bias correction),即在每次计算完Vt后,对Vt进行下式处理:

当Vt较小的时候可以将Vt修正的xian相对较大一些。随着Vt的增加1-β越来越趋近于1并不会受到影响。

3.各种优化算法加快梯度下降

3.1动量

上图动量公式使用了指数加权平均的算法。β一般设为0.9,平均计算了前10次迭代的平均值。α表示的是学习率。

3.2 RMSprop

为了方便分析我们将w设为横坐标,b为纵坐标。从图中可以看出,梯度下降(蓝色折线)在垂直方向(b)上振荡较大,在水平方向(W)上振荡较小,表示在b方向上梯度较大,即db较大,而在W方向上梯度较小,即dW较小。因此,上述表达式中Sb较大,而SW较小。也就是说我们要将W变化得多一些,b变化得少一些。即加快了W方向的速度,减小了b方向的速度,减小振荡,实现快速梯度下降算法,其梯度下降过程如绿色折线所示。总得来说,就是如果哪个方向振荡大,就减小该方向的更新速度,从而减小振荡。

3.3 Adam算法

Adam算法结合了动量和RMSprop算法。并计算了他们的修正偏差。增加了网络训练速度,广泛适用于各种网络结构。

4.学习率衰减

Learning rate decay就是随着迭代次数增加,学习因子α逐渐减小。如果学习率不改变,我们的算法就会在最优值来回大幅震荡。但是如果我们的学习率逐渐减小,可以使我们的算法震荡幅度变小,近似得到最优值。

学习率的计算公式主要是:

其中,deacy_rate是参数(可调),epoch是训练完所有样本的次数。随着epoch增加,α会不断变小。

其他的计算公式有:

5.局部最优问题

在使用梯度下降算法不断减小cost function时,可能会得到局部最优解(local optima)而不是全局最优解(global optima)。有可能我们找的局部最优点是鞍点如下图所示。

类似马鞍状的plateaus会降低神经网络学习速度。Plateaus是梯度接近于零的平缓区域,如下图所示。在plateaus上梯度很小,前进缓慢,到达saddle point需要很长时间。到达saddle point后,由于随机扰动,梯度一般能够沿着某一方向离开saddle point,继续前进,只是在plateaus上花费了太多时间。

有两点总结:

  • 只要选择合理的强大的神经网络,一般不太可能陷入local optima

  • Plateaus可能会使梯度下降变慢,降低学习速度

猜你喜欢

转载自blog.csdn.net/donkey_1993/article/details/83342470