当前位置: 首页 > 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.lqws.cn/news/553519.html

相关文章:

  • 顺序表的常见算法
  • Qt 收藏夹书签管理
  • Qt的UDP接收过一段时间后就收不到数据,readyRead() 信号不触发的彻底解决方法
  • Python 数据分析:numpy,抽提,整数数组索引
  • 鸿蒙5:其他布局容器
  • 【大数据】HDFS分布式 机架感知
  • 学习笔记(C++篇)—— Day 8
  • Node.js特训专栏-实战进阶:10.MongoDB文档操作与聚合框架
  • 提示词优化神奇: PromptPilot是什么
  • NLog、log4net、Serilog 和 Microsoft.Extensions.Logging 四大 .NET 日志库的综合对比
  • 滑坡监测接收机市场分析
  • Uni-App 小程序面试题高频问答汇总
  • 电子电气架构 --- 车载芯片SOC简介
  • VR训练美国服务器:高性能解决方案与优化指南
  • 淘宝客APP的性能优化与监控体系:架构师的技术实践
  • 力扣第73题-矩阵置零
  • SQL关键字三分钟入门:RANK() —— 窗口函数
  • QT+VS2019 开发项目 扩展安装
  • C++标准的共享型智能指针std::shared_ptr使用介绍
  • 在项目中如何巧妙使用缓存
  • 前端进阶之路-从传统前端到VUE-JS(第一期-VUE-JS环境配置)(Node-JS环境配置)(Node-JS/npm换源)
  • Python 中 `while` 循环在游戏开发中的具体应用:实战案例解析
  • 软测八股--计算机网络
  • 告别固定密钥!在单一账户下用 Cognito 实现 AWS CLI 的 MFA 单点登录
  • C++包管理工具:conan2持续集成 (CI) 教程
  • 给自己网站增加一个免费的AI助手,纯HTML
  • 广外计算机网络期末复习
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • VScode使用usb转网口远程开发rk3588
  • 展开说说:Android之ContentProvider源码浅析