技术博客

课程学习在预训练中的应用:先易后难在大模型上是否仍然有效

第 112 / 147 篇 · 2026-01-19 · ai · 预训练课程学习训练策略

Bengio 2009 年的课程学习论文是深度学习史上被引用最多的训练技巧之一:先喂简单样本、逐渐增加难度,模型收敛更快、泛化更好。直觉无可辩驳——人类就是这么学习的。但把同样的思路搬进万亿 token 的 LLM 预训练,效果却近乎为零:多篇消融显示精心设计的课程与随机打乱相比,下游指标差异在噪声范围内。这篇文章分析课程起作用的数学条件,解释它在 LLM 预训练里为什么失灵,以及少数仍然有效的例外场景。

课程学习为什么应该有效:非凸优化的直觉

课程学习的理论动机来自非凸损失景观的结构。随机训练下,参数在早期会被高噪声的难样本带向混乱方向;先学简单样本则让优化轨迹先落入损失景观中"宽而浅"的盆地(这类盆地通常对应可泛化的解),再逐步向难样本适配。Weinshall 等人(2018)给过一个形式化论证:如果"难度"满足一定的传递性结构,课程学习可以把有效样本复杂度从 $O(n)$ 降到 $O(\log n)$ 级别——指数级的加速,这就是它能持续被引用的原因。

self-paced learning(Kumar et al., 2010)把课程进一步自动化:让模型自己决定下一步学什么,损失函数里加一个样本权重变量 $v_i \in [0,1]$,联合优化

$$ \min_{\theta, \boldsymbol v} \sum_i v_i \, \ell_i(\theta) - \frac{1}{K} \sum_i v_i, $$

$K$ 控制每轮激活的样本比例。$v_i$ 的解析解是 $v_i = 1$ 当 $\ell_i < 1/K$、否则 $v_i = 0$——模型只学当前 loss 低于阈值的样本,阈值随训练自动收紧。优雅的构造,但它暴露了一个关键依赖:课程有效的前提是"loss 是难度的可靠代理"。

课程学习在 LLM 预训练失灵的三个断点 断点一:难度无可靠度量 句子困惑度 ≠ 下游价值 wiki 难句可能无用 代码符号简单却高价值 loss 排序 ≠ 教学顺序 断点二:热启动后难定义 self-paced 依赖初始 loss 大模型 loss 起点已很低 阈值 1/K 失去区分度 continue pretrain 无从排课 断点三:规模抹平差异 T 步内每个 token 被均匀访问多次 先易后难 ≈ 均匀采样的 长时间极限 数据量大时课程被稀释 仍然有效的例外:长上下文扩展(阶段固定、难度 = 长度,信号干净)

为什么放进 LLM 预训练就失灵

第一,自然语言没有可靠的难度定义。 经典课程学习面对的是分类、回归任务,"难样本"有明确含义(远离决策边界、标签噪声大)。预训练语料的"难度"怎么定?按句子困惑度排,模型没训练前的困惑度由 tokenizer 和词频主导,和"对下游有价值"几乎无关——一段满是稀有术语的维基百科难句,可能比一段流畅的 Reddit 口水帖价值高得多。长度作为难度代理稍好一些,但也只是弱相关。没有排序信号,课程就退化成随机打乱。

第二,self-paced 的阈值机制依赖"初始 loss 有区分度",而大模型从极低 loss 起步。 continue pretrain 场景里基座模型对任何语料的初始 loss 都已经压得很低,阈值 $1/K$ 把所有样本要么全激活要么全不激活,机制本身失效。小模型热启动时略好,但区分度仍然主要来自领域偏移而非可课程化的难度结构。

第三,也是最重要的,规模稀释了课程效应。 理论上的指数加速假设"模型在课程初期只接触简单样本"——但预训练里每个 token 在 $T$ 步内被均匀访问多次,任何课程安排都只是把访问顺序从均匀改成轻微偏斜,长时间的极限行为两者趋同。Muennighoff 等人的消融实验(多领域课程、长度课程、困惑度课程三种设计)在 1B 到 8B 规模的模型上都没有稳定超过随机基线,差距在统计噪声内。这个零结果本身是重要证据:当优化器(AdamW + warmup + cosine)已经足够稳健时,数据顺序对收敛路径的影响远小于理论在玩具设定下的预言。

仍然有效的例外:阶段式长上下文扩展

课程学习在预训练里有一个无可争议的胜场:上下文长度扩展。做法固定——先在 4k 长度上训练主体阶段,再切到 32k/128k 做中期扩展,最后退火。这里"难度"的定义干净(序列长度)、排序信号可靠(长序列的注意力分布与短序列统计上不同)、阶段边界清晰,三个断点都不存在。长上下文课程有效的机制与通用课程学习不同:它不是靠优化动力学,而是靠位置编码的外推行为——RoPE 在训练长度之外的注意力分布会退化(本系列位置编码篇有完整分析),先用短序列把语言能力训好,再在长序列上微调位置相关的少数参数,比从头长训省一个数量级的算力。把这叫"课程学习"其实是借了名字,本质是课程形式的课程学习理论在这里恰好对症。

与此相关的还有退火阶段的配比切换(下一篇):末期提高高质量数据占比。它在形式上也是课程——但依据的是"低学习率期对数据分布的记忆更持久"这一事实,而不是难度排序,机制完全不同。区分这两类"类课程"操作很重要:前者改变的是输入分布的组成,后者改变的是学习率的衰减形状,把两者混为一谈会导致错误的归因。

与数据配比的边界

课程学习和数据配比(前面文章)解决的是同一个问题的两个时间尺度:配比回答"整个训练期各领域各占多少",课程学习回答"这些领域应该按什么顺序出现"。规模实验给出的答案是:配比重要、顺序不重要。原因也清楚——AdamW 的指数滑动平均让优化器对数据顺序的记忆只有 $1/(1-\beta_2)$ 步量级(约几百到几千步),超过这个窗口,顺序信息被平均掉,只有比例留下来。这个机制解释和消融结果互相印证:凡宣称课程有效的工作,窗口都小于或接近这个尺度;凡是全训练期尺度的课程,效果都与基线无差。

小结

课程学习在经典设定下的理论收益(有效样本复杂度的指数下降)依赖三个前提:难度可排序、初始 loss 有区分度、课程窗口覆盖训练主体。LLM 预训练里三个前提都不成立——自然语言的难度没有可靠代理,基座模型初始 loss 太低,万亿 token 的规模把任何顺序偏斜平均掉。消融实验的稳定零结果与优化器记忆窗口的理论估算一致。课程形式在长上下文扩展和退火配比中仍然有效,但驱动机制是位置编码外推和学习率衰减,与课程学习理论无关,归因时别搞混。