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

Curriculum Learning

课程学习会先用较简单的样本训练模型,再逐步加入较难的样本,并通过难度分数和节奏函数进行控制。

课程学习是一种机器学习训练策略,按照有意义的顺序(通常从易到难)提供示例,而不是完全随机地均匀抽样。它就像学校的课程安排,让神经网络先从干净样本中学习宽泛、简单的模式,再接触含糊、杂乱或嘈杂的样本。Bengio 等人于 2009 年将这一理念引入深度学习,认为从简单样本开始有助于优化非凸损失函数,使其收敛到更好的极小值;他们报告称,该方法显著提升了形状识别和语言建模任务的泛化能力。

课程学习的工作原理#

课程学习需要两个组成部分,Hacohen 和 Weinshall将它们称为评分函数和进度函数。评分函数会按难度对训练数据排序,可依据对象大小、遮挡或句子长度等人工启发式规则、预训练教师模型的置信度,或正在训练的模型的损失。进度函数决定较难的示例以多快的速度加入模型的训练样本池,例如先从最简单的 20% 开始,再线性增加到整个数据集。下面的代码片段使用 scikit-learn,通过教师模型为一个玩具数据集评分,并在逐渐扩大的易到难样本池上训练学生模型:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression, SGDClassifier

# A toy dataset with 10% flipped labels, so some samples are genuinely hard
X, y = make_classification(n_samples=2000, n_features=20, flip_y=0.1, random_state=0)

# Scoring function: a teacher's confidence in each true label, sorted easiest first
teacher = LogisticRegression(max_iter=1000).fit(X, y)
confidence = teacher.predict_proba(X)[np.arange(len(y)), y]
order = np.argsort(-confidence)

# Pacing function: start with the easiest 20% and add 20% more each epoch
student = SGDClassifier(random_state=0)
for epoch in range(5):
    pool = order[: int((0.2 + 0.2 * epoch) * len(order))]
    student.partial_fit(X[pool], y[pool], classes=[0, 1])
    print(f"Epoch {epoch}: {len(pool)} samples, mean teacher confidence {confidence[pool].mean():.2f}")

样本池从 400 个样本扩大到 2,000 个样本;随着最后、难度最高的 20% 样本在最后一个轮次加入,教师模型的平均置信度从 0.99 降至 0.89。

自步学习让模型根据当前损失自行构建课程,无需教师模型;这是 Soviany 等人的综述中介绍的主要课程学习类别之一。每一轮中,模型已经能较好处理的样本会加入训练池,损失阈值则逐渐提高,直到所有样本都被纳入。

课程学习何时有帮助#

课程学习带来的好处没有直觉预想的那么常见。在数千次训练运行中,Wu、Dyer 和 Neyshabur发现,课程学习在标准图像基准上的收益微乎其微;在逐渐扩大的样本池中随机排序数据,效果与从易到难排序相当。但在训练时间预算有限或标签存在噪声时,课程学习确实能改善结果,而实践者最常在这两种情况下使用它。

实际应用#

在用于机器人的强化学习中,随着智能体能力提升,课程学习会逐步提高任务难度。OpenAI 通过自动领域随机化,训练机械手解魔方:每当策略在当前范围内表现足够好,就扩大仿真物理特性和外观的取值范围。

在计算机视觉中,目标检测课程可以从无遮挡的大目标开始,之后再加入小目标、拥挤场景或光线较差的场景。Ultralytics YOLO26 训练也会随着时间调整重点:它的端到端损失会在每个轮次逐步将权重从密集的一对多检测头转向 nms=False 使用的一对一检测头,而 close_mosaic=10 会在最后 10 个轮次关闭 mosaic、mixup、CutMix 和 copy-paste 增强,让训练最终使用看起来像真实输入的图像。对于医学图像分析,训练可以从专家标注人员意见一致的扫描图像开始,之后再加入有歧义的样本;这适用于课程学习最能发挥作用的标签噪声场景。

  • 持续学习:持续学习会随时间加入新任务或新的数据分布,同时必须避免遗忘旧任务。课程学习则会重新排列单个固定任务中的数据。
  • 主动学习:主动学习会选择要送去标注的未标注样本;课程学习则会排列已有标签的样本。
  • 迁移学习:迁移学习先在大型通用数据集上预训练,再针对不同的目标任务进行微调,因此任务本身会在不同阶段发生变化。
  • 困难负样本挖掘:困难样本挖掘重点关注模型最容易出错的样本,这与先易后难的课程学习相反。用于 Fast R-CNN 检测器的在线困难样本挖掘(OHEM)只会对每张图像中损失最高的区域提议进行反向传播。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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