什么是 课程学习(Curriculum Learning)?
课程学习(Curriculum Learning)是一种按照已声明的难度或学习进展,在训练过程中改变样本、任务或模型容量的分布、权重或可用性的策略。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
独立于期望结论定义难度
Difficulty 可以来自领域规则、序列长度、噪声、基线 Loss、Confidence、Disagreement、Success Rate 或 Task Parameter。Static Curriculum 固定顺序,Self-Paced 方法根据当前 Learner 更新样本权重,Teacher 或强化学习策略则自适应调度。不得使用最终测试标签,并应检查代理是否只是编码了类别频率、来源、语言或其他受保护与运营属性。
明确训练节奏与目标分布恢复
课程学习原始论文把逐步变化的训练分布与 Continuation Method 联系起来。起始阈值、Weight Function、阶段时长、Promotion Rule、旧样本 Replay,以及最终阶段是否覆盖完整 Target Distribution,都会改变干预。Curriculum Learning 不等于任意分阶段 Fine-tuning,也不等于只给一个 Prompt 的 Demonstration 排序。
在相同预算下比较调度策略
综合综述总结了预定义、Self-Paced、Teacher-driven 等变体,也指出排序与节奏难以选择。应在相同数据、Update、Token、Optimizer 与停止预算下,比较随机、课程、逆序和 Hard-mining 基线;报告 Learning Curve、最终任务与切片指标、跨 Seed 方差、计算成本、被遗忘的简单案例,以及恢复目标分布后的性能。
主要特点
- 随训练进度改变样本、任务、Loss、环境或模型容量暴露
- 需要明确 Difficulty Measurer 与 Training Scheduler
- 可使用固定专家顺序、模型驱动 Self-Pacing 或学习型 Teacher
- 除非协议另有说明,最终应覆盖声明的目标分布
- 难度代理可能引入类别、人群、来源和时效偏差
- 必须在相同预算下胜过随机、逆序或难例基线
常见用途
- 在模型训练中逐步增加序列长度或推理复杂度
- 随强化学习策略能力提升调度模拟任务
- 先引入可靠伪标签,再逐步加入不确定样本
- 在微调阶段调度干净数据与含噪数据比例
- 验证样本顺序是否改变收敛速度或最终泛化
示例
Loading code...常见问题
课程学习一定是从易到难训练吗?
经典课程采用 Easy-to-hard,但更广义设计可以用固定或自适应策略调度样本、任务、环境、Loss 或模型容量。Hard Example Mining 与 Anti-curriculum 会刻意强调困难案例。应说明实际干预与最终目标分布,而不是只依赖名称。
课程学习与 Self-Paced Learning 有什么区别?
传统课程常由外部 Teacher 或固定规则提供难度;Self-Paced Learning 根据 Learner 当前状态估计样本纳入或权重,并在训练中更新。实际系统经常混合两者,因此需要报告由谁评分难度、何时变化以及如何控制 Pace。
课程学习应该怎样衡量样本难度?
选择与目标技能有关的代理,例如经过验证的任务复杂度、序列长度、噪声、基线 Loss、Disagreement 或环境成功率,并审计其与类别、语言、人群和来源的相关性。比较多种指标,因为低模型 Loss 也可能只表示冗余或记忆。
课程学习会损害模型质量吗?
会。错误排序可能延迟关键案例、强化捷径、扭曲类别基础率或造成遗忘,而且调度会改变优化更新的数量与时间。应在相同样本、Token、Update 和停止规则下比较随机与逆序策略,并检查最终目标分布和人群表现。
怎样评测课程学习?
冻结数据、难度计算、Optimizer、总样本或 Token、Update 数和最终测试集,在多个 Seed 上比较随机、课程、逆序和适用的 Hard-mining Policy。报告 Learning Curve、最终任务与切片指标、计算量、达到阈值的时间、稳定性,以及恢复完整分布后的表现。