深度学习—优化算法学习笔记

一、Mini-batch 梯度下降

如图,当训练集的样本很大时,可以把训练集分割为小一点的子集训练(因为样本很大时训练速度会很慢),这些子集被取名为 mini-batch,假设每一个子集中只有 1000 个样本,那么把其中的𝑥(1)到𝑥(1000)取出来,将其称为第一个子训练集,也叫做 mini-batch,然后你再取出接下来的 1000 个样本,从𝑥(1001)到𝑥(2000) ,然后再取1000 个样本,以此类推。 

符号:把𝑥(1)到𝑥(1000) 称为𝑋{1} ,𝑥(1001) 到𝑥(2000) 称为𝑋{2}。同理,Y类似。

操作步骤:

 

这是使用 mini-batch 梯度下降法训练样本的一步,意味着只是一次遍历了训练集。

 直观理解:

左图为batch 梯度下降法,每次迭代都需要历遍整个训练集, 预期是每次迭代成本都会下降,弊端就是每次迭代耗时很长。

右图为mini-batch 梯度下降法,由于𝐽{𝑡}只和𝑋{𝑡},𝑌{𝑡}有关,也就是每次迭代下你都在训练不同的样本集或者说训练不同的 mini-batch,如果你要作出成本函数𝐽的图,你很可能会看到这样的结果,走向朝下,但有更多的噪声。mini-batch比较容易计算,因此成本会低一些。

mini-batch 的大小的选择:

1.如果训练集较小,这里的小是说小于 2000 个样本,直接使用 batch 梯度下降法。

2.样本数目较大的话,一般的 mini-batch 大小为 64 到 512。(考虑到电脑内存设置和使用的方式,如果 mini-batch 大小是 2 的𝑛次方,代码会运行地快一些)

二、指数加权平均

作用:指数加权平均数是接下来要学的几个优化算法中的关键。

举例解释原理:

如图,要计算温度的局部平均值,或者说移动平均值,你要做的是,首先使𝑣0 = 0,每天,需要使用 0.9 乘前一天的温度加上当日温度的 0.1 倍,即𝑣1 = 0.9𝑣0 + 0.1𝜃1,所以这里是第一天的温度值。如此计算,然后用红线作图的话,便得到这样的结果。

把 0.9 这个常数变成𝛽,将之前的 0.1 变成(1 − 𝛽),即𝑣𝑡 = 𝛽𝑣𝑡−1 + (1 − 𝛽)𝜃𝑡(指数加权平均公式),𝑣𝑡大概是 前1/(1−𝛽)的每日温度的平均值,这里就是前十天的平均温度。

理解指数加权平均:

使𝛽=0.9,则

将𝑣99代入𝑣100中,𝑣100 = 0.1𝜃100 + 0.9(0.1𝜃99 + 0.9𝑣98)   ...... 

𝑣100 = 0.1𝜃100 + 0.1 × 0.9𝜃99 + 0.1 × (0.9)2𝜃98 + 0.1 × (0.9)3𝜃97 + 0.1 × (0.9)4𝜃96 + ⋯

((0.9)2是指0.9的平方)

所以这是一个指数加和并平均。

偏差修正:

由于初始化𝑣0 = 0,会使𝑣1,𝑣2等前几项的值偏差比较大,所以用 𝑣𝑡/1−𝛽𝑡(𝛽的t次方)来修正,让估测变得更好,更准确。

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

作用:加快梯度下降 。

如图,红点代表最小值的位置,假设你从这里(蓝色点)开始梯度下降法, 慢慢摆动到最小值,这种上下波动减慢了梯度下降法的速度。如果你要用较大的学习率(紫色箭头),结果可能会偏离函数的范围,为了避免摆动过大,你要用一个较小的学习率。

实际上,在纵轴上,你希望学习慢一点,因为你不想要这些摆动,但是在横轴上,你希望加快学习,你希望快速从左向右移,移向最小值,移向红点。要满足这一需求,可以使用动量梯度法。

如图,对𝑑𝑊,𝑑𝑏进行指数加权平均,在纵轴方向,平均过程中,正负数相互抵消,所以平均值接近于零。但在横轴方向,所有的微分都指向横轴方向,因此横轴方向的平均值仍然较大 。动量梯度下降法,最终使纵轴方向的摆动变小了,横轴方向运动更快,从而加快了训练。

上图中,有两个超参数,学习率𝑎以及参数𝛽,𝛽控制着指数加权平均数,𝛽最常用的值是0.9 。

四、RMSprop 

作用:加快梯度下降。

操作步骤如图中所示,下面解释一下原理:假设纵轴代表参数𝑏,横轴代表参数𝑊 ,如图垂直方向的微分要比水平方向的大得多,所以𝑑𝑏的平方较大,所以𝑆𝑑𝑏也会较大,而相比之下,𝑑𝑊会小一些,亦或𝑑𝑊平方会小一些,因此𝑆𝑑𝑊会小一些,结果就是纵轴上的更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。

还有个影响就是,你可以用一个更大学习率𝑎,然后加快学习,而无须在纵轴上垂直方向偏离。

注意:要确保你的算法不会除以 0,为防止𝑆𝑑𝑊的平方根趋近于 0而得到非常大的答案, 在实际操练的时候,你要在分母上加上一个很小很小的𝜀,𝜀是多少没关系。

五、Adam 优化算法

本质:将 Momentum 和 RMSprop 结合在一起。

所以 Adam 算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的
学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。

𝛽1常用的缺省值为 0.9,至于超参数𝛽2,推荐使用 0.999 ;超参数学习率𝑎很重要,经常需要调试出合适的结果。

六、学习率衰减(Learning rate decay)

作用:加快学习算法。

慢慢减小学习率,能使曲线在开始时学习较快,在接近最小值时小步伐移动(如上图绿线),使算法最后能更好地收敛于最小值。

几个衰减公式

1.

decay-rate 称为衰减率,
epoch-num 为代数,𝛼0为初始学习率),注意这个衰减率是另一个你需要调整的超参数。

 2.

.

这个是指数衰减。

3.

4.手动调整 

 七、局部最优的问题

这是曾经人们在想到局部最优时脑海里会出现的图,而这些低维的图曾经影响了我们的理解,但是这些理解并不正确。事实上,如果你要创建一个神经网络,通常梯度为零的点并不是这个图中的局部最优点,实际上成本函数的零梯度点,通常是鞍点 。

一个具有高维度空间的函数,如果梯度为 0,那么在每个方向,它可能是凸函数,也可能是凹函数。如果你在 2 万维空间中,那么想要得到局部最优,所有的 2 万个方向都需要是这样,但发生的机率也许很小,也许是2**−20000,你更有可能遇到有些方向的曲线会这样向上弯曲,另一些方向曲线向下弯,而不是所有的都向上弯曲,因此在高维度空间,你更可能碰到鞍点。

因此在训练较大的神经网络时,你不太可能困在极差的局部最优解中。

八、总结 

本周主要学习了优化算法,这能让神经网络运行得更快。加油哦,(ง •_•)ง,自己去动手体验一下这些优化算法的效果吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值