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)指数加权平均法
(2)修正
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梯度下降法
(2)另一种极端情况,当mini-batch等于1时,相当于随机梯度下降法
(3)mini-batch大小取值[1, m]之间
3)mini-batch大小选择
(1)如果训练样本较小,mini-batch大小选择整个训练集大小,直接使用batch梯度下降法
(2)如果训练样本较大,mini-batch大小一般为[64, 512]之间
4.指数加权平均(指数加权移动平均)
1)局部平均值/移动平均值
(2)vt可认为是1/(1-β)的每日温度
5.理解指数加权平均
1)从下面展开的公式可以知道vt是由vt-1至v0的所有值组成,并且权重随着时间的远离呈指数衰减
6.指数加权平均的偏差修正
1)在计算指数移动平均时,初始值为0,导致开始那几天估测不准(远低于实际值)
3)在计算指数移动平均时,大家不在乎执行偏差修正,因为大部分人宁愿熬过初始时期,拿到有偏差的估测然后继续计算下去。
7.动量梯度下降法(Momentum)
1)Momentum几乎总是比标准的梯度下降算法运行速度要快
梯度下降法求解过程不懂摆动,最后才慢慢摆动到最小值,这种上下摆动减慢了梯度下降法的速度,所以无法使用更大的学习率。如果使用更大的学习率,可能会偏离函数的范围。
2)momentum把加权指数移动平均法融合到梯度下降法中
(1)公式
(2)权重更新更新过程中上下摆动,平均值接近零。加入了历史的动量参数后,平均过程中正负数相互抵消,所以平均值接近零,所以上下摆动的方向变得很小,但是其它方向依然可以快速梯度下降。
(3)momentum梯度下降法迭代几次后最终摆动变小,横轴方向(假设往横轴方向下降)运动更快,在抵达最小值的路上减少了摆动。
(4)公式中梯度(积分项dw/db)相当于加速度,momentum项(Vdw/Vdb)相当于速度,梯度下降过程加速度负责改变梯度下降的方向,原有速度提供了惯性,使得速度比较大的方向的梯度改变慢下来。
(5)β一般取值0.9,平均了前十次的梯度,一般可以取得不错的效果。
(6)也可以添加偏差修正,但是一般不需要添加,因为10次迭代之后移动平均就过了初始阶段,就不再需要修正。
(7)有些资料中会把积分项的(1-β)去除,Vdw=βVdw+dw, Vdb=βVdb+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)超参数
10.学习率衰减
1)加速学习速度的另一个方法就是随时间慢慢减少学习率—学习率衰减,在学习的初期使用较大的步伐,当开始收敛的时候,小一些的学习率能让步伐小一些。
2)方法一:
(2)学习率呈递减趋势
(3)需要超时不同的超参数α0和decay-rate找到合适的值
5)方法四:离散下降的学习率,也就是某个步骤有某个学习率,学习率每个步骤都变成前一步骤的一半
11.局部最优的问题
1)局部最优点
2)通常梯度为零的点并不是上图中的局部最优点,实际上成本函数的零梯度点通常是鞍点(如下图)。
3)一个具有高维度空间的函数,如果梯度为零,那么在每个方向它可能是凸函数,也可能是凹函数。有些维度方向向下,有些向上,同时向下的可能性比较小,所以在高维空间更可能碰到鞍点。
(1)首先你不太可能困在极差的局部最优中
(2)平稳段使得学习是否缓慢,像Momentum和RMSprop这样的算法能够假设学习。更成熟的算法是像Adam这样的算法能够加快速度,让你尽快往下走出平稳段。