当前位置: 首页 > news >正文

Note2.3 机器学习:Adaptive Learning Rate

目录

1.training stuck的真正原因

Example

2.解决思路 

方法1:AdaGrad

​编辑

方法2:RMSProp(更优)

3.实例:使用AdaGrad 

3.1原因分析

3.2解决方法:Learning Rate Scheduling

4.Summary

拓展

1.Adam介绍(最主流的优化算法之一)

2. Learning Rate Scheduling:Warm Up

Warm Up有效的一种可能解释 


Adaptive Learning Rate是一种有效的训练技巧,可以解决training stuck的问题,基础思想:根据具体情况,给每个参数不同的Learning rate,并动态调整。

1.training stuck的真正原因

多数情况下,训练卡住并不是因为critical point,而是参数在error surface山谷之间来回震荡,无法跳出去(此时的gradient依然很大)。要接近critical point是一件很困难的事情,一般的gradient descend是做不到的,必须用特殊的方法。所以使用gradient descend训练时,遇到的大部分问题往往不是critical point

Example

注意:error surface图中颜色的冷暖通常用于表示误差(损失函数值)的高低,一般暖色(红/黄)≈ 高误差,冷色(蓝/绿)≈ 低误差;线条表示等高线,线条上误差率相同;等高线越密集表示此处算出的gradient越大

图中黄色标记点为错误率最低的点,也就是训练的最终目标。但如果直接使用gradient descend,无法达到。

2.解决思路 

为了便于说明,用一个参数的更新为例,θ的右上角t表示iteration的次数,右下角i表示这是第i个参数。一般的gradient descend的学习率η是固定的,Adaptive Learning Rate则会动态调整。下图中不仅依赖于具体的参数,还依赖于更新的轮数。

方法1:AdaGrad

AdaGrad 是 Adaptive Gradient Algorithm(自适应梯度算法)的缩写,是一种自适应学习率的优化算法,根据不同参数的历史梯度信息动态调整学习率

 此方法有效的原因

 

方法2:RMSProp(更优)

方法1存在缺陷:不能及时根据当前的gradient调整学习率,有一定滞后性

而理想的状况是算法可以及时根据当前gradient动态调整η

RMSProp全称 Root Mean Square Propagation(均方根传播),是大名鼎鼎的Geoffrey Hinton 在其课程中提出,是一种自适应学习率的梯度下降优化算法。它的核心思想是通过对梯度平方的指数加权移动平均(EMA)动态调整每个参数的学习率,善于调整学习率以应对数据的稀疏性,解决了传统梯度下降方法(如SGD)和AdaGrad的学习率单调下降问题。 

RMSProp中α是hyperparameter (超参数),表示衰减率(通常取0.9),控制历史信息的权重。α可以使历史信息能够指数级衰减,及时根据当前的情况调整Learning rate。

 

3.实例:使用AdaGrad 

现在用AdaGrad来解决开头的例子

最终确实取到了很好的结果,但上述图片中存在一个问题,在接近时,训练结果“爆炸了”。

3.1原因分析

在横着的这段,纵轴的gradient一直很小,累计一段时间后对应的RMS(均方根)变得很小,学习率很大,所以在纵轴上出现大幅度偏移,经过一段时间后回到横着的这段,但由于偏移时纵轴gradient很大,RMS变大,学习率变小,训练结果又向左稳定前进了一段。一段时间后纵轴RMS又变小,所以又出现纵轴上大幅度偏移的情况。反复出现上述情况数次后,达到最终结果。

3.2解决方法:Learning Rate Scheduling

下图中采用的Learning Rate Scheduling策略是让Learning rate逐渐变小。原理:随时间延长,离目标距离变小,调整的“步幅”应该减小。

可以看出,Learning Rate Scheduling解决了问题。

4.Summary

拓展

1.Adam介绍(最主流的优化算法之一)

Adam 是 Adaptive Moment Estimation(自适应矩估计)的缩写,结合了动量(Momentum)RMSProp,是当前最主流的optimizer(优化器)之一,广泛用于深度学习训练

pytorch中已经实现了Adam,直接调用即可; 注意:pytorch为Adam预设的超参数不要随便调整,否则结果往往会变差。

2. Learning Rate Scheduling:Warm Up

总体思路:先增大Learning rate再减小

这个方法听起来很神奇,出现在很多早期的论文中。比如BERT模型的训练往往要用到warm up。

 早在2015年的一篇关于Residual Network(残差神经网络)的论文中就出现这一技术,Transformer也运用了warm up

 

Warm Up有效的一种可能解释 

 目前,这一问题仍需要探讨。这里提供了一个可能的解释

中σ是一个统计的结果,必须有足够多的数据才能得到较精准的值,所以一开始不要让参数离开初始位置太远,设置小的η,来“探索”error surface的“情报”,收集σ的统计数据,当σ比较精准后再提高Learning rate。

相关文章:

  • Java 大视界 -- Java 大数据机器学习模型在金融市场高频交易策略优化与风险控制中的应用(327)
  • springboot+Vue逍遥大药房管理系统
  • SmartETL中数据库操作与流程解耦的设计与应用
  • Stewart并联结构两自由度正逆解计算和工作空间仿真
  • 使用asyncio构建高性能网络爬虫
  • for each循环语句
  • FPGA芯片的配置方法
  • [Java 基础]HashMap
  • Element Plus el-button实例类型详解
  • 什么是数字签名(ECDSA)?
  • 非阻塞 IO
  • Java面试题030:一文深入了解MySQL(2)
  • 将文档转为数据集
  • FPGA内部资源介绍
  • tf serving和torch serve哪个耗时更低
  • 数据结构与算法总概
  • 鸿蒙 Grid 与 GridItem 深度解析:二维网格布局解决方案
  • 操作系统的概述之二
  • 探索钉钉生态中的宜搭:创建与分享应用的新视界
  • SpringMVC系列(六)(Restful架构风格(中))