吴恩达DL lesson2 week2

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

把训练集分割为小一点的子集训练,这些子集被取名为mini-batch
如下图
在这里插入图片描述
假设我们有5000个各有1000个样本的组,我们要用向量化去几乎同时处理1000个样本。
在这里插入图片描述
使用batch梯度下降法,一次遍历训练集只能让你做一个梯度下降,使用mini-batch梯度下降法,一次遍历训练集,能让你做5000个梯度下降。当然正常来说你想要多次遍历训练集,还需要为另一个while循环设置另一个for循环。所以你可以一直处理遍历训练集,直到最后你能收敛到一个合适的精度。

如果你有一个丢失的训练集,mini-batch梯度下降法比batch梯度下降法运行地更快,所以几乎每个研习深度学习的人在训练巨大的数据集时都会用到,下面,我们将进一步深度讨论mini-batch梯度下降法,你也会因此更好地理解它的作用和原理。

https://blog.csdn.net/cs24k1993/article/details/79120579
三种梯度下降 介绍和优缺点

(批梯度下降法(Batch Gradient Descent ),
小批梯度下降 (Mini-Batch GD),
随机梯度下降 (Stochastic GD)

2.2 理解mini-batch梯度下降法(Understanding mini-batch gradient descent)

使用batch梯度下降法时,每次迭代你都需要历遍整个训练集,如果成本函数J是迭代次数的一个函数,它应该会随着每次迭代而减少
在这里插入图片描述
使用mini-batch梯度下降法,如果你作出成本函数在整个过程中的图,则并不是每次迭代都是下降的,也就是每次迭代下你都在训练不同的样本集或者说训练不同的mini-batch,如果你要作出成本函数的图,你很可能会看到这样的结果,走向朝下,但有更多的噪声,所以如果你作出J的图,因为在训练mini-batch梯度下降法时,会经过多代,你可能会看到这样的曲线。在这里插入图片描述
在这里插入图片描述
batch梯度下降单词迭代慢,而随机梯度会失去向量化的加速,而mini-batch大小在二者之间。
如果训练集较小,直接使用batch梯度下降法,样本集较小就没必要使用mini-batch梯度下降法。
如果mini-batch大小是2的n次方,代码会运行地快一些,64就是2的6次方,以此类推,128是2的7次方,256是2的8次方,512是2的9次方。所以我经常把mini-batch大小设成2的次方。

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

举个例子
在这里插入图片描述

2.4 理解指数加权平均数(Understanding exponentially weighted averages)

在这里插入图片描述

2.5 指数加权平均的偏差修正(Bias correction in exponentially weighted averages)

在这里插入图片描述

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

本质就是减缓梯度下降的幅度

如果你要优化成本函数,进行梯度下降法的一次迭代,无论是batch或mini-batch下降法,结果或许如此,然后再计算一步,再一步,计算下去,你会发现梯度下降法要很多计算步骤.(蓝色线)
如果你要用较大的学习率(紫色箭头),结果可能会偏离函数的范围,为了避免摆动过大,你要用一个较小的学习率。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.7 RMSprop

深度学习优化算法解析(Momentum, RMSProp, Adam)
https://blog.csdn.net/willduan1/article/details/78070086

扫描二维码关注公众号,回复: 6743351 查看本文章

为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重 W 和偏置 b 的梯度使用了微分平方加权平均数。
RMSprop的影响就是你的更新最后会变成这样(绿色线),纵轴方向上摆动较小,而横轴方向继续推进。还有个影响就是,你可以用一个更大学习率α,然后加快学习,而无须在纵轴上垂直方向偏离。
在这里插入图片描述

2.8 Adam 优化算法(Adam optimization algorithm)

Adam优化算法基本上就是将Momentum和RMSprop结合在一起.

算法看链接

2.9 学习率衰减(Learning rate decay)

加快学习算法的一个办法就是随时间慢慢减少学习率,我们将之称为学习率衰减.
蓝色线 在迭代过程中会有噪音,下降朝向这里的最小值,但是不会精确地收敛,所以你的算法最后在附近摆动,并不会真正收敛,因为你用的α是固定值,不同的mini-batch中有噪音。
在这里插入图片描述
慢慢减少学习率α的话,在初期的时候,学习率α还较大,你的学习还是相对较快,但随着α变小,你的步伐也会变慢变小.
绿色线会在最小值附近的一小块区域里摆动,而不是在训练过程中,大幅度在最小值附近摆动。
几种衰减方法https://blog.csdn.net/akadiao/article/details/79560731

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

1.陷入局部最优其实不是神经网络的问题,在一个非常高维的空间中做梯度下降,这时的local minimum是很难形成的,因为局部最小值要求函数在所有维度上都是局部最小的。实际情况是,函数会落在一个saddle-point上。在saddle-point上会有一大片很平坦的平原,让梯度几乎为0,导致无法继续下降。

2.在高维空间中,如2000维,不太可能出现局部最优的情况,因为局部最优要求这20000个维度的梯度都为0,这是很小概率的时间。真正困扰优化问题的并不是局部最优,而是在鞍点附近的停滞区问题。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43513123/article/details/86761801