太古娱乐集团网络服务公司

Week4:[任务三] 第二节 优化器optimizer(二)

日期:2024-09-09 12:45 / 作者:佚名

【目录】

  • learning rate学习率

  • momentum 动量 贝塔β

  • torch.optim.SGD

  • Pytorch的十种优化器

为了使得梯度下降需要加上负的梯度方向,也就是减去梯度g(wi)

初始位置x0,y0,求取在x0处y的导数,将x0的值带入得到梯度x1;

将x1带入函数y,得到y1,继续求取函数y在x1处的导数,将x1的值带入得到梯度x2;

将x2带入函数y,得到y2。若将y视为损失函数,可以看出:

y0->y1->y2发现y的值并没有减小,反而增大,是因为尺度太大,需要乘以一个系数来缩小尺度

学习率lr来减小更新的步伐

学习率过小会导致收敛速度减慢,学习率过大(如0.5,0.3)会导致模型不收敛,收敛速度最快的是与”上帝学习率“最近的那个学习率

冲量能加速梯度下降,相当于添加了惯性属性

100天温度的平均值 = β*第99天温度的平均值 + (1-β)*第一百天的温度

距离100天越远的那些天的温度的权重是越小的

β值可以理解为记忆周期的概念,β值越小记忆周期越短,β越大,记得越远,能把好些天之前的影响也算进来

1/(1-β)为记忆周期,如β=0.9,则表示更关注近10天左右的数据

pytorch中加入动量的更新公式:当前更新量 = m系数×前一次更新量 +当前权重的梯度

加入动量之后能使模型收敛更迅速,在一些点位结合之前的更新量,更好的梯度下降(相当于增加一些步长的感觉)

第100的更新量 = m×第99次的更新量 + 第100次的梯度

= 第100次的梯度 + m×第99次的梯度 + m2×第98次的更新量

= 第100次的梯度 + m×第99次的梯度 + m2×第98次的梯度 + m3×第97次的更新量

当前的更新量会考虑当前的梯度,上一的梯度,上上次的梯度...等等之前的梯度信息

lr = 0.01 M = 0 ; lr = 0.03 M = 0时;lr = 0.01的曲线收敛得更缓慢

lr = 0.01 M = 0.9 ; lr = 0.03 M = 0时;前一条曲线能够更快的达到loss = 0,但是因为momentun太大,后期会出现波动,将M改小为0.63

选择合适的momentum能够加速更新梯度信息

nesterov是一个布尔变量,决定是否采用NAG这个梯度下降方法,通常为false,即不采用

最常用的优化器为SGD,可以解决90%的问题

其次,还可以去了解一下Adam

  • 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的改进

平台注册入口