学习笔记—Optimization algorithms

这是这门课程第二周的内容。
当深度学习遇到大数据(样本量在十万级以上)时,我们之前的常规操作在这时可能会变得很笨重。

1. Mini-batch gradient descent

之前在模型训练过程时,每一轮迭代都需要遍历整个训练集样本,当样本集非常大时,这样的每一轮都将经历漫长的时间。为了应对这一难题,有人提出了Mini-batch gradient descent,与之对应的是batch gradient descent。
batch gradient descent即我们之前常用到的梯度下降算法,它在每一轮计算梯度时考虑所有的训练样本集;
mini-batch gradient descent的特殊之处在于,每一轮计算梯度时,只考虑一部分(m)训练样本集;一种极端情况,每轮只考虑一个训练样本,这样的优化算法又称之为Stochastic Gradient Descent。

如:将整个训练集划分为64个样本为单个mini_batch。
这里写图片描述

由于mini-batch每次更新梯度时只考虑一部分训练样本,因此更新所得参数并不能保证使训练集总体的损失函数值一直处于下降的趋势,所得到的结果一般是训练集的损失函数值在震荡中逐渐降低。
这里写图片描述
mini-batch的优点是训练速度快,对资源的要求低;缺点是往往很难收敛。
这里写图片描述
常用的mini-batch大小:64(2^6), 128(2^7),256(2^8), 1024(2^10)

2. Gradient descent with momentum

上一节提到,mini-batch gradient descent每次更新参数并不能保证训练集的损失值一直变小,表现出来的结果会比较震荡。可以这样理解:mini-batch在一些我们比较不关心的方向上过度学习,并且拖缓了我们希望它前进的方法的速度。
为了应对这一挑战,我们采用 exponentially weighted average的思路来计算梯度。即我们希望新的梯度由当前batch样本计算的梯度和以往的梯度组合而成,组合方式就是上面提到的指数权重平均法。
下图可以帮我们很好地理解exponentially weighted average。
这里写图片描述
其中 vt 为本轮的梯度, vt1 为上一轮的梯度, θt 为本轮样本计算的梯度。从图上可以发现,当将公式分解后,第 t 轮的梯度 vt 由从第一轮开始到当前轮所有的梯度分别乘以不同的权重组合而成。

这里写图片描述

Exponentially weighted average

指数权重平均法可以有效地降低数据的波动性,并且代码实现简单,运行时不需要缓存过多数据,在深度学习算法中很受欢迎。
下图为采用指数权重平均法描述一年当中温度的变化情况,其中红线 β=0.9 ,绿线 β=0.98
这里写图片描述

Momentum

使用指数权重平均法更新梯度的梯度下降算法便可称之为 Gradient descent with momentum,那么它的梯度更新公式如下:

{vdW[l]=βvdW[l]+(1β)dW[l]W[l]=W[l]αvdW[l]

{vdb[l]=βvdb[l]+(1β)db[l]b[l]=b[l]αvdb[l]

如下:Momentum的梯度用红色箭头表示,蓝线代表当前batch计算的梯度,它只是影响红色箭头的走向,红色箭头并不完全按它的方向前进。
这里写图片描述

β 的值一般取0.9,当然也可以选择其它的值; β 值越大梯度的更新越平滑,因为它要考虑更多的过去的梯度值。

Momentum在更新梯度时考虑了以前的梯度值,这样它的梯度更新变得更平滑,Momentum可以应用在batch gradient descent, mini-batch gradient descent 或 stochastic gradient descent。

3. Gradient descent with RMSprop

RMSprop是另一种可以加速梯度下降的方法。可以认为RMSprop和Momentum两种方法的目的都是一样的——加速梯度下降,只是具体实现策略不同。
这里写图片描述

4. Adam

Adam是用于训练神经网络的最有效方法之一,它结合了Momentum和RMSprop两者的思想。我们来看一下Adam在更新梯度时的策略:
这里写图片描述

Adam是怎样工作的?在每一轮进行梯度更新时:
首先它会计算出前面梯度值的指数权重平均值,并保存为变量 v vcorrect ;(Momentum)
然后它会计算出前面梯度值的指数权重平均值的平方值,并保存为变量 s scorrect ;(RMSprop)
最后基于前两步的结果更新梯度。(Combination)

其中更新 W 的公式如下:

vdW[l]=β1vdW[l]+(1β1)JW[l]vcorrecteddW[l]=vdW[l]1(β1)tsdW[l]=β2sdW[l]+(1β2)(JW[l])2scorrecteddW[l]=sdW[l]1(β1)tW[l]=W[l]αvcorrecteddW[l]scorrecteddW[l]+ε

更新参数 b 的公式与上同理。

Adam的优点:
- 相对较小的内存需求(当然比gradient descent和gradient descent with momentum还是要高一些);
- 收敛非常迅速。

5. Learning-rate-decay

有时候我们在训练模型时会遇到模型无法在全局最优点收敛的问题。如下蓝线所示:
这里写图片描述
然而如果设置 α 的值随着每次迭代变小就能极大改善上述现象,如上图绿线所示。
通常用于缩小 α 的方法如下:
这里写图片描述

注:如无特殊说明,以上所有图片均截选自吴恩达在Coursera开设的神经网络系列课程的讲义。

猜你喜欢

转载自blog.csdn.net/maryyu8873/article/details/78555878