当前位置: 首页 > 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。

http://www.lryc.cn/news/576392.html

相关文章:

  • golang中struct中大小写对gin框架的影响
  • 深入剖析AI大模型:Dify的介绍
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • SpringMVC系列(五)(响应实验以及Restful架构风格(上))
  • 微软人工智能证书AI-102 | 如何快速通过?
  • JavaScript---数组篇
  • 循环向python异步中增加task的几个方法
  • 【unity游戏开发——网络】网络协议、TCP vs UDP 本质区别
  • 卸载Modelsim/Qustasim方法
  • AngularJS Git 提交消息规范
  • Centos 8设置固定IP
  • Linux通过Crontab实现自启动
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • 第十节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 菜单管理(下)
  • docker部署后端服务的脚本
  • 深入详解:决策树算法的概念、原理、实现与应用场景
  • WHERE 子句中使用子查询:深度解析与最佳实践
  • 设计模式精讲 Day 16:迭代器模式(Iterator Pattern)
  • 如何解决电脑windows蓝屏问题
  • VScode使用usb转网口远程开发rk3588
  • 【龙泽科技】新能源汽车故障诊断仿真教学软件【吉利几何G6】
  • [Linux]从零开始的STM32MP157移植Ubuntu根文件系统教程
  • ubuntu-server 与 ubuntu-live-server 的区别 笔记250628
  • React环境搭建及语法简介
  • Word之空白页删除2
  • 利用GPU加速TensorFlow
  • python多线程详细讲解
  • 【21】C9800配置PSK认证的WLAN
  • 多表连接查询:语法、注意事项与最佳实践
  • 【linux】Vm虚拟机ubuntu的接口ip掉了