mmseg配置解析 Polynomial Decay 多项式衰减

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Polynomial Decay(多项式衰减)是一种常用的学习率调度方法,通过多项式函数逐步减少学习率,帮助模型更好地收敛。公式为:\[ lr = (lr_{initial} - \eta_{min}) \times \left(1 - \frac{current\_iter}{max\_iters}\right)^{power} + \eta_{min} \]。参数包括初始学习率、最小学习率、当前迭代次数、总迭代次数和衰减指数。适用于需要平滑降低学习率的场景,特别在训练后期微调模型参数。

mmseg配置解析 Polynomial Decay 多项式衰减

B站:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com)

博客:肆十二-CSDN博客

问答:(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com)

Polynomial Decay(多项式衰减)是一种常用于深度学习中学习率调度的方法。在训练过程中,学习率从初始值逐步减少到一个最小值(eta_min),以帮助模型更好地收敛到最优解。Polynomial Decay 的衰减过程遵循一个多项式函数,其公式如下:

Polynomial Decay 公式

如果我们设定初始学习率为 lr_initial,最小学习率为 eta_min,训练的总步数为 max_iters,当前的步数为 current_iter,衰减的指数为 power,那么 Polynomial Decay 的学习率 lr 可以表示为:

image-20240901220841977

参数解释

  • lr_initial:初始学习率,训练开始时的学习率。
  • eta_min:最小学习率,训练结束时的学习率。
  • current_iter:当前的迭代次数。
  • max_iters:总迭代次数,训练的总步数。
  • power:多项式的幂次,控制衰减曲线的形状。power 越大,学习率衰减越慢;power 越小,学习率衰减越快。

举例说明

假设我们有以下参数:

  • 初始学习率 lr_initial = 0.1
  • 最小学习率 eta_min = 0.001
  • 总迭代次数 max_iters = 1000
  • 当前迭代次数 current_iter = 500
  • 衰减指数 power = 2 (表示二次衰减)

根据上述公式,学习率 lr 可以计算为:
$$ lr=(0.1−0.001)×(1−5001000)2+0.001lr = (0.1 - 0.001) \times \left(1 - \frac{500}{1000}\right)^{2} + 0.001lr=(0.1−0.001)×(1−1000500)2+0.001 $$
首先计算衰减因子:
$$ (1−5001000)=0.5\left(1 - \frac{500}{1000}\right) = 0.5(1−1000500)=0.5 $$
然后计算其平方(因为 power = 2):

0.52=0.250.5^2 = 0.250.52=0.25

接着代入公式计算当前的学习率:
$$ lr=(0.1−0.001)×0.25+0.001lr = (0.1 - 0.001) \times 0.25 + 0.001lr=(0.1−0.001)×0.25+0.001lr=0.099×0.25+0.001=0.02475+0.001=0.02575lr = 0.099 \times 0.25 + 0.001 = 0.02475 + 0.001 = 0.02575lr=0.099×0.25+0.001=0.02475+0.001=0.02575 $$
所以在第 500 次迭代时,学习率将下降到 0.02575

学习率曲线

如果绘制 Polynomial Decay 的学习率曲线,随着训练迭代的增加,学习率会从初始值平滑地减小到最小值。power 的大小会影响曲线的形状:

  • power=1:线性衰减。
  • power>1:衰减速度较慢,曲线开始时下降较快,但接近最小值时变化缓慢。
  • power<1:衰减速度较快,曲线开始时下降缓慢,但接近最小值时变化较快。

何时使用

Polynomial Decay 通常用于需要平滑降低学习率的场景,特别是在训练的最后阶段,模型需要更小的学习率来微调参数,以避免过大的梯度更新导致损失函数的不稳定。

这种方法在深度学习的很多任务中都有应用,特别是在训练大规模模型或需要长时间训练的任务中,它能帮助模型在早期迅速收敛并在后期细致调整,获得更好的性能。

目录
相关文章
|
4天前
|
网络协议 Docker 容器
docker中的DNS配置
【10月更文挑战第5天】
57 1
|
8天前
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
|
2天前
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
5 0
|
2天前
|
机器学习/深度学习 编解码
mmseg配置解析 contract_dilation=True
`contract_dilation=True` 是 ResNetV1c 中的一种设置,用于解决多层膨胀卷积中的“栅格效应”。通过调整膨胀率,使卷积核在不同阶段更密集地覆盖输入特征图,避免信息丢失,提升特征提取质量,尤其在语义分割任务中效果显著。
6 0
|
3天前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
10 0
|
3天前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
8 0
|
2月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
59 1
|
2月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
54 0
|
2月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
58 0
|
3天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
13 0

推荐镜像

更多