引言
试想一下教孩子读书的过程。你不会一开始就扔给他们一份复杂的法律合同或莎士比亚的一页著作。相反,你会从简单的句子开始: “猫坐在垫子上 (The cat sat on the mat) 。”一旦他们掌握了基础知识,你才会逐渐引入更复杂的语法、词汇和句式结构。这种直观的循序渐进——先学简单的,再学难的——正是人工智能中课程学习 (Curriculum Learning, CL) 的基础。
然而,在自然语言处理 (NLP) 领域,我们往往忽略了这种直觉。我们倾向于以随机批次的方式训练模型,将简单的短语与极其复杂、充满歧义的句子混合在一起。
这种方法在序列标注 (Sequence Labeling) 任务 (如词性标注 POS 或命名实体识别 NER) 中问题尤为严重。现代模型试图通过整合“异构知识”——如词典、句法图或 N-gram 等外部数据——来提高准确性。虽然这些额外知识有所帮助,但它使输入数据变得混乱,也使模型变得沉重。结果就是?训练不仅计算成本高昂,而且速度缓慢。
在这篇文章中,我们将深入探讨一篇提出解决方案的研究论文: 双阶段课程学习 (Dual-stage Curriculum Learning, DCL) 框架。研究人员证明,通过策略性地对数据难度进行排序,并随着模型的学习调整课程,我们可以更快地训练复杂模型,并获得更好的性能。
挑战: 异构性与复杂性
在理解解决方案之前,我们需要了解瓶颈所在。序列标注涉及为文本序列中的每个元素分配一个标签 (如“名词”或“人名”) 。
为了达到最先进的效果,研究人员经常利用外部知识增强基础神经网络。例如,中文分词 (CWS) 模型可能会查阅字典中的词汇或分析句子的句法结构。虽然这很有益,但它增加了两层难度:
- 数据异构性 (Data Heterogeneity) : 输入不再仅仅是文本;它是文本加上图数据、词典匹配和句法树。
- 模型复杂性 (Model Complexity) : 为了处理这些额外数据,模型需要额外的模块 (如图神经网络或复杂的注意力机制) ,这增加了参数数量。
这种组合导致了“训练缓慢”的问题。模型难以收敛,因为它试图从第一个 epoch 开始就学习复杂的关系。
解决方案: 双阶段课程学习 (DCL)
这篇论文的核心贡献是一个将课程学习分为两个不同阶段的框架: 数据级 (Data-level) 和模型级 (Model-level) 。

如图 1 所示,该框架的运作方式如下:
- 数据级 CL (教师) : 在主模型 (学生) 开始学习之前,一个更简单的“教师”模型会扫描整个数据集。它提供了一个初始的难度排名。这解决了“冷启动”问题——学生还不知道什么是难的或容易的,所以教师提供了一个初步的路线图。
- 模型级 CL (学生) : 当学生开始在简单数据上训练时,它开始形成自己对什么是困难的“看法”。框架会根据学生当前的状态动态地重新排列剩余数据的等级。
这种双重方法确保了课程不是静态的。随着学生变得更聪明,课程也在演变。
训练过程
训练遵循特定的算法 (论文中的算法 1) 。以下是简化的流程:
- 教师阶段: 训练一个基础模型几个 epoch。用它将数据集从 简单 \(\rightarrow\) 困难 进行排序。
- 初始化: 给学生模型一小部分最简单的数据 (由比例 \(\lambda_0\) 定义) 。
- 循环:
- 在当前的“简单”子集上训练学生模型。
- 使用学生模型评估剩余 (未见过的) 数据的难度。
- 重新排列剩余数据的等级。
- 使用调度器增加 \(\lambda\) (允许的数据量) 。
- 将下一批“最简单”的剩余样本添加到训练集中。
- 重复直到所有数据都被使用。
调度器
我们应该多快引入更难的数据?如果我们太快,模型会不知所措。如果我们太慢,训练将花费很长时间。作者使用一个根函数 (Root Function) 来控制节奏,由 \(\lambda\) (使用数据的比例) 表示。

在这个方程中:
- \(\lambda_0\) 是数据的起始百分比 (例如,最简单的 30%) 。
- \(t\) 是当前的 epoch。
- \(E_{grow}\) 是达到完全使用数据集所需的 epoch 数。
平方根函数确保模型在早期有足够的时间来消化新数据,随着训练的进行,摄入速度会变慢。
衡量难度: 什么让句子变“难”?
课程学习的成功取决于一个问题: 你如何定义难度?
如果你错误地对数据进行排序 (例如,先给出最难的例子) ,模型可能会完全失败。作者探索了几种指标:
1. 简单基线
- 句子长度: 假设更长的句子更难。虽然通常如此,但一个带有歧义词的短句可能比一个长而简单的句子更难。
- 随机: 无课程 (标准方法) 。
2. 基于置信度的指标
- TLC (Top-N Least Confidence,前 N 个最低置信度) : 查看模型最不自信的 token。
- MNLP (Maximum Normalized Log-Probability,最大归一化对数概率) : 使用预测标签的概率来衡量置信度。
3. 赢家: 贝叶斯不确定性 (BU)
作者提出,衡量难度的最佳方法是不确定性 (Uncertainty) 。 如果模型对某个预测不确定,那么该样本对于当前模型状态来说就是“难”的。
为了衡量这一点,他们使用了 蒙特卡洛 Dropout (Monte Carlo Dropout) 。 在标准神经网络中,你进行一次前向传播以获得预测。使用蒙特卡洛 Dropout,你将输入通过模型运行 \(K\) 次,每次随机丢弃 (关闭) 不同的神经元。
如果模型是自信的,无论哪些神经元被关闭,它每次都会给出大致相同的预测。如果它是不确定的,预测将会有很大的差异。
第 1 步: 期望值 首先,他们近似计算给定输入 \(x_i\) 时 token \(y_i\) 在 \(K\) 次运行中的平均概率:

第 2 步: 方差 接下来,他们计算这 \(K\) 个预测之间的方差 (分歧) 。高方差意味着高不确定性。

第 3 步: 序列评分 序列标注关乎整个句子,不仅仅是一个词。作者结合了句子方差的两个视角:
- 平均方差: 模型对句子的平均不确定程度如何?

- 最大方差: 句子中最令人困惑的部分是什么? (即使是一个非常难的词也会让整个句子变得困难) 。

第 4 步: 最终得分 使用贝叶斯不确定性 (BU) 指标计算的句子最终难度得分 (\(S\)) 是这两者之和:

这个指标允许学生模型说: “我现在对这句特定的话非常困惑,所以把它留到后面再说。”
注: 为了完整起见,以下是作者也测试过的基线指标 TLC 和 MNLP 的方程,尽管它们的效果不如 BU。
*TLC (最低置信度) : *

*MNLP (对数概率) : *

实验与结果
这真的有效吗?研究人员在三个数据集上测试了 DCL 框架: CTB5, CTB6 和 PKU , 涵盖了中文分词 (CWS) 和词性标注 (POS) 。他们将 DCL 应用于两个不同的复杂 SOTA 模型 (McASP 和 SynSemGCN) 。
性能提升
表 1 中的结果显示了一个清晰的趋势。使用 DCL 训练的模型 (特别是使用 BU 指标) 始终优于基线。

数据中的关键要点:
- DCL vs. 无 CL: 标准模型 (带有“-”的行) 始终被 DCL 变体击败。
- BU vs. 其他: 贝叶斯不确定性 (BU) 指标在几乎每个类别中都取得了最高的 F1 分数 (粗体高亮) 。它优于像“长度”这样的简单指标以及像“TLC”这样的其他置信度指标。
速度与效率
主要目标之一是降低训练成本。消融实验 (论文中的表 2) 显示,使用 DCL 显著缩短了训练时间。
- 标准训练: 393 分钟。
- DCL 训练: 287 分钟。
这相当于训练时间减少了约 27% , 同时实现了更高的准确性。这是因为模型快速学会了基础知识,而在准备好之前没有浪费时间在困难的例子上挣扎。
学习曲线分析
为了直观地展示为什么 BU 效果更好,作者绘制了前 10 个 epoch 开发集上的 F1 分数。

在图 2 中,请看紫色的线( BU )。它上升最快并保持在顶部。
- 随机 (蓝色) 是最慢的。
- MNLP (绿色) 和 长度 (橙色) 很早就进入了平台期。
- BU (紫色) 在恰当的时间选择了对模型最有益的样本,导致了更陡峭的学习曲线。
泛化到其他任务
这种方法是否仅适用于中文分词?作者在命名实体识别 (NER) 任务上进行了测试,使用了中文 (Weibo, Note4) 和英文 (CoNLL-2003) 数据集。

如上所示,采用 BU 指标的 DCL 框架 (底行) 优于标准 BERT 模型和带有简单课程学习 (长度) 的 BERT。这证明了该框架在不同的序列标注任务和语言中都具有鲁棒性。
结论
这篇题为“An Effective Curriculum Learning for Sequence Labeling Incorporating Heterogeneous Knowledge”的研究提出了一个令人信服的论点: 对待 AI 训练应更像对待人类教育。
通过实施双阶段课程学习框架,我们可以缓解异构数据和复杂架构带来的困难。用于初始化的“教师”和用于动态调整的“学生”相结合,创造了一个强大的反馈循环。此外,使用贝叶斯不确定性作为难度指标被证明远优于像句子长度这样的简单启发式方法。
对于 NLP 领域的学生和从业者来说,结论很明确:
- 顺序很重要: 随机批处理并不总是最优的。
- 动态更好: 对模型来说什么是“难”的会随着它的学习而改变;你的课程应该反映这一点。
- 不确定性很有用: 衡量模型不知道什么,是指引其训练的强大信号。
这种方法不仅产生了更高的 F1 分数,还节省了大量的计算资源——这对现代深度学习来说是一个双赢的局面。
](https://deep-paper.org/en/paper/2402.13534/images/cover.png)