大模型训练中的课程学习,做的事是把样本按难度排个队,让模型先学简单的、再学复杂的。这个思路来自人类教育:没人一上来就学微积分。放到模型训练上,合理的顺序能让收敛更稳、最终效果更好,这就是课程学习有效的顺序账。
从易到难怎么排
课程学习的实施分三步。进来的是原始训练集和一套难度度量。发生的是排序:按难度把样本分段,训练时先喂易段,再逐步混入难段。出去的是一个训练顺序表,配合训练轮次使用。
难度度量没有统一标准,常见做法有几种:按文本长度分,短的通常简单;按数据来源分,百科类的表述通常比论坛规范;按任务类型分,分类任务通常比生成任务简单。语料质量打分体系成熟后,难度分可以直接复用它的中间特征。
分段数量也是设计项。分太细,喂料切换频繁,每段的数据量都不足以形成稳定学习;分太粗,顺序的意义被稀释。常见做法是三到五段,配合训练轮次逐步放开。
难度信号是什么
难度信号可以来自数据本身,也可以来自模型。数据侧的信号包括长度、生僻词比例、句法复杂度。模型侧的信号更有意思:先用当前模型对所有样本打一次分,损失高的样本对它来说就是难题,这个动态难度比静态指标更贴身。
静态指标和动态信号可以叠加。先用静态指标做粗分,再在粗分内部用模型损失微调顺序,两层信号互相兜底,比单用一种更稳,也避免动态信号在训练早期不准时带偏顺序。
动态难度的用法是滚动重排。每训一段时间,用最新模型重新评估难度,更新后面的喂料顺序。语料配比和课程学习经常配合使用:配比管各类数据的比例,课程管各类内部的先后。
顺序安排改变了什么
顺序的价值体现在训练动力学上。先从简单样本起步,模型快速学到基础模式,损失曲线早期就进入下降通道,这给后续难样本打了底。如果一上来就混入大量难样本,早期损失居高不下,梯度里噪声占比高,收敛反而慢。
代价是前期难样本见得少,模型在难任务上的起步变慢。如果任务本身偏难,比如复杂推理,这个代价可能抵消顺序带来的好处,需要实验对比后再决定,而不是默认先易后难就一定对。
类比地说,这像先学走再学跑。但要注意类比只到这一步为止:人类先易后难依赖认知发展,模型没有认知阶段,顺序改变的是优化路径而非理解能力。梯度消失这类链路问题,课程学习治不了,该用残差连接还得用。
什么时候不适用
课程学习不是万能药。数据难度本身均匀时,排序带来的提升有限,反而增加工程复杂度。任务要求模型尽早见到难例时,比如安全对齐里的红队数据,刻意先喂难题更合理。数据持续流入的增量训练场景,重排成本高,通常只做粗粒度的分段。
另一个反例是难度信号不可靠时。静态指标把长文本一律算难,可能把结构清晰的长教程误判成难题,顺序表反而带偏训练。这时宁可采用随机顺序,也不要强行排课。实践中腾讯元宝和 Kimi 背后的训练细节不公开,但公开论文里课程学习的效果都附带条件,照搬前要先验证自己的数据分布。
排课不是任何时候都划算,这四种情形下不如不排。
| 什么情形 | 为什么排课不灵 | 改怎么做 |
|---|---|---|
| 数据难度本身均匀 | 排序带来的提升有限,反而增加工程复杂度 | 不做,省下这份复杂度 |
| 任务要求尽早见到难例 | 比如安全对齐里的红队数据,刻意先喂难题更合理 | 反过来排,先难后易 |
| 数据持续流入的增量训练 | 重排成本高 | 只做粗粒度的分段 |
| 难度信号不可靠 | 长文本被一律算难,结构清晰的长教程被误判,顺序表反而带偏训练 | 宁可采用随机顺序 |
自查清单:难度分布均匀时排序带来的提升有限;安全对齐类任务宜先见难例;增量训练只做粗分段;难度信号不可靠时宁随机不排课。
聊聊课程学习的常见疑问
- 课程学习一定比随机顺序好吗?不一定,难度分布均匀或难度信号不可靠时,随机顺序反而更稳。
- 难度必须用模型损失来衡量吗?不一定,长度、来源、句法复杂度等静态指标也能用,模型损失只是更贴身的一种。
- 课程学习会增加训练时间吗?会增加排序开销,但通常远小于收敛加速带来的回报,多数场景划算。


