2.1 Mini-batch梯度下降法
机器学习的应用是高度依赖经验的过程,伴随着大量的迭代过程,需要训练大量的模型才能找到最合适那个。Mini-batch梯度下降法是一种有效的能够提升计算效率的优化算法。
假如你的模型有5,000,000个样本,如果直接对整个样本集(batch)进行训练的话,过程将会非常缓慢。因此,可以将大样本划分为许多小样本,分别对每个小样本进行训练。例如可以划分出5000个小样本,一个小样本中有1000个样本数据,每个小样本就叫做mini-batch。对这5000个小样本进行完成一次向前和向后传播,称为一个epoch,也就是一次历遍了训练集。
2.2 理解mini-batch梯度下降法
在整个训练集进行上进行训练时,绘制的代价函数随迭代次数的变化曲线是连续下降的。而用mini-batch进行训练时,代价函数随迭代次数的变化曲线虽然也是整体下降,但是会伴随着上下的微小波动,如图1所示。
图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的梯度下降法时效果如下图所示。
图2 不同大小的mini-batch梯度下降法
蓝色折线为batch梯度下降法,下降幅度较大,相对噪声较低,但是一次训练样本太多,单次迭代耗时太长。
紫色折线为随机梯度下降法,大部分情况下每步的优化方向是指向代价函数最小值的方向,但是有时候会偏离最小化的方向,随机梯度下降永远不会到达代价函数最小值,只会在最小值附近徘徊。随机梯度下降法不能利用向量化带来的加速计算的效果,效率低下。
绿色折线是正常size的mini-batch梯度下降法。这种方法能够充分利用向量化的优点,不需要完整的训练集结束就可以开展后续的改进过程。
在选取mini-batch的size时的选取原则是:如果训练样本较小(如小于2000时),则直接使用batch梯度下降法。如果训练样本较大时,可以选择size为64,128,256,512等,可以尝试几次来确定最合适的size大小。
2.3 指数加权平均
在后面几节中将会讲到一些优化算法,这些算法需要用到指数加权平均,统计学中叫做指数加权移动平均。
图3 伦敦天气随时间的变化规律
图3为伦敦天气随时间的变化规律,移动平均值的计算如下:
其中为第天的加权平均值,为第天的温度。用一个公式表示的话:
直观理解的话,大约等于天温度的平均值。如果的话,就是前10天的平均值,窗口宽度为10,如果的话,就是前50天的平均值,窗口宽度为50,增加了更多的权重,曲线也更为平稳。如图4所示,红色曲线为的平均值,绿色曲线为的平均值。
图4 和的平均值
一种极端的情况是时,平均值只考虑到两天的权重,曲线波折很明显,有很多的噪声。如图5中的黄色曲线所示。
图5 时的平均值
2.4 理解指数平均
,取,计算100天的平均值,有:
这样就构建了一个指数衰减函数与每日的温度相乘,得到了第100天的平均温度。上式中的系数加起来接近于1。
2.5 指数加权平均的偏差修正
实际上,按照上节讲到的方法计算指数加权平均值时,绘出的曲线是图6中的紫色曲线,在起始阶段的平均值要低得多。
图6 指数加权平均的修正
原因如下:
可以看出,平均值明显过小。可以进行修正,用代替,修正以后紫色曲线就变为了绿色曲线。
2.6 动量梯度下降法
动量(momentum)梯度下降法是一种比标准梯度下降法效率更好的优化算法,其基本思路是计算梯度的指数加权平均数,并用梯度来更新权重。
图7 不同的梯度下降法示意图
图7中蓝色折线是采用batch或mini-batch梯度下降法进行的优化过程,经过多次波折后到达最小值,这种上下波动减慢了梯度下降法的速度,限制了学习率的选取,如果选取了较大的学习率,则下降过程会很容易偏离最优方向,如图中紫色折线所示。为了获得最快的下降速率,我们希望下降曲线在是水平方向较快,而垂直方向则缓慢,如图中红色曲线所示,可以用momentum梯度下降法来实现,具体步骤如下:
在第次迭代过程中,首先计算和,然后计算和。
然后更新和:
这样就可以减小在垂直方向的摆动幅度,图7中的蓝色折线在垂直方向上下摆动,正负抵消,平均值为0,通过指数加权平均,可以使得在垂直方向的梯度更新值很小。在水平方向上,由于所有的方向都指向最低值,则指数加权平均以后的值依然很大,能够实现快速的下降。
在上面的式子中和类似于物理中的加速度,而是一个小于1的值,类似于摩擦力。标准梯度下降法中,每步的更新都是独立的,不依赖于前面的步骤。而momentum梯度下降法则于前面步骤的更新值有关,获得类似动量的特性。
2.7 RMSprop
RMSprop(root mean square prop)是另外一种优化算法,
图8 RMSprop梯度下降法
在第次迭代过程中,首先计算和,然后计算和。
然后更新和:
图8中梯度较小,而梯度较大,这样的更新速度会较大,而的更新速度会较小。的作用是防止分母为0,可以取一个很小的值,如。
RMSprop和Momentum类似的地方时,它们都可以防止下降过程中的剧烈摆动,以及可以选用较大的学习率。
2.8 Adam优化算法
Adam(adaptive moment estimation)算法是将RMSprop和Momentum结合起来的优化算法,可以应用于各种不同的神经网络结构中。具体实现方法如下:
令
在第次迭代过程中:
然后更新和:
在Adam算法中,有几个关键的超参数:。
其中学习率需要不断调试,可以设置为0.9,可以设置为0.99,可以设置为
2.9 学习率衰减
一个有效的提高学习速率的方法是随着之间的增加,慢慢减小学习率,实现方法有以下几种:
2.10 局部最优的问题
在机器学习的早期阶段,人们在进行模型优化的时候,总是担心当代价函数梯度为零的时候模型会困在局部最优点(图9中蓝色点所示的位置),而不是全局最优点。
图9 神经网络优化问题
但是上述理解存在问题,因为图9画出了2维输入变量与代价函数的关系图。
实际上代价函数梯度为零的点大多数情况下都是鞍点(saddle point),如图10所示,而不是局部最优点。
图10 鞍点
这是由于在高维输入的模型中,当梯度为零时,不同纬度的函数既可能是凸函数也可能是凹函数,例如,在2000维输入的模型中,所有这2000个函数的都为凸函数的概率极小,更可能遇到的是图10所示的有凸有凹的鞍点的情况。
像Momentum,RMSprop和Adam这样的优化算法能够快速脱离鞍点达到最优值。