Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Learning Rate

学习率控制训练期间每次权重更新的幅度。内容涵盖学习率过高为何会导致发散、过低为何会导致停滞,以及预热、衰减计划和调优。

学习率是决定每个训练步骤中模型权重更新幅度的超参数。梯度下降会计算损失函数的梯度;梯度指向损失增长最快的方向,并据此按 w ← w − η × gradient 更新每个权重,其中 η(eta)是学习率。步长是它的同义词,代码中通常将其称为 lr。合适的学习率能让神经网络快速收敛到较好的解;不合适的学习率则会导致训练发散或进展缓慢。因此,Leslie Smith 的周期性学习率论文将其称为最值得调优的超参数,尤其适用于深度网络。

过高、过低与恰到好处#

学习率需要在速度和稳定性之间权衡:

  • 过高:每一步都会越过最小值。损失会振荡、跳变或不断增长,最终变成 NaN,训练也会发散。
  • 过低:每一步对权重的改动都很小。损失下降缓慢,训练需要更多轮次才能收敛;如果训练预算固定,训练结束时模型会欠拟合。
  • 设置合适:损失稳定下降,并最终在最小值附近趋于平稳。

下面的 PyTorch 脚本从相同的初始点出发,使用四种学习率来最小化损失 w²:

import torch

# Minimize loss = w**2 (lowest at w = 0) from the same start with four learning rates
for lr in (0.01, 0.1, 0.9, 1.1):
    w = torch.tensor(5.0, requires_grad=True)
    optimizer = torch.optim.SGD([w], lr=lr)
    path = []
    for step in range(20):
        optimizer.zero_grad()
        loss = w**2
        loss.backward()
        optimizer.step()  # w = w - lr * gradient
        path.append(w.item())
    print(f"lr={lr}: first steps {[round(v, 2) for v in path[:3]]}, after 20 steps w={path[-1]:.3f}")

学习率为 0.01 时,20 步后权重仅从 5 缓慢降至 3.338;学习率为 0.1 时,权重降至 0.058。学习率为 0.9 时,权重每一步都会改变符号(−4.0、3.2、−2.56),但仍会收敛至 0.058;学习率为 1.1 时,每一步的越界幅度都会增大,权重最终升至 191.688。对于二次函数,只有当学习率小于 2 除以损失函数的曲率(即二阶导数)时,梯度下降才保持稳定。w² 的曲率为 2,因此这里的上限恰好为 1.0,而学习率为 0.5 时一步就能到达最小值。对于真实网络,损失最陡方向决定的也是这类上限,因此适用于某个模型或批次大小的学习率,可能会导致另一个模型发散。

学习率调度策略#

训练过程中很少会从头到尾使用同一个学习率。调度策略会随时间改变学习率:

  • 预热:从较小的学习率开始,在最初几个轮次或迭代中逐步提高,从而防止最初几次迭代中幅度较大且不稳定的梯度破坏训练稳定性。
  • 阶梯衰减:在指定轮次或验证损失进入平台期时,将学习率除以一个固定系数,通常为 10。
  • 线性衰减与余弦衰减:平滑地将学习率降至较小的最终值。余弦退火沿半个余弦波变化,而带有热重启的变体会在每个新周期开始时将学习率跳回较高值。
  • 周期策略和单周期策略:训练期间在较低值和较高值之间调整学习率。

较大的前期步长能让权重快速接近较好的区域,较小的后期步长则使权重稳定在某个最小值附近,而不是来回振荡。YOLO26 在 Ultralytics 中训练 从 lr0 开始,在 warmup_epochs(默认值为 3)期间预热,然后线性衰减至 lr0 * lrf,或按照余弦曲线衰减至 cos_lr=True。使用默认的 optimizer="auto" 时,训练器会自行选择优化器和初始学习率:迭代次数超过 10,000 次时使用学习率为 0.01 的 MuSGD,否则使用学习率根据类别数量调整的 AdamW,因此只有在明确设置优化器时,lr0 才适用:

from ultralytics import YOLO

# 加载预训练的 YOLO26 nano 模型
model = YOLO("yolo26n.pt")

# 显式指定优化器后 lr0 才会生效;学习率沿余弦曲线衰减至 lr0 * lrf
results = model.train(data="coco8.yaml", epochs=10, optimizer="SGD", lr0=0.01, lrf=0.01, cos_lr=True)

选择初始值#

常见的初始学习率是:随机梯度下降(SGD)搭配动量时为 0.01 到 0.1,Adam 优化器为 0.001,这是 Adam 论文推荐的默认值。微调预训练模型时,学习率要比从头开始训练时更小,因为较大的步长会覆盖使迁移学习奏效的特征。

同一篇周期学习率论文中的学习率范围测试,在 fastai 中封装为学习率查找器,可以通过一次短暂运行找到合适的值。它会在记录损失的同时,在每个小批次后提高学习率;有效范围是损失下降最快、但尚未开始爆炸的区间。

  • 优化算法:使用学习率的更新规则。Adam 等自适应优化器会根据每个权重自身的梯度历史来调整步长,但每个步长仍会乘以一个全局学习率。
  • 动量:一个独立的超参数,它将上一次更新的一部分加到当前更新中,从而平滑优化路径,并增大一致方向上的有效步长。
  • 权重衰减:一种正则化项,每次更新都会将权重本身向零收缩;学习率衰减则会随着时间推移缩小步长。
  • 批量大小:每次梯度计算所平均的样本数。较大的批量能降低梯度噪声,也能容忍较大的学习率;批量大小增加 k 倍时,线性缩放规则会将学习率乘以 k。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来