Learning Rate
了解学习率如何影响模型训练。探索如何为 Ultralytics YOLO26 优化步长,以在目标检测等任务中实现 SOTA 性能。
学习率是一个关键的超参数调整配置,用于确定模型在优化过程中所采取的步长。在训练神经网络的背景下,它控制模型在每次处理一批数据时,根据估计误差对其内部权重进行更新的程度。可以把它想象成一个人正走下山坡走向山谷(误差最低点);学习率决定了他的步幅大小。如果步幅太大,他可能会直接跨过山谷而错过底部。如果步幅太小,到达目的地可能需要不切实际的漫长时间。
优化中的“金发姑娘”困境#
寻找最优学习率通常被描述为机器学习工作流中的一种平衡艺术。目标是将损失函数降到最低,该函数用于衡量模型的预测值与实际真值之间的差异。这个过程在很大程度上依赖于诸如随机梯度下降 (SGD) 或 Adam 优化器等优化算法来导航损失地形。
- 学习率过高: 如果将该值设置得过高,模型的权重更新将会非常剧烈。这会导致“过冲”现象,即模型无法收敛到一个解,而是在原地剧烈振荡或发散。这种不稳定性有时会引发梯度爆炸问题,使训练过程失效。
- 学习率过低: 相反,极小的步长可以确保模型谨慎地朝向最小值移动,但它可能会导致欠拟合,因为训练过程会变得极其缓慢。模型可能会陷入局部最小值,或者花费数千个额外的周期来学习简单的模式,从而在计算上造成资源浪费。研究人员通常会参考关于优化的 PyTorch 文档来了解不同的算法如何与这些值进行交互。
实际应用#
学习率调整的影响在部署了计算机视觉任务的各个高风险行业中显而易见。
-
自动驾驶系统: 在自动驾驶汽车的开发中,工程师利用海量数据集训练用于目标检测的模型,以识别行人和交通标志。当将迁移学习应用于像 YOLO26 这样的预训练模型时,开发人员通常会使用比初始训练时小得多的学习率。这种“微调”确保了模型能够学习特定驾驶环境(例如雪路与沙漠高速公路)的细微差别,而不会抹去它已经具备的通用特征提取能力。
-
医学诊断成像: 在医学图像分析(例如检测 MRI 扫描中的肿瘤)中,精确度至关重要。这里的高学习率会带来模型跳过区分恶性组织与良性组织的微妙纹理差异的风险。从业者通常会采用一种称为“学习率预热”的技术,将学习率从零逐渐增加到目标值,以稳定训练的早期阶段,确保神经网络权重在开始积极学习之前稳定在配置中。你可以在谷歌机器学习速成课程中阅读更多关于这些策略的内容。
区分相关术语#
将学习率与其他训练参数区分开来非常重要,因为它们通常配置在相同的配置文件中,但用途各不相同:
- 学习率与批次大小: 学习率控制更新的幅度,而批次大小则决定了在发生更新之前处理的训练样本数量。这两者之间存在着密切的关系;通常在增加批次合集大小时,必须按比例调高学习率以维持训练效率,这是大批量训练相关论文中探讨的一个概念。
- 学习率与衰减: 衰减是指随着时间推移系统性减小学习率的策略。调度程序可能会每 30 个周期将学习率降低 10 倍。这有助于模型在早期做出宏观上的概念跳跃,然后在训练后期通过较小的步长来精细化精度。这是Ultralytics Python 软件包中的标准功能。
在 Ultralytics YOLO 中设置学习率#
在使用现代框架时,你可以轻松调整初始学习率(lr0)和最终学习率比例(lrf)。以下是如何使用兼容Ultralytics 平台的客户端为自定义训练运行进行配置的示例。
from ultralytics import YOLO
# Load the YOLO26 model (latest state-of-the-art architecture)
model = YOLO("yolo26n.pt")
# Train the model with a custom initial learning rate
# lr0=0.01 sets the initial rate
# lrf=0.01 sets the final learning rate to (lr0 * lrf)
results = model.train(data="coco8.yaml", epochs=10, lr0=0.01, lrf=0.01)对于高级用户,诸如 LR 查找器(由 fast.ai 普及)之类技术可以通过运行一个简短的试验周期(在该周期中以指数方式增加学习率直到损失发散)来基本实现最佳起始值发现的自动化。掌握这个超参数通常是解锁 AI 项目中SOTA(最新技术)性能的关键。






