梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01、0.001以及0.0001等,学习率越大则权重更新。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络更好的收敛到最优解。下图展示了随着迭代的进行动态调整学习率的4种策略曲线:

上述4种策略为自己根据资料整理得到的衰减类型:指数衰减、固定步长的衰减、多步长衰、余弦退火衰减。下面逐一介绍其性质,及pytorch对应的使用方式,需要注意学习率衰减策略很大程度上是依赖于经验与具体问题的,不能照搬参数。

学习率动态更新策略的说明

4个负责学习率调整的类:StepLR、ExponentialLR、MultiStepLR和CosineAnnealingLR,其完整对学习率的更新都是在其step()函数被调用以后完成的,这个step表达的含义可以是一次迭代,当然更多情况下应该是一个epoch以后进行一次scheduler.step(),这根据具体问题来确定。此外,根据pytorch官网上给出的说明,scheduler.step()函数的调用应该在训练代码以后:

scheduler = ...
>>> for epoch in range(100):
>>>     train(...)
>>>     validate(...)
>>>     scheduler.step()

一、指数衰减

二、固定步长衰减

三、多步长衰减

四、余弦退火衰减

当我们使用梯度下降算法来优化目标函数的时候,当越来越接近Loss值的全局最小值时,学习率应该变得更小来使得模型尽可能接近这一点。

余弦退火(Cosine annealing)可以通过余弦函数来降低学习率。

余弦函数中随着x的增加余弦值首先缓慢下降,然后加速下降,再次缓慢下降。

这种下降模式能和学习率配合,以一种十分有效的计算方式来产生很好的效果。


在论文Stochastic Gradient Descent with Warm Restarts中介绍主要介绍了带重启的随机梯度下降算法(SGDR),其中就引入了余弦退火的学习率下降方式。

本文主要介绍余弦退火的原理以及实现。并且因为我们的目标优化函数可能是多峰的(如下图所示),除了全局最优解之外还有多个局部最优解,在训练时梯度下降算法可能陷入局部最小值,此时可以通过突然提高学习率,来“跳出”局部最小值并找到通向全局最小值的路径。这种方式称为带重启的随机梯度下降方法。




参考资料:
pytorch必须掌握的的4种学习率衰减策略
学习率衰减之余弦退火(CosineAnnealing)

PyTorch学习率衰减策略:指数衰减(ExponentialLR)、固定步长衰减(StepLR)、多步长衰减(MultiStepLR)、余弦退火衰减(CosineAnnealingLR)相关推荐

  1. 【深度学习】(11) 学习率衰减策略(余弦退火衰减,多项式衰减),附TensorFlow完整代码

    大家好,今天和各位分享一下如何使用 TensorFlow 构建 多项式学习率衰减策略.单周期余弦退火学习率衰减策略.多周期余弦退火学习率衰减策略,并使用Mnist数据集来验证构建的方法是否可行. 在上 ...

  2. pytorch学习率下降策略

    阶段离散下降调整策略: 首先"阶段离散"下降调整这个词不是个专有名词,它只是一个形容. 符合这种调整策略的方法,一般是step,step学习率下降策略是最为常用的一种,表现为,在初 ...

  3. Pytorch —— 学习率调整策略

    1.为什么要调整学习率 学习率控制梯度更新的快慢,在训练中,开始时的学习率比较大,梯度更新步伐比较大,后期时学习率比较小,梯度更新步伐比较小. 梯度下降:wi+1=wi−g(wi)w_{i+1}=w_ ...

  4. 干货|pytorch必须掌握的的4种学习率衰减策略

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨机器学习入坑者@知乎(已授权) 来源丨https://zhua ...

  5. pytorch必须掌握的的4种学习率衰减策略

    原文: pytorch必须掌握的的4种学习率衰减策略 1.指数衰减 2. 固定步长衰减 3. 多步长衰减 4. 余弦退火衰减 5. 上述4种学习率动态更新策略的说明 梯度下降算法需要我们指定一个学习率 ...

  6. polyrate使用方法_pytorch必须掌握的的4种学习率衰减策略

    梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01.0.001以及0.0001等,学习率越大则权重更新.一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在 ...

  7. pytorch----深度学习中学习率的衰减策略

    1.为什么要调整学习率 神经网络 参数更新的机制是-梯度下降+反向传播,将输出误差 反向传播 给网络参数,以此来拟合样本的输出.本质上是最优化的一个过程,逐步趋向于最优解.但是每一次更新参数利用多少误 ...

  8. Pytorch 学习率衰减方法

    Pytorch 学习率衰减方法 1.什么是学习率衰减 2.使用库函数进行调整 2.1.有序调整 2.1.1等间隔调整学习率 2.1.2.多间隔调整学习率 2.1.3.指数衰减调整学习率 Exponen ...

  9. PyTorch学习之六个学习率调整策略

    PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现.PyTorch提供的学习率调整策略分为三大类,分别是 a. 有序调整:等间隔调整(Step),按需调整学习率( ...

最新文章

  1. 在linux下查询日志
  2. 算法分析与设计-实验三 贪心算法设计
  3. 在多个的共享ndk项目之间共享模块
  4. uniapp怎么引入css_CSS 三种基础选择器
  5. MATLAB课程表分配问题,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
  6. 待支付取件费用是什么意思_SEDEX验厂是什么意思,sedex验厂审核费用是多少?...
  7. 概要设计说明书任务分配
  8. 转:Git: 对象原理
  9. spring源码-自动注入
  10. java -jar 设置环境变量_java 配置环境变量
  11. 各大Asp木马的万能密码
  12. CAD - 多段线、矩形、修订云线、样条曲线
  13. 沁恒CH348 USB转8串口芯片
  14. 计算机用word做贺卡,运用Word制作电子贺卡教学设计
  15. 【20210305期AI简报】基于TensorRT完成NanoDet模型部署、Google AI发布TensorFlow 3D
  16. 香侬专栏 | 独家对话斯坦福大学计算机系教授Percy Liang
  17. Docker 安装和部署
  18. 目标检测经典论文——Faster R-CNN论文翻译:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Net
  19. MMA-Self-defining function
  20. html轮廓线怎么取消,c4d这些线条怎么取消掉

热门文章

  1. 求阶乘之和 0到n阶乘的和
  2. 团队博客-第六周:Alpha阶段项目复审(科利尔拉弗队)
  3. 持续交付的发展与持续交付中的测试
  4. 互联网晚报 | 8月16日 星期一 | 李宁上半年营收破百亿;微博视频打赏功能测试上线;我国银行理财产品投资者数量超6000万...
  5. kerberos 之TGS_REQ、TGS_REP
  6. (一)改掉这些坏习惯,还怕写不出健壮的代码?
  7. 安装radis看我就可以了
  8. HTML的meta标签
  9. 记一次CVTE笔试(2018秋招)
  10. 读书笔记——我的学习与研究经历(杨振宁/2012)