10.优化器(下)
本课程来自深度之眼deepshare.net,部分截图来自课程视频。
内容简介
learning rate学习率
梯度下降的更新思想 :
下面通过一个例子来观察梯度更新的过程:
函数:
一阶导数:
图像:
在这个点,
采用梯度下降来更新x得到:
再次梯度更新:
一直往下…
可以看到y并没有减小(梯度爆炸了)
因此要改进梯度下降的公式 :
LR=0.5:
LR=0.2,4个迭代:
LR=0.2,20个迭代:
LR=0.1,20个迭代:
LR=0.125,20个迭代:其实第一步就直接到达零点,但是这个最佳学习率事先我们不可能知道。
查看LR从0.01到0.5,10个学习率分别使得损失函数的变化,发现前面几个曲线对应的学习率过大,造成了梯度爆炸。
查看LR从0.01到0.2,10个学习率分别使得损失函数的变化,蓝色曲线对应学习率为0.01,它的收敛速度最慢,到了30多次迭代才收敛,但是不是学习率在一定范围内越大收敛越快,而是紫色0.136的曲线收敛最快,因为它最靠近0.125,因此在设置LR的时候通常比较保守先设置一个比较小的值,先保证整体的收敛,时间上不做要求。
学习率(learning rate)控制更新的步伐
Momentum动量
Momentum(动量,冲量):结合当前梯度与上一次更新信息,用于当前更新
例如:下面图中黑色是普通的梯度更新,每个步长都是一样的(学习率是一样的嘛)
红色的带动量的梯度更新,第一个箭头和黑色箭头一样长,学习率不变,但是第二个箭头(梯度)结合了前面的梯度方向,所以变大了,多出了蓝色的1部分,第三个也一样,但是变得更大了,多出了蓝色2部分。
指数加权平均:
是当前时刻的平均值,是当前时刻参数,属于超参数,但是有常用取值范围(ng的课有讲)。是上一时刻的平均值。
整个公式的意思就是说当前时刻的平均值,除了要考虑当前的时刻的参数之外,还要考虑之间的均值对当前时刻的均值的影响,这个影响考虑过程中,是有规律的,即:越靠近当前时刻的历史参数,影响越大,之前的历史参数对当前参数的影响因子呈指数变化。
求第100天的指数加权平均温度:
把每项的参数前面的β重新用带指数的β表示,其中第一项相当于:
由于β小于1,所以,参数前面的权重是呈指数下降的。绘制出来就是下面的形状(β=0.9),说明了距离当前时刻越近,权重越大,影响越大,反之亦然:
不同β曲线形状如下,表明β越小,记忆越短,例如红色曲线在20个时刻前的权重已经无法对当前的参数造成什么影响了。通常beta设置为0.9,也就是影响时刻约10个()时间步。
原理明白后,下面看PyTorch中动量梯度下降的公式:
其中:
:第i+1次更新的参数
:学习率
:更新量
:momentum系数
:的梯度
例子:
下面看图说话:
LR分别为0.01和0.03,没有动量
LR分别为0.01和0.03,0.01动量为0.9
LR分别为0.01和0.03,0.01动量为0.63,看到0.01的曲线比0.03的收敛要快。
torch.optim.SGD
1.optim.SGD主要参数:
·params:管理的参数组
·Ir:初始学习率
·momentum:动量系数,贝塔
·weight_decay:L2正则化系数
·nesterov:是否采用NAG,默认是false
NAG参考文献:《On the importance of initialization and momentum in deep learning》
PyTorch的十种优化器
1.optim.SGD:随机梯度下降法(适用90%模型上)
2.optim.Adagrad:自适应学习率梯度下降法
3.optim.RMSprop:Adagrad的改进
4.optim.Adadelta:Adagrad的改进
5.optim.Adam:RMSprop结合Momentum
6.optim.Adamax:Adam增加学习率上限
7.optim.SparseAdam:稀疏版的Adam
8.optim.ASGD:随机平均梯度下降
9.optim.Rprop:弹性反向传播(所有样本直接参与计算的时候用,分batch时不用)
10.optim.LBFGS:BFGS的改进(L代表limit)
参考文献:
1.optim.SGD:《On the importance of initialization and momentum in deep learning》
2.optim.Adagrad:《Adaptive Subgradient Methods for Online Learning and Stochastic
Optimization》
3.optim.RMSprop:
http://www.cs.toronto.edu/-tijmen/csc321/slides/lecture_slides_lec6.pdf
4.optim.Adadelta:《AN ADAPTIVE LEARNING RATE METHOD》
5.optim.Adam:《Adam:A Method for Stochastic Optimization》
6.optim.Adamax:《Adam:A Method for Stochastic Optimization》
7.optim.SparseAdam
8.optim.ASGD:《Accelerating Stochastic Gradient Descent using Predictive Variance
Reduction》
9.optim.Rprop:《Martin Riedmiller und Heinrich Braun》
10.optim.LBFGS:BDGS的改进