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

机器学习-06(Optimization-自动调整学习率)

临界点其实不一定是在训练神经网络过程中遇到的最大阻碍。

随着对参数的不断更新,Loss值会不断下降,直至几乎没有变化,不再下降。当参数更新到临界点时,意味着gradient非常小,所以要认定参数是否到达临界点应当确认gradient值是否很小。当Loss不再下降时,且gradient没有很小,则说明此时参数并未到达临界点。

训练停滞\neq小的梯度

Loss几乎不再变化,但gradient却还在变化,可以发生了锯齿现象。

梯度下降法的锯齿现象是指在优化过程中参数更新呈现来回震荡的趋势,导致迭代路径形成类似锯齿的形状。这种现象通常发生在目标函数具有高频振荡特性或学习率设置过高时,参数更新可能超过最优解并反复震荡。 ‌

学习率也可以理解为步长,如果太大会产生震荡的效果,但是如果太小则很难靠近真正的Loss值最小的点。 

学习率应当为每一个参数量身定做。

如果在某一个方向上变化十分平坦(坡度很小),则我们希望学习率可以变大一些,如果在某一个方向上非常陡峭(坡度很大),我们希望学习率可以变小一些。

原先的式子:

可以自动调整学习率的式子:

i表示第i个参数(某一个参数),t代表的是参数的迭代次数,\eta是学习率。

Root Mean Square

当在一条坡度较小的曲线上时,算出的均方根较小所以学习率(红框)就大,步伐大;反之在一条坡度较大的曲线上时,算出的出的均方根较小所以学习率(红框)就小,步伐小。

以上所考虑的是同一个参数,其梯度的大小(变化率)是固定差不多的值。

RMSProp

但是实际上,情况会十分复杂,就算是同一个参数、同一个方向,也想要学习率可以动态调整。

第一步,与均方根的方法相同。第二步 ,均方根中每一个gradient都有同等的重要性,但在RMSProp中,可以自己调整现在的这个gradient的权重。

学习率调整机制(Learning Rate Scheduling)

为防止出现大幅波动的情况,引入学习率调整机制。

此时的\eta与时间有关。

Learning Rate Decay

随着时间的不断进行,随着参数不断的更新,\eta让其越来越小,因为一开始距离终点很远,随着参数的不断更新,距离终点你越来越近,所以把学习率减小,让参数的更新慢下来。

Warm Up 

Warm Up的思想是让\eta先变大再变小。

总结

Momentum和\sigma都是考虑到过去所以的gradient,它们会不会相互抵消呢,其实他们在使用过去所有gradient的方式不同。Momentum是直接将所有的gradient通通加起来,所有它有考虑方向,也有考虑gradient的正负号。但是均方根就不考虑gradient方向了,它只考虑的是gradient的大小。所有它们不会互相抵消掉。

http://www.dtcms.com/a/274776.html

相关文章:

  • consul 的安装与服务发现
  • MOSS-TTSD V2版 - 文本到语音对话生成 支持零样本多人语音克隆 一键整合包下载
  • 一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答(附教程)
  • OBB旋转框检测配置与训练全流程(基于 DOTA8 数据集)
  • 第3章 操作臂运动学(笔记总结)
  • Hangfire 调用报错解决方案总结
  • 经典的垃圾收集器!!!
  • day02-数组part02
  • day67—DFS—被围绕的区域(LeetCode-130)
  • 飞算JavaAI 实战笔记
  • Qt中QGraphicsView类应用解析:构建高效2D图形界面的核心技术
  • 迭代器(c++)、智能指针
  • 【C/C++】动态内存分配:从 C++98 裸指针到现代策略
  • PyTorch武侠演义 第一卷:初入江湖 第1章:武林新秀遇Tensor - 张量基础
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第九篇(排名不分先后)】
  • 飞书CEO谢欣:挑战巨头,打造AI新时代的Office
  • Rail开发日志_6
  • Python类型注解中的`Optional`:深入理解难点解析(进阶版)
  • EndNote快速入手指南
  • CDN 加速与安全防护:双剑合璧的技术协同
  • manifest.json只有源码视图没其他配置
  • Tomcat问题:启动脚本startup.bat中文乱码问题解决
  • 实现临界区互斥的基本方法
  • MyBatis 进阶:连接池、动态 SQL 与多表关联查询
  • 不可告人的秘密- 1.0版 (字符串加密解密工具)
  • c++26新功能—copyable_function
  • windows内核研究(系统调用 二)
  • vue使用printJS实现批量打印及单个打印 避免空白页
  • Kubernetes 高级调度
  • SSM与SpringBoot面试题