《深度学习工程师-吴恩达》02改善深层神经网络--优化算法 学习笔记

《深度学习工程师-吴恩达》02改善深层神经网络--优化算法 学习笔记

 

 

1.重点归纳

1)Mini-batch梯度下降法

(1)把训练集划分为多个子集,每个子集为一个mini-batch,使用每个mini-batch的数据进行训练,每次只需要处理一个mini-batch的训练集就能进行一步梯度下降法。

(2)mini-batch梯度下降法比batch梯度下降法运行更快。

(3)在mini-batch梯度下降法中,每次迭代都在不同的训练集上进行,并不是每次迭代中损失函数都会下降,总体方向是向下的,但是会有更多的噪音。

 

(4)mini-batch大小取值[1, m]之间,一般为[64, 512]之间(2的n次方的数值)。

2)指数加权平均法

(1)

  • vt可认为是1/(1-β)的每日的预测数值,较大β值得到的曲线平坦一些,由于多平均了几天的历史数值,缺点是曲线进一步右移,预测值适应会更缓慢一点,出现一些延迟。
  • β=0.9,这是10天的平均值
  • 展开的公式可以知道vt是由vt-1至v0的所有值组成,并且权重随着时间的远离呈指数衰减

(2)修正

  • 修正原因:在计算指数移动平均时,初始值为0,导致开始那几天估测不准(远低于实际值)
  • 修正公式:
  • 随着t的增加,βt将接近0,当t很大时,偏差修正几乎没有作用
  • 偏差修正可以更好预测温度

3)动量梯度下降法(Momentum):把加权指数移动平均法融合到梯度下降法中,可以加速梯度下降

(1)公式

        

(2)公式中梯度(积分项dw/db)相当于加速度,momentum项(Vdw/Vdb)相当于速度,梯度下降过程加速度负责改变梯度下降的方向,原有速度提供了惯性,使得速度比较大的方向的梯度改变慢下来。

(3)β一般取值0.9,平均了前十次的梯度,一般可以取得不错的效果。

4)RMSprop梯度下降法,可以加速梯度下降

(1)公式

        

(2)当导数越大(坡度越陡,如上图的db),权重变化就越小;反之当导数越小时,权重变化越大。可以消除梯度下降中的摆动,因此我们可以使用更大的学习率α,而无须在纵轴上垂直方向偏离。

5)Adam优化算法:将Momentum和RMSprop结合在一起

(1)公式

        

(2)这是一种极其常用的学习算法,被证明适用于不同的神经网络,适用于广泛的结构

6)学习率衰减:加速学习速度的另一个方法就是随时间慢慢减少学习率—学习率衰减,在学习的初期使用较大的步伐,当开始收敛的时候,小一些的学习率能让步伐小一些。

2.Mini-batch梯度下降法

1)对整个数据集执行梯度下降法时,必须处理整个训练集才能进行一步梯度下降法,将会花费大量时间来进行计算。

2)mini-batch梯度下降法

(1)把训练集划分为多个子集,每个子集为一个mini-batch

(2)使用每个mini-batch的数据进行训练,每次只需要处理一个mini-batch的训练集就能进行一步梯度下降法

3)mini-batch梯度下降法比batch梯度下降法运行更快

3.理解Mini-batch梯度下降法

1)迭代训练时损失函数的变化

(1)在batch梯度下降法中,每次迭代都需要遍历整个训练集,预期每次迭代的损失函数都会下降。

(2)在mini-batch梯度下降法中,每次迭代都在不同的训练集上进行,并不是每次迭代中损失函数都会下降,总体方向是向下的,但是会有更多的噪音。

         噪音的原因在于,也许某mini-batch比较容易计算mini-batch,但是某些mini-batch比较难计算,所以才会出现这些摆动。

2)mini-batch大小三种情况

(1)极端情况下,当mini-batch大小等于总训练样本m时,相当于batch梯度下降法

  • 如果样本量很大,缺陷在于每次梯度下降的计算时间很长;
  • 如果样本不是很大,batch梯度下降会运行得很好。

(2)另一种极端情况,当mini-batch等于1时,相当于随机梯度下降法

  • 随机梯度下降法永远不会收敛,而是会一直在最小值附近波动。
  • 需要设置比较小的学习率,噪声会有所减少
  • 不能进行向量化计算带来的加速,一次处理一个样本的效率过于低下

(3)mini-batch大小取值[1, m]之间

  • 实际应用中应该选取不大不小的mini-batch大小,实际上的学习率达到最快
    • 得到了大量向量化
    • 不需要等待太久就可以开始后续的训练

3)mini-batch大小选择

(1)如果训练样本较小,mini-batch大小选择整个训练集大小,直接使用batch梯度下降法

  • 例如说小于2000个样本

(2)如果训练样本较大,mini-batch大小一般为[64, 512]之间

  • 考虑到电脑内存设置和使用方式,一般为2的n次方的数值(64, 128, 256, 512),代码运行快一些。
  • 也有mini-batch大小为1024,不过比较少见
  • mini-batch的特征和类大小要符合CPU/GPU内存,否则算法表现急转直下

4.指数加权平均(指数加权移动平均)

1)局部平均值/移动平均值

(1)

(2)vt可认为是1/(1-β)的每日温度

  • β=0.9,这是10天的平均值,如下图红线
  • β=0.98,这是50天的平均值,如下图绿线
    • 较大β值得到的曲线平坦一些,由于多平均了几天的温度,缺点是曲线进一步右移,温度适应会更缓慢一点,出现一些延迟。
    • 给前一天的值更多的权重,只有0.02的权重给了当日的值
  • β=0.5,这是2天的平均值,如下图黄线
    • 平均的数据更少,所以得到曲线有更多的噪声
    • 更快适应温度变化

5.理解指数加权平均

1)从下面展开的公式可以知道vt是由vt-1至v0的所有值组成,并且权重随着时间的远离呈指数衰减

6.指数加权平均的偏差修正

1)在计算指数移动平均时,初始值为0,导致开始那几天估测不准(远低于实际值)

2)对结果进行修正:

  • 随着t的增加,βt将接近0,当t很大时,偏差修正几乎没有作用
  • 偏差修正可以更好预测温度

3)在计算指数移动平均时,大家不在乎执行偏差修正,因为大部分人宁愿熬过初始时期,拿到有偏差的估测然后继续计算下去。

7.动量梯度下降法(Momentum

1)Momentum几乎总是比标准的梯度下降算法运行速度要快

梯度下降法求解过程不懂摆动,最后才慢慢摆动到最小值,这种上下摆动减慢了梯度下降法的速度,所以无法使用更大的学习率。如果使用更大的学习率,可能会偏离函数的范围。

2)momentum把加权指数移动平均法融合到梯度下降法中

(1)公式

        

(2)权重更新更新过程中上下摆动,平均值接近零。加入了历史的动量参数后,平均过程中正负数相互抵消,所以平均值接近零,所以上下摆动的方向变得很小,但是其它方向依然可以快速梯度下降。

(3)momentum梯度下降法迭代几次后最终摆动变小,横轴方向(假设往横轴方向下降)运动更快,在抵达最小值的路上减少了摆动。

(4)公式中梯度(积分项dw/db)相当于加速度,momentum项(Vdw/Vdb)相当于速度,梯度下降过程加速度负责改变梯度下降的方向,原有速度提供了惯性,使得速度比较大的方向的梯度改变慢下来。

(5)β一般取值0.9,平均了前十次的梯度,一般可以取得不错的效果。

(6)也可以添加偏差修正,但是一般不需要添加,因为10次迭代之后移动平均就过了初始阶段,就不再需要修正。

(7)有些资料中会把积分项的(1-β)去除,VdwVdw+dw, VdbVdb+db,相当于动量部分乘以了1/(1-β),在计算权重w和b时α要根据1/(1-β)作相应变化。两者是等价的,只是会影响学习率α的最佳值。

8.RMSProp(root mean square prop)

1)RMSProp也可以加速梯度下降

2)原理

(1)公式

        

(2)当导数越大(坡度越陡,如上图的db),权重变化就越小;反之当导数越小时,权重变化越大。因此我们可以使用更大的学习率α,而无须在纵轴上垂直方向偏离。

3)Momentum类似都可以消除梯度下降中的摆动

9.Adam(Adaptive Moment Estimation)优化算法

1)Momentum算法和RMSProp算法是少有的经受住考验的两种优化算法,适用于不同的深度学习结构。

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

(1)公式

        

(2)这是一种极其常用的学习算法,被证明适用于不同的神经网络,适用于广泛的结构

(3)超参数

  • 学习率α需要尝试不同的值来看哪个更好
  • β1常用的缺省值为0.9
  • β2 Adam作者建议0.999
  • ε的选择没那么重要,Adam作者建议使用10-8,并不需要设置它,它并不会影响算法表现

10.学习率衰减

1)加速学习速度的另一个方法就是随时间慢慢减少学习率—学习率衰减,在学习的初期使用较大的步伐,当开始收敛的时候,小一些的学习率能让步伐小一些。

2)方法一:

(1)其中一种公式:

(2)学习率呈递减趋势

(3)需要超时不同的超参数α0decay-rate找到合适的值

3)方法二(指数衰减):

4)方法三:

5)方法四:离散下降的学习率,也就是某个步骤有某个学习率,学习率每个步骤都变成前一步骤的一半

11.局部最优的问题

1)局部最优点

2)通常梯度为零的点并不是上图中的局部最优点,实际上成本函数的零梯度点通常是鞍点(如下图)。

3)一个具有高维度空间的函数,如果梯度为零,那么在每个方向它可能是凸函数,也可能是凹函数。有些维度方向向下,有些向上,同时向下的可能性比较小,所以在高维空间更可能碰到鞍点。

(1)首先你不太可能困在极差的局部最优中

(2)平稳段使得学习是否缓慢,像Momentum和RMSprop这样的算法能够假设学习。更成熟的算法是像Adam这样的算法能够加快速度,让你尽快往下走出平稳段。

 

 

猜你喜欢

转载自blog.csdn.net/jliang3/article/details/85998092