吴恩达深度学习笔记——优化算法

第二周:优化算法 (Optimization algorithms)

2.1 Mini-batch 梯度下降(Mini-batch gradient descent)

假设有500万个样本,batch_size=1000,也就是每次训练1000个样本,总共有5000个mini_batch。

5000次迭代遍历一遍数据集中的所有样本,也是一个epoch。

2.2 理解mini-batch梯度下降法(Understanding mini-batch gradient descent)
吴恩达深度学习笔记——优化算法_第1张图片

使用mini-batch梯度下降法,损失函数则并不是每次迭代都是下降的,而是上下波动的。

你需要决定的变量之一是mini-batch的大小,m是训练集的大小,极端情况下,如果mini-batch的大小等于m,其实就是batch梯度下降法。

另一种极端情况,假设mini-batch大小为1,就有了新的算法,叫做随机梯度下降法,每个样本都是独立的mini-batch。

小于2000个样本,这样比较适合使用batch梯度下降法。不然,样本数目较大的话,一般的mini-batch大小为64到512,考虑到电脑内存设置和使用的方式。

2.3 指数加权平均数(Exponentially weighted averages)

一种计算趋势的方法

在统计学中被称为指数加权移动平均值。相当于一定长度的滑窗的加权平均值。

吴恩达深度学习笔记——优化算法_第2张图片

偏差修正

在估计的初期,估计值往往远小于初始值。

吴恩达深度学习笔记——优化算法_第3张图片吴恩达深度学习笔记——优化算法_第4张图片吴恩达深度学习笔记——优化算法_第5张图片

2.6 动量梯度下降法(Gradient descent with Momentum)

动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重。

吴恩达深度学习笔记——优化算法_第6张图片

这种上下波动减慢了梯度下降法的速度,你就无法使用更大的学习率,如果你要用较大的学习率(紫色箭头),结果可能会偏离函数的范围,为了避免摆动过大,你要用一个较小的学习率。

在纵轴上,我们希望学习慢一点,因为我们不想要这些摆动,但是在横轴上,我们希望加快学习,你希望快速从左向右移,移向最小值,移向红点。
吴恩达深度学习笔记——优化算法_第7张图片

同样的, V d b V_{db} Vdb V d w V_{dw} Vdw的初始值为0向量,也可以使用偏差修正。算法中用到了参数 w w w b b b的微分,平滑的是速度。

两个超参数 α \alpha α β \beta β α \alpha α是学习率, β \beta β控制着指数加权平均数, β \beta β最常用的值是0.9,即平均了前十次迭代的梯度。

2.7 RMSprop

全称是root mean square prop算法,它也可以加速梯度下降,我们来看看它是如何运作的。

吴恩达深度学习笔记——优化算法_第8张图片

算法中采用了参数 w w w b b b的导数的平方

可以使用更大的学习率,来保证在纵轴方向偏离较小的同时,横轴方向移动较快。
吴恩达深度学习笔记——优化算法_第9张图片
2.8 Adam 优化算法(Adam optimization algorithm)

Adam代表的是Adaptive Moment Estimation,结合了Momentum和RMSprop
吴恩达深度学习笔记——优化算法_第10张图片
吴恩达深度学习笔记——优化算法_第11张图片
2.9 学习率衰减(Learning rate decay)

加快学习算法的一个办法就是随时间慢慢减少学习率,我们将之称为学习率衰减,我们来看看如何做到,首先通过一个例子看看,为什么要计算学习率衰减。

慢慢减少学习率的本质在于,在学习初期,你能承受较大的步伐,但当开始收敛的时候,小一些的学习率能让你步伐小一些。
吴恩达深度学习笔记——优化算法_第12张图片

指数衰减
吴恩达深度学习笔记——优化算法_第13张图片

2.10 局部最优的问题(The problem of local optima)

在深度学习研究早期,人们总是担心优化算法会困在极差的局部最优,不过随着深度学习理论不断发展,我们对局部最优的理解也发生了改变。我向你展示一下现在我们怎么看待局部最优以及深度学习中的优化问题。

吴恩达深度学习笔记——优化算法_第14张图片

事实上,如果你要创建一个神经网络,通常梯度为零的点并不是这个图中的局部最优点,实际上成本函数的零梯度点,通常是鞍点。而不是局部最优点。

吴恩达深度学习笔记——优化算法_第15张图片
至于为什么会把一个曲面叫做鞍点,你想象一下,就像是放在马背上的马鞍一样,如果这是马,这是马的头,这就是马的眼睛,画得不好请多包涵,然后你就是骑马的人,要坐在马鞍上,因此这里的这个点,导数为0的点,这个点叫做鞍点。我想那确实是你坐在马鞍上的那个点,而这里导数为0。

吴恩达深度学习笔记——优化算法_第16张图片

所以此次视频的要点是,首先,你不太可能困在极差的局部最优中,条件是你在训练较大的神经网络,存在大量参数,并且成本函数J被定义在较高的维度空间。

第二点,平稳段是一个问题,这样使得学习十分缓慢,这也是像Momentum或是RMSprop,Adam这样的算法,能够加速学习算法的地方。在这些情况下,更成熟的优化算法,如Adam算法,能够加快速度,让你尽早往下走出平稳段。

参考:
吴恩达深度学习课程
http://www.ai-start.com/dl2017/

你可能感兴趣的:(深度学习)