YOLOv5-优化器和学习率调整策略

这篇具有很好参考价值的文章主要介绍了YOLOv5-优化器和学习率调整策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

优化器和学习率调整策略

pytorch-优化器和学习率调整
这个链接关于优化器和学习率的一些基础讲得很细,还有相关实现代码

优化器

前向传播的过程,会得到模型输出与真实标签的差,我们称之为损失, 有了损失,我们会进入反向传播过程得到参数的梯度,接下来就是优化器干活,优化器(梯度下降)要根据我们的这个梯度去更新参数,使得损失不断的减低。
各种优化器的优缺点
optim.SGD: 随机梯度下降法
optim.Adagrad: 自适应学习率梯度下降法
optim.RMSprop: Adagrad的改进
optim.Adadelta: Adagrad的改进
optim.Adam: RMSprop结合Momentum
optim.Adamax: Adam增加学习率上限
optim.SparseAdam: 稀疏版的Adam
optim.ASGD: 随机平均梯度下降
optim.Rprop: 弹性反向传播
optim.LBFGS: BFGS的改进

SGD:选择合适的learning rate比较困难 - 对所有的参数更新使用同样的learning rate.我们常用的mini-batch SGD训练算法,然而虽然这种算法能够带来很好的训练速度,但是在到达最优点的时候并不能够总是真正到达最优点,而是在最优点附近徘徊。另一个缺点就是这种算法需要我们挑选一个合适的学习率,当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在训练过程中优化的幅度跳过函数的范围,也就是可能跳过最优点

SGD+Momentum:基于梯度的移动指数加权平均解决mini-batch SGD优化算法更新幅度摆动大的问题,同时可以使得网络的收敛速度更快(注意:使用Momentum时偏差修正可用可不用–吴恩达深度学习)

Momentum原理:积累之前的动量来替代真正的梯度,计算梯度的指数加权平均数,并利用该梯度更新权重,相关方向加速SGD,抑制振荡,从而加快收敛。

RMSprop:积累之前的动量来替代真正的梯度对梯度计算微分平方加权平均数,进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度.(对学习率加了一定的约束,但事实上仍依赖于人工设置的一个全局学习率

Adam:将Momentum算法和RMSProp算法结合起来使用的一种算法,表现比前两种更好,所以它也是解决摆动幅度过大,加快函数的收敛速度;同时利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,实现学习率自适应。(注意:在Adam中Momentum的偏差修正是必须使用的!)
详情参考-深度学习优化算法解析

学习率调整策略

学习率是深度学习优化器中的一个重要的超参,直接控制了参数更新步伐的大小,整个训练当中,学习率也不是一成不变的,一般而言网络训练刚开始学习率要大(但似乎在网络最开始训练要有一个预热,学习率较小?),然后减小使损失收敛到最小值。

为什么要调整学习率:学习率是可以控制更新的步伐的。 我们在训练模型的时候,一般开始的时候学习率会比较大,这样可以以一个比较快的速度到达最优点的附近,然后再把学习率降下来, 缓慢的去收敛到最优值。

为什么需要warm up(学习率预热):由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡),选择Warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳
warm up

深度学习实战(八)——如何设置学习率
学习率调整方案
常用的学习率调整策略(pytorch):
StepLR-等间隔调整学习率
MultiStepLR- 按给定间隔调整学习率
ExponentialLR-按指数衰减调整学习率
CosineAnnealingLR-余弦周期调整学习率
ReduceLRonPlateau-监控指标, 当指标不再变化则调整, 这个非常实用。可以监控loss或者准确率,当不在变化的时候,会自动去调整。
LambdaLR-自定义调整
自定义我们的学习率更新策略,告诉程序我们想怎么改变学习率。并且还可以对不同的参数组设置不同的学习率调整方法,所以在**模型的finetune(迁移)**中非常实用

总结
有序调整: Step、MultiStep、 Exponential和CosineAnnealing, 这些得事先知道学习率大体需要在多少个epoch之后调整的时候用
自适应调整: ReduceLROnPleateau, 这个非常实用,可以监控某个参数,根据参数的变化情况自适应调整
自定义调整:Lambda, 这个在模型的迁移中或者多个参数组不同学习策略的时候实用

YOLOv5-优化器和学习率调整策略

YOLOv5使用的优化器?
yolov5使用自定义的优化器分组方式,分别对**权重(使用权重衰减)、偏置、BN层(使用SGD)**使用不同的优化方式,详情见链接。
yolov5的学习率和优化器代码部分

YOLOv5为什么使用余弦退火学习率?
使用梯度下降算法来优化目标函数的时候,当越来越接近Loss值的全局最小值时,学习率应该变得更小来使得模型尽可能接近这一点,而余弦退火(Cosine annealing)可以通过余弦函数来降低学习率。余弦函数中随着x的增加余弦值首先缓慢下降,然后加速下降,再次缓慢下降。这种下降模式能和学习率配合,产生很好的效果(因为我们希望在网络开始阶段,以一个较小的学习率学习,慢慢变大,直到网络参数的稳定,然后加速训练,到达最优值的附近,这时又需要减小学习率的更新,慢慢接近最优解?)。
YOLOv5-优化器和学习率调整策略
周期余弦退火:我们的目标优化函数可能是多峰的,除了全局最优解之外还有多个局部最优解。在训练时梯度下降算法可能陷入局部最小值,此时可以通过突然提高学习率(周期循环),来“跳出”局部最小值并找到通向全局最小值的路径。文章来源地址https://www.toymoban.com/news/detail-437034.html

到了这里,关于YOLOv5-优化器和学习率调整策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • yolov5——训练策略

    yolov5的训练策略big big丰富,这也是yolov5涨分厉害的reason,目前yolov5的使用量也是非常大的,官网的star已经23.5k了,无论是在迁移学习还是实际场景的应用都是非常广泛的。之前参加比赛,发现好几页的选手都在使用yolov5,确实有必要梳理一下,yolov5的训练策略。感觉这些策略

    2024年02月08日
    浏览(38)
  • Yolov5调整空间金字塔池化SPPCSPC/上采样方式bilinear

    ​ ​ 第一步 各个代码放入common.py中 ​ 第二步 找到yolo.py文件里的parse_model函数,将类名加入进去 ​ 第三步 修改 配置文件 ​ 在我自己的数据集上跑了一下,发现 SPPCSPC的效果是最好的~~~ YOLOV5中默认使用的是最近邻插值‘nearest’ ​  若要改为双线性插值只需在yaml文件中将

    2024年02月12日
    浏览(43)
  • YOLOv5网络结构,训练策略详解

    前面已经讲过了Yolov5模型目标检测和分类模型训练流程,这一篇讲解一下yolov5模型结构,数据增强,以及训练策略。 官方地址 :https://github.com/ultralytics/yolov5 yolov5模型训练流程 :https://blog.csdn.net/qq_45066628/article/details/129470290?spm=1001.2014.3001.5501 Yolov5 (v6.2) 使用自己的数据训练分类

    2023年04月18日
    浏览(53)
  • yolov5检测框重合重复,手动调参方法(调整detect,val的conf,iou)

    出现上述问题一般是整体检测方向没错,但conf-thres和iou-thres的参数需要调整。(在默认值0.25和0.45的基础上,提高置信区间,降低iou) 1、目的:本身conf-thres和iou-thres参数在detect.py文件配置(配置的地方如下图),调好参数开始训练,训练后的结果若大体满意,但细节需要通

    2024年02月04日
    浏览(52)
  • YOLOv7、YOLOv5改进之损失函数EfficiCIoU-Loss:独家首发最新|结合EfficiCIoULoss损失函数(适用于YOLOv5),新的增强预测帧调整并加快帧回归率,加快网络模型收敛

    💡该教程为属于 《芒果书》 📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章 为 YOLOv5、YOLOv7、YOLOv8 芒果改进YOLO系列: YOLOv7改进损失函数:独家首发最新|结合EfficiCIoU-Loss损失函数,新的增强预测帧调整并加快帧回归率,加快网

    2024年02月05日
    浏览(55)
  • 【Yolov5】Yolov5添加ASFF, 网络改进优化

    🚀🚀🚀 Yolov5添加ASFF 🚀🚀🚀 Yolov5是单阶段目标检测算法的一种,网上有很多改进其性能的方法,添加ASFF模块就是其中一种,但是ASFF本身是用于Yolov3的,在v5中无法直接应用,且网上许多博客都是介绍这个模块的原理,没有直接可以应用的代码程序,我这里提供一种方案

    2023年04月08日
    浏览(49)
  • yolov5 优化——mosaic相关

    Mosaic 利用了四张图片重新排布成一张图片,根据论文所说其拥有一个巨大的优点是丰富检测物体的背景:随机缩放增加了很多小目标,让网络的鲁棒性更好;且在BN计算的时候一下子会计算四张图片的数据!但是,同时:如果我们的数据集本身就有很多的小目标,那么Mosaic数

    2024年02月09日
    浏览(42)
  • 60.网络训练中的超参调整策略—学习率调整2

    4、 inverse_time_decay 逆时衰减,这种方式和指数型类似。如图, 5、 cosine_decay

    2024年02月07日
    浏览(35)
  • 机器学习-学习率:从理论到实战,探索学习率的调整策略

    本文全面深入地探讨了机器学习和深度学习中的学习率概念,以及其在模型训练和优化中的关键作用。文章从学习率的基础理论出发,详细介绍了多种高级调整策略,并通过Python和PyTorch代码示例提供了实战经验。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构

    2024年02月05日
    浏览(53)
  • 优化改进YOLOv5算法之Wise-IOU损失函数

    边界框回归(BBR)的损失函数对于目标检测至关重要。它的良好定义将为模型带来显著的性能改进。大多数现有的工作假设训练数据中的样本是高质量的,并侧重于增强BBR损失的拟合能力。如果盲目地加强低质量样本的BBR,这将危及本地化性能。Focal EIoU v1被提出来解决这个问

    2024年01月17日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包