Batch vs Mini-batch 梯度下降算法
- 批梯度下降法表示,在计算网络参数的梯度时每次使用所有的训练样本。而mini-batch梯度下降法,每次计算网络参数的梯度时使用的是mini-batch个训练样本,比如batch_size设置为1000;Mini-batch梯度下降法,在处理大量的训练数据的时候会比batch梯度下降法快很多。
Mini-batch梯度下降法.png
随机梯度下降法 vs 批梯度下降法 vs Mini-batch梯度下降法
- 随机梯度下降法,每次梯度下降更新网络参数使用一个训练样本;批梯度下降法使用所有的训练集;Mini-batch梯度下降法介于它们之间,使用batch size个训练样本执行一次梯度下降过程。
- 批梯度下降法,每次执行梯度下降更新网络参数后,损失函数每次都是下降的;但是Mini-batch梯度下降法,损失函数是波动的并不一定每次都是下降的。
- batch size一般设置为2的幂次方。例如64,128,256,512等;
image.png
指数加权平均
-
下图中的代表某一天的温度值。假设,则计算公式如下:
-
假设取值为0.9,则最终的曲线为如下图红色曲线所示;如果增大的值相当于使用了更多天的数据做移动平均,曲线变得更加平缓。减小的值,使用更少天的数据做移动平均。注意的取值约等于 天的数据做平均的结果。
image.png
image.png -
指数加权平均的理解;
- 指数加权平均,在初期的时候计算误差较大;实际呈现的是紫色的线条,为了缓解这个问题可以在的基础上乘以;
image.png
动量法(Momentum)
- 动量法采用指数加权平均,将历史的梯度做指数加权平均,使得学习速度更快。原始参数更新公式 ,动量法将替换成用于参数更新。的取值一般为0.9;
RMSprop优化算法
- RMSprop也是为了解决梯度更新过程中的摆动,使得梯度大的参数更新的更慢点,梯度小的参数更新的更快点。具体实现也是使用指数加权平均法,公式如下。其中是一个很小的值,防止除以0;的取值一般为0.9。
Adam优化算法
- Adam优化算法将Momentum、RMSprop算法进行结合。具体公式如下;所以对于Adam优化算法有以下几个参数:
学习率衰减
- 在刚开始训练的时候,学习率应该设置的大点。使得训练过程更快点,然后学习率需要不断的减小,使得模型趋近于局部最优值附近。
- 学习率衰减的方法有很多,常见的是跟epoch_num成反比,然后再加上一个衰减系数decay_rate。
- 另外一种常用的学习率衰减策略,就是在warmup_steps内学习率先线性递增;之后再指数衰减。
image.png 带warmup的学习率衰减策略.png
深度学习中局部最优值问题
- 深度学习的优化问题一般是一个非凸的优化问题,所以梯度下降可能找到的是一个局部最优值。模型优化的过程中最怕碰到的是 鞍点问题,因为鞍点的导数为0,使得模型迭代的会很慢。
平原问题.png
网友评论