大模型训练过程中主动学习和课程学习的全面对比
在大模型训练中,数据是燃料,但找到“对的”燃料是成功的关键。您提到的两个方面——主动学习 和课程学习——正是为了解决“数据有效性”问题而诞生的关键技术。
下面我将为您详细分析这两大类方法,包括它们的子分类、核心思想、代表性方法以及各自的优缺点。
1. 训练过程中的主动学习
核心思想: 模型“主动”地选择对自己最有价值的未标注数据进行标注,然后将这些数据加入训练集。其核心假设是:通过有选择地学习少量高质量样本,可以达到甚至超过使用全部数据训练的性能,从而极大降低数据标注成本。
主动学习的流程通常是一个循环:当前模型 → 选择策略(从未标注池中挑选数据)→ 专家/标注器标注 → 加入训练集 → 更新模型。
主动学习的主要方法和分类
主要可以根据其选择样本的策略进行分类:
1.1 基于不确定性的采样
这是最直观和常用的一类方法。其思想是:模型最不确定的样本,可能就是最能帮助它学习的样本。
-
方法:
- 最小置信度: 选择模型预测概率最大的类别,但其置信度最低的样本。
x* = argmin_x P_θ(ŷ | x)
,其中 ŷ 是模型预测的最可能类别。 - 边缘采样: 选择模型预测中,第一名和第二名概率差距最小的样本。
x* = argmin_x [P_θ(ŷ₁ | x) - P_θ(ŷ₂ | x)]
。这比最小置信度更精细。 - 熵: 选择预测类别概率分布熵最大的样本。
x* = argmax_x - Σ_i P_θ(y_i | x) log P_θ(y_i | x)
。熵越大,表示模型越“混乱”,不确定性越高。
- 最小置信度: 选择模型预测概率最大的类别,但其置信度最低的样本。
-
优点:
- 直观有效: 直接针对模型当前的决策边界,能快速提升模型在边界附近的判别能力。
- 计算高效: 只需要模型的一次前向传播和概率输出,计算开销相对较小。
- 广泛适用: 适用于各种任务,如分类、序列标注等。
-
缺点:
- 对噪声敏感: 可能会选择到标注噪声大或本身有歧义(甚至是错误)的样本,这些样本可能对学习无益。
- 忽略数据分布: 可能只关注边界点,而忽略了整个数据空间的代表性。选出来的可能都是一些奇怪的“离群点”。
- 冷启动问题: 在模型训练初期,模型本身就不准,其“不确定性”的指导意义可能很差。
1.2 基于多样性的采样
这类方法关注于确保所选样本能够很好地代表整个未标注数据池的分布。
-
方法:
- 聚类法: 首先对未标注池中的所有样本进行聚类(如K-Means),然后在每个簇中选取代表性样本(如靠近簇中心的样本)。
- 核心集法: 目标是从未标注池中选择一个子集(核心集),使得在这个子集上训练的模型性能与在整个数据集上训练的模型性能尽可能接近。这通常通过优化覆盖整个特征空间的样本点来实现。
-
优点:
- 覆盖全面: 能确保训练数据分布与真实数据分布一致,避免模型产生偏见。
- 减少冗余: 避免选择大量相似的、信息量重复的样本。
-
缺点:
- 可能与模型需求脱节: 选出的样本虽然是分布的代表,但不一定是模型当前最需要学习的“难点”。
- 计算成本高: 对整个数据池进行聚类或核心集选择,计算量通常比基于不确定性的方法大。
- 依赖特征质量: 聚类效果严重依赖于所使用的特征表示的质量。
1.3 委员会查询法
也称为查询-by-委员会。其思想是:组建一个“委员会”(多个模型),如果委员会成员对某个样本的预测分歧很大,说明这个样本很有价值。
-
方法:
- 投票熵: 计算委员会中所有模型对某个样本预测结果的投票分布的熵。
- 平均KL散度: 计算委员会中每个模型预测分布与平均预测分布之间的KL散度,再取平均。
x* = argmax_x (1/C) Σ_{c=1}^C D_KL(P_θc || P_avg)
。
-
优点:
- 性能强大: 理论上非常优雅,能够综合考虑不确定性和模型之间的差异,通常能选出信息量非常大的样本。
- 缓解冷启动: 比单一模型的不确定性更鲁棒。
-
缺点:
- 计算成本极高: 需要训练和维护多个模型,在大模型场景下几乎不可行。
- 实现复杂: 如何构建一个有意义的“委员会”是一个挑战(例如,使用不同初始化、不同架构或不同数据子集训练的模型)。
1.4 基于模型变化的方法
这类方法评估一个样本如果被加入训练集,会对模型本身产生多大的影响。
-
方法:
- 期望模型变化: 估计一个未标注样本被标注并加入训练后,模型参数变化的期望值。
- 梯度提升: 选择那些如果被标注,其梯度方向与当前训练方向最不一致的样本。
-
优点:
- 直接目标导向: 直接以优化模型本身为目标,理论上非常有效。
-
缺点:
- 计算上最昂贵: 涉及梯度的计算和假设性训练,对于大模型来说完全不切实际。
- 实现极其复杂: 需要近似方法,稳定性差。
大模型中的主动学习挑战与演进:
传统主动学习方法在大模型上面临巨大挑战,因为其依赖多轮迭代和标注,而大模型的标注成本(尤其是需要专家)和时间成本太高。因此,当前研究更多转向:
- 与提示学习/微调结合: 在特定下游任务的微调阶段使用主动学习,选择最有价值的样本进行标注。
- 利用模型自身不确定性: 使用 dropout 作为近似贝叶斯推断,来估计不确定性。
- 自监督预筛选: 先用自监督任务(如掩码语言建模)对海量未标注数据进行“价值”评估,再进行筛选。
2. 课程学习
核心思想: 模仿人类的学习过程,让模型从容易的样本开始学起,逐步过渡到更复杂、更困难的样本。其核心假设是:一个结构化的、由易到难的学习顺序,可以引导模型找到更优的泛化解,并加速收敛。
课程学习的主要方法和分类
主要可以根据其设计课程的依据(难度衡量标准) 进行分类:
2.1 基于数据属性的课程学习
难度由数据本身固有的、无需模型参与的属性决定。
-
方法:
- 句子/序列长度: 在NLP任务中,先训练短句,再训练长句。
- 图像分辨率/复杂度: 在CV任务中,先训练低分辨率、背景简单的图片,再训练高分辨率、背景复杂的图片。
- 词汇表频率: 先训练由高频词构成的样本,再引入低频词样本。
-
优点:
- 简单直观: 规则明确,易于实现,计算成本为零。
- 稳定可靠: 不依赖于模型当前的动态,课程计划是固定的。
-
缺点:
- 与任务目标可能无关: “长度短”不一定等于“容易”。一个短句可能包含非常复杂的逻辑关系。这种启发式规则可能与模型的实际学习难点脱节。
- 需要领域知识: 需要人工设计有效的难度衡量标准。
2.2 基于训练动态的课程学习
难度由模型在训练过程中的反馈动态决定。
-
方法:
- 损失/误差驱动: 一个样本的损失越大,通常认为它对当前模型越难。可以优先选择损失小的样本(Easy First),或者优先选择损失大的样本(Hard First,也称为“反课程”)。
- 自信心驱动: 与损失类似,使用模型预测的置信度来衡量难度。
- 遗忘次数: 记录一个样本被模型“学会”(预测正确)后又“忘记”(预测错误)的次数。遗忘次数高的样本通常是难以学习的核心样本。
-
优点:
- 自适应性强: 难度是相对于当前模型状态而言的,更符合模型的实际学习进程。
- 与性能直接相关: 直接反映了模型的学习状况。
-
缺点:
- 计算开销: 需要在整个训练过程中持续评估每个样本的难度(如计算损失)。
- 可能不稳定: 模型初期的损失/置信度可能不可靠,可能导致课程安排不合理。
- 可能放大噪声: 如果数据有噪声,高损失的样本可能就是噪声样本,优先学习它们会有害。
2.3 基于模型预测的课程学习
可以看作是主动学习与课程学习的结合,使用一个教师模型(可能是当前模型本身,或一个预训练模型)来评估样本难度。
-
方法:
- 使用预训练模型打分: 用一个在相关任务上预训练好的大模型为所有样本计算难度分数(如不确定性、损失),然后据此排序。
- 自 paces 学习: 模型自己决定学习的步调。例如,为每个样本计算一个“适应性分数”,只有当一个样本的损失低于某个阈值(说明模型已经准备好学习它)时,它才会被纳入当前批次的训练中。
-
优点:
- 更加智能: 利用了更强大的模型或更精巧的机制来设计课程。
- 效果通常更好: 能更准确地反映样本的真实难度和学习价值。
-
缺点:
- 实现复杂: 如自 paces 学习的阈值等超参数需要调整。
- 依赖外部模型: 如果使用预训练模型打分,该模型的质量至关重要。
课程调度策略
除了如何衡量难度,如何从易到难地过渡(调度策略) 也同样重要。
- 离散调度: 将数据分为几个明确的难度桶,按顺序训练。例如,先训练最简单的20%数据,再训练接下来的20%,以此类推。
- 连续调度: 使用一个随时间变化的函数
λ(t)
∈ [0,1] 来控制难度。在训练步数t
,只选择难度分数小于λ(t)
的样本进行训练,λ(t)
从0单调增加到1。 - 混合调度: 在每个训练批次中,同时包含容易和困难的样本,但随着时间的推移,困难样本的比例逐渐增加。
总结与对比
特性 | 主动学习 | 课程学习 |
---|---|---|
核心目标 | 降低标注成本,选择信息量最大的样本 | 优化学习轨迹,加速收敛、提升泛化,从易到难学习 |
数据需求 | 需要一个大的未标注数据池 | 需要一个已标注的(或可自监督评估的)数据集 |
关键操作 | 查询-标注-更新的循环 | 设计难度度量和调度策略 |
与模型关系 | 高度依赖当前模型状态来选择样本 | 可以依赖模型状态,也可以完全独立于模型 |
主要挑战 | 标注延迟、冷启动、计算成本、在大模型中迭代成本高 | 难度定义的主观性、调度策略的超参数敏感、可能陷入局部最优 |
在实际的大模型训练中,这两种思想常常被结合使用。例如:
- 在预训练阶段,可以使用课程学习的思想,先喂给模型更“干净”、更简单的文本数据,再逐步引入复杂、多模态的数据。
- 在针对特定下游任务进行微调时,可以使用主动学习从大量未标注数据中筛选出最有价值的样本,请专家进行标注,而这些筛选出的样本本身也可以按照课程学习的顺序喂给模型。
最终,选择哪种方法或组合,取决于具体的任务、数据状况和计算资源。