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 增强,让训练最终使用看起来像真实输入的图像。对于医学图像分析,训练可以从专家标注人员意见一致的扫描图像开始,之后再加入有歧义的样本;这适用于课程学习最能发挥作用的标签噪声场景。










