目录
优化算法
Mini-batch 梯度下降
理解 mini-batch 梯度下降法
怎么选择适合的batch size?
指数加权平均数
理解指数加权平均数
公式:
指数加权平均的偏差修正
动量梯度下降法
RMSprop
Adam 优化算法
学习率衰减
为什么衰减?
局部最优
局部最优解
鞍点
深度学习的优势是可以利用一个巨大的数据集来训练神经网络,而在巨大的数据集基础上进行训练速度很慢。
这时,我们可以把训练集分割为小一点的子集训练,这些子集被取名为mini-batch,一批一批进行处理,然后我们会得到这一批样本的损失函数、梯度等等,然后更新参数,这时称为1 epoch。
可以发现两者的总体效果是令人满意的。
假设mini-batch大小为1,就有了新的算法,叫做随机梯度下降法,如果mini-batch的大小等于,其实就是batch梯度下降法。
batch 梯度下降法从某处开始,相对噪声低些,幅度也大一些,你可以继续找最小值。
相反,在随机梯度下降法中,从某一点开始,我们重新选取一个起始点,每次迭代,你只对一个样本进行梯度下降,大部分时候你向着全局最小值靠近,有时候你会远离最小值,因为那个样本恰好给你指的方向不对,因此随机梯度下降法是有很多噪声的,平均来看,它最终会靠近最小值,不过有时候也会方向错误,因为随机梯度下降法永远不会收敛,而是会一直在最小值附近波动,但它并不会在达到最小值并停留在此。
实际上你选择的mini-batch大小在二者之间,大小在1和之间,而1太小了,太大了,原因在于如果使用batch梯度下降法,mini-batch的大小为,每个迭代需要处理大量训练样本,该算法的主要弊端在于特别是在训练样本数量巨大的时候,单次迭代耗时太长。
1.当训练集很小的时候,直接使用batch梯度下降。
2. 一般的 mini-batch 大小为 64 到 512
当日的权重越小,则考虑的周期越长,所得到的曲线就越平滑。
我们不使用用用 /(1−^t)代替,可以有效消除前期的误差,然后对于后期的数据影响不大,因为这时候本身的误差已经很小了。
在计算梯度时,不仅仅考虑其偏导,还考虑考虑在此之前计算过的梯度下降方向,对于梯度做影响
添加参数α(表示当前梯度大小对于 learning rate 的影响比重,是一个超参数)
考虑之前所有计算过的梯度,作为分母对学习率做影响。
我们希望会相对较小,所以我们要除以一个较小的数,而希望又较大,所以这里我们要除以较大的数字,这样就可以减缓纵轴上的变化。
RMSprop 跟 Momentum 有很相似的一点,可以消除梯度下降中的摆动,包括mini-batch 梯度下降,并允许你使用一个更大的学习率,从而加快你的算法学习速度。
Adam = RMSProp + Momentum
Adaptive Moment Estimation
不同的 mini-batch 中有噪音,如果学习率是固定,将会在某一个值附近抖动,不能精确收敛。
衰减方式(指数衰减、离散下降)
一般都会训练到局部最优的区域,因为低维空间的影响,但这不是最低点。
一个具有高维度空间的函数,如果梯度为 0,那么在每个方向,它可能是凸函数,
也可能是凹函数。