传统学习率策略:

之前的学习率调整策略可以分为两种,分别是逐渐衰减策略和自适应调整策略。常用的逐渐衰减策略包括阶梯式地衰减(step learning rate decay)和指数衰减(expotianally learning rate decay)策略

阶梯式衰减的例子:初始学习率为0.01,在训练分别执行到50、90和120周期数时将学习率减少为原来的1/10(乘以0.1)。指数衰减就是每个周期都将学习率减少一点,比如减少到原来的0.9。 具有代表性的自适应调整策略便是Ada系列的优化算法(Adagrad、Adadelta、Adam等),这些优化算法一般都包含对初始学习率进行自适应地调整,而且每个可学习参数具有独立的学习率,不像逐渐衰减策略一样,每个参数使用的是公共的全局学习率。

以上两种策略具有一个共同的特点:学习率都是逐渐减小的,其实这么做是有原因的,因为研究社区对神经网络模型的研究认为,随着学习的进行,模型不断接近极值点,这时如果学习率太大的话会造成模型越过极值点或者发散。但是,随着对神经网络参数空间的不断理解,研究者们发现,模型参数空间中存在的大多是鞍点或者表现较差的极小值点,前者会严重影响模型的学习效率,后者会使得模型的最终表现很差。

Cyclical Learning Rates:

训练时偶尔增大学习率(不是持续减少),虽然短期内会造成模型性能表现较差,但是最终训练结果在测试集上表现却比传统的逐渐衰减策略更好。因为这样会让模型以更快的(更大的学习率)速度逃离鞍点,从而加速模型收敛。而且,如果模型收敛到了半径较窄的吸引盆区域的极值点区域(泛化能力差),那么突然增大学习率也可以让模型跳出该极值点区域,从到收敛到不易跳出的较宽的(泛化能力强)吸引盆区域的极值点。

CLR实现

CLR的实现很简单,而且很容易集成到目前的大部分模型中,而且不会引入没有额外的计算负担:

  1. 首先确定学习率的上下界(即基础(最小)学习率和最大学习率)、一个循环的步长数(即占用多少个训练step)和学习率增减方式;
  2. 根据增加方式以循环步长的1/2的(step size)在每步训练结束后增加学习率直到达到最大学习率,然后根据减少方式以剩余的1/2周期步长数(step size)在每步训练结束后减少学习率直到最小学习率;
  3. 重复步骤2直到训练结束,下图2为CLR方法的直观表示,其使用了三角式学习率增减方式(线性增加和线性减少)。

CLR还需要确定三个超参数,一个是学习率上下界,另一个是一个循环步长。

确定学习率边界

论文中提出使用“LR Range test”的方法确定学习率上下界:先预定义一个较大范围的学习率区间(如[0,2.0]),将模型训练一些周期,训练的每个周期(epoch)从学习率区间的下限线性增加学习率,直到区间上限,然后会得到一个学习率与训练集精度的曲线图(如下图),在该图中选择精度稳定增长的学习率范围作为CLR的学习率上下界(如从图中可以确定的上下界分别为0.001和0.006)。或者根据经验确定区间:学习率上界一般是使模型收敛的最大学习率的2倍,学习率下界一般是上界的1/4到1/3。

确定循环步长

作者指出模型的精度其实对循环的步长数是比较鲁棒的,根据他们的实验,循环的步长数一般为一个周期步长数的2~7倍,也就是说一个学习率调整(增和减)循环周期会跨越2到7个训练周期。注意:最好在循环结束时停止训练,此时学习率最小,准确率最高

Cyclical Learning Rates相关推荐

  1. Mechine Learning 机器学习笔记

    笔记作者:OUC_Shizue 参考课程:复旦大学 邱锡鹏 <神经网络与深度学习> 第一章:机器学习概论 一.机器学习的定义 1.直接定义 ​ 机器学习≈计算机自动构建映射函数 ​ Mac ...

  2. 计算机视觉技术 图像分类_如何训练图像分类器并教您的计算机日语

    计算机视觉技术 图像分类 介绍 (Introduction) Hi. Hello. こんにちは 你好 你好. こんにちは Those squiggly characters you just saw ...

  3. 八大深度学习最佳实践

    翻译 | AI科技大本营 参与 | 刘畅 [AI 科技大本营导读] 2017年,许多的人工智能算法得到了实践和应用.名博Hack Noon作者 Brian Muhia 认为想要玩转人工智能,不仅要拥有 ...

  4. 写给新手:2021版调参上分手册!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:山竹小果,来源:夕小瑶的卖萌屋 在日常调参的摸爬滚打中,参考了不少 ...

  5. 深度学习调参tricks总结!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:山竹小果,来源:NewBeeNLP 寻找合适的学习率(learni ...

  6. PyTorch | 优化神经网络训练的17种方法

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | LORENZ KUHN 来源 | 人工智能前沿讲习 编辑 ...

  7. 训练AI要“什么自行车” 只用了1万辆小破车 | ICCV2021 VIPriors

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 阿里安全人工智能治理与可持续发展实验室(AAIG) 编辑 ...

  8. 写给新手炼丹师:2021版调参上分手册

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨山竹小果 来源丨夕小瑶的卖萌屋 编辑丨极市平台 导读 在日常调 ...

  9. 让PyTorch训练速度更快,你需要掌握这17种方法

    选自efficientdl.com 作者:LORENZ KUHN 机器之心编译 编辑:陈萍 掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练. 近日,Reddit 上一个帖 ...

  10. PyTorch训练加速17种技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文自 机器之心 作者:LORENZ KUHN 编辑:陈萍 掌握这 ...

最新文章

  1. Python Module_openpyxl_styles 样式处理
  2. 微服务调用传string值_springCloud微服务项目 构建公共的feign调用
  3. 云炬随笔20171202
  4. 突发!Nginx 之父被拘留,原因竟然是“接私活儿”?
  5. WebRTC 学习之 WebRTC 简介
  6. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
  7. tcp总结与简单实现
  8. java有没有友元函数_c++中友元函数理解与使用
  9. Oracle解决Ora-01653无法扩展表空间问题
  10. 动态域名解析NAT版结合绿盾加密解密软件使用方法
  11. 数据结构——线性表的链式存储
  12. 解构语音交互产品--人工智能AI技术
  13. ubuntu加入Windows的AD域(使用SSSD和Realm的方式)
  14. LA3713 Astronauts
  15. 纯css实现鼠标悬浮、点击更改元素背景
  16. 关于航空障碍灯的介绍
  17. shell脚本获取cpu、内存、磁盘使用率
  18. sequelize 安装
  19. Python如何自制包、如何安装自己的包并导入
  20. 主播直播间抖音电商脚本运营话术模板表格方案管理计划

热门文章

  1. 2750 心系南方灾区
  2. 原生js + canvas 实现刻度尺效果
  3. CF-C. Dima and Salad
  4. 偶然发现的写参考文献的利器(超快搜索+快捷摘要总结)、文末再讲一下EndNote的使用心得
  5. 中秋闲来无事,自己写个2048玩玩
  6. Java笔记009-数组、排序、查找、多维数组(二维数组)
  7. 正面管教之PHP_2017.04.08 三正记录(正面管教课堂之出生顺序及PHP)
  8. 智能合约实现简单投票系统
  9. 取次花丛懒回顾,半缘修道半缘君。
  10. Configure Python interpreter