能力显著性向量:验证损失与下游能力的缩放定律
缩放定律描述训练计算量与验证损失的关系,但验证损失与下游任务性能存在差距,相同损失的模型可能表现差异显著。现有方法要么忽略数据分布影响,要么依赖特定基准(评估成本高)。因此,能否直接通过计算成本预测下游能力?实验表明,相同计算量下,不同预训练数据分布会导致下游性能差异,故不可行。此外,验证损失与模型能力为何难以关联?传统损失平等对待所有 token,而不同 token 的可学习性和难度不同。
Capability Salience Vector: Fine-grained Alignment of Loss and Capabilities for Downstream Task Scaling Law,ACL 2025,Outstanding Paper
目录
- 背景概述
- 用于下游任务的缩放定律
- 有效的基准预测
- CSV方法
- 预训练数据分布对下游缩放定律建模的影响
- 模型下游缩放定律
- 能力显著性向量
- 实验细节
背景概述
LLM在众多任务中展现出了令人瞩目的性能,但这一成就伴随着巨大的计算代价。为了减轻LLM训练过程中的计算负担,研究人员提出了缩放定律,这一框架可预测模型规模和数据规模的变化对大型语言模型验证损失的影响。这使得研究人员能够利用较小的模型来预测较大模型的验证损失,从而降低超参数调优和反复试验的成本。然而,在实际应用中,模型真实的能力通常通过各种下游基准测试来评估,而验证损失并不总是与这些任务的性能直接相关。所以经常会出现这样的情况:验证损失相近的模型,在下游任务中的表现却存在显著差异
为解决这一问题,部分研究人员选择绕过验证损失,转而专注于直接建立计算资源与任务性能之间的缩放关系。为最大限度减少数据分布偏移带来的影响,他们在所有实验设置中固定预训练数据集,仅调整计算量和模型规模。然而,数据分布偏移的影响不容忽视,因为它们可能对模型在下游任务上的性能产生重大影响(当模型在不同的数据分布上训练时,相同的计算量可能会产生显著不同的结果)
另一类研究侧重于开发能与下游任务性能更好关联的替代指标。例如,Ruan等人(2024)提出了观测缩放定律(OSL),该定律利用开源基准测试结果并应用主成分分析(PCA)来探索模型能力的各个维度。尽管这些方法涵盖了在不同数据分布上预训练的多种模型家族,但它们在很大程度上依赖于所使用基准测试的多样性和范围,这可能会产生高昂的评估成本。
上述讨论确定了两个重要但尚未被充分探讨的问题:
- 基于计算成本直接预测下游能力是否合理?
- 为什么难以在验证损失和模型能力之间建立明确的关系?
为了回答第一个问题,作者探究了不同预训练数据分布对下游任务建模能力的影响。实验表明,在相同的计算预算下,不同的预训练数据分布会导致模型下游能力存在差异。因此,基于计算成本直接预测下游任务性能是不合理的。针对第二个问题,作者重新审视了验证损失这一概念——它是用于评估模型对下一个token预测的累积惩罚的指标。该指标本质上假设所有token对模型训练过程的贡献是均等的。然而,先前的研究已经证明,不同token的可学习性和难度存在差异。
受此启发,提出了能力显著向量(Capability Salience Vector,CSV)的概念,通过为不同token分配不同的重要性权重,来量化下游任务所需的能力。通过计算这些token损失的加权平均值,该指标能够替代原始的验证损失,并且与下游任务性能表现出更强的相关性。此外,该研究中还提出了一种优化算法,可针对任何给定文本,自动生成能力显著向量。
用于下游任务的缩放定律
缩放定律确立了计算量CCC(比如FLOPs)、模型参数NNN、训练token数量DDD分别与验证集交叉熵损失之间的幂律关系。然而,验证损失与下游任务性能之间仍存在差距。近年来的研究试图探究支配下游任务性能的缩放定律:
- Owen(2024)研究了模型缩放在BBH任务(Big-Bench Hard)和MMLU任务(Massive Multitask Language Understanding)上的可预测性,提出下游任务性能遵循S型函数且可被预测。他们的研究结果还表明,随着更多模型被纳入拟合过程,预测误差会减小。
- Ruan等人(2024)提出了一种替代性的观测方法,对公开可用的模型评估结果进行低秩分解,以提取代表模型能力的子维度。这些子维度随后被用于建立将计算成本与下游任务性能关联起来的缩放定律。
- Gadre等人(2024)研究了在特定预训练数据分布上过度训练模型的缩放定律。他们发现验证损失与下游任务性能之间存在幂律关系,表明在给定数据分布上预训练后,模型性能具有可预测性。
然而,上述研究主要关注计算成本与下游任务性能之间的关系,却未涉及这一事实:在相同计算成本下,不同的预训练数据分布可能导致不同的下游性能。Isik等人(2024)探究了预训练数据分布对翻译任务下游性能的影响。他们的研究结果表明,不同的预训练分布会显著影响下游任务的缩放行为,这意味着在评估模型缩放定律时,应当考虑数据分布。
有效的基准预测
随着LLM不断发展,人们已经开发出众多基准测试来评估其多样的能力。为了全面评估一个预训练模型的性能,有必要测量它在各种下游任务上的得分。然而,进行完整的下游评估往往十分耗时,这促使近年来的研究致力于提高其效率。例如,Ye等人(2023)和Perlitz等人(2023)已经尝试减少BBH(Srivastava等人,2022)和HELM(Liang等人,2022)等基准测试中的任务示例数量,以简化评估过程。
近期的研究,如Polo等人(2024)和Kipnis等人(2024)的研究,探索了利用项目反应理论(Lord和Novick,2008;Baker,2001)从开源评估中提取模型特征并压缩验证集。这使得利用这些压缩后的子集重建基准测试分数成为可能。类似地,Pacchiardi等人(2024)采用了特征提取方法,并训练了一个评估器来直接预测单个样本的性能。Zhang等人(2024)证明,结合不同模型家族的任务性能以及额外的模型和任务信息,能够提高预测准确性。然而,这些方法仍然依赖部分数据的准确率指标,且基于下游缩放定律能否直接预测下游任务性能(如准确率)仍不明确。
CSV方法
作者首先探究能否利用计算量或平均token损失直接预测下游任务性能。随后,介绍能力显著向量(Capability Salience Vector,CSV),它会自动为验证集token损失分配不同的重要性权重。这一向量能使token损失与下游任务所需的特定能力实现对齐。
预训练数据分布对下游缩放定律建模的影响
关于下游缩放定律的先前研究主要探讨了是否可以利用预训练的小型模型来预测大型模型在下游任务上的性能。这些研究遵循一种常见的设置,即使用在相同预训练数据分布上训练的小型模型来预测大型模型的性能。
然而,在预训练过程中,研究人员可能需要不断调整数据构成,以比较不同数据分布对模型性能的影响。在这种框架下,应用下游缩放定律需要在不同配置下使用相同的数据分布训练多个小型模型,这使得实验成本显著增加。
在本节中,作者首先研究能否直接利用计算成本对下游缩放定律进行建模。具体而言,以InternLM2.5作为基础架构,在两种差异显著的预训练数据分布上训练了两组模型,这两种数据分布与InternLM2.5的预训练数据来源相同,包括网页数据、代码数据、数学数据及其他特定领域数据集的多样化混合。仅调整了该预训练语料库中不同子集的比例,随后选取不同计算成本水平下的 ckpt 来评估下游性能。
图1展示了在不同计算预算下,两种具有不同训练数据分布的模型在各类下游任务上的性能。观察到,对于Hellaswag和BBH等任务,在相同计算成本下训练的模型,其下游任务性能存在差异。这表明,无法可靠地建立从计算量到下游任务性能的直接函数关系。因此,在预测下游任务性能时,必须考虑模型训练数据分布的差异。
- 图1:展示了不同下游任务中计算量(FLOPs)与性能(准确率)之间的关系,其中红点和蓝点分别表示在两种不同数据分布上训练的模型检查点。在相同的计算预算下,在不同数据分布上训练的模型表现出不同的下游任务性能。
- FLOPs(每秒浮点运算次数)主要与模型相关。它是衡量模型计算复杂度的指标,由模型的结构(如层数、每层神经元数量、参数规模等)决定,反映了模型在计算过程中所需执行的浮点运算总量。
这就引出了一个重要的问题:是否存在一种满足以下条件的合适指标?
- 该指标可提供连续测量结果。
- 该指标能反映数据分布的差异,且可在预训练过程中进行预测。
受传统缩放定律的启发,作者将验证损失视为一个潜在的候选指标。验证损失是连续的,并且可作为模型能力的一种指标。因此,该研究旨在对验证损失与下游性能之间的关系进行建模。为了探究这一点,作者测量了不同开源模型的下游性能及其在验证数据集上的平均token损失。为避免不同模型所用分词器带来的偏差,作者在字符层面对损失计算进行了标准化。
图2展示了验证损失与下游性能之间的关系。观察到,在相同的验证损失下,模型在不同任务中可能表现出不同的下游性能。作者重新审视了验证损失的计算方式。传统的缩放定律通过在数据集层面取平均值来计算验证损失,将所有损失值视为同等重要。然而,不同的损失值在衡量模型特定任务能力方面的贡献可能并不相同。这表明,要有效地对损失进行建模,可能需要一种更精细的方法。
- 图2:平均token损失与下游任务性能之间的关系。
模型下游缩放定律
受Arora和Goyal(2023)研究的启发,作者认为预测不同的token片段需要不同的元能力。这些元能力最终决定了下游任务的性能。传统的缩放定律在对验证损失进行建模时,将所有token视为同等重要。尽管验证损失的期望值能对模型能力提供一个粗略的估计,但它无法准确捕捉损失与下游性能之间的关系。为解决这一问题,作者提出了能力显著向量(Capability Salience Vector)。通过在损失计算中应用简单的线性加权,能够更好地建模损失与下游性能之间的关系。
给定验证集S={Xs}s=1∣S∣S=\{X_{s}\}_{s=1}^{|S|}S={Xs}s=1∣S∣,首先计算每个样本Xs=(x1,x2,...,x∣Xs∣)X_{s}=(x_{1}, x_{2}, ..., x_{|X_{s}|})Xs=(x1,x2,...,x∣Xs∣)的验证损失。接下来,使用能力显著向量(记为W={ws,i}W=\{w_{s, i}\}W={ws,i})对每个token的损失进行线性加权。这使我们能够计算能力得分CmC_{m}Cm,该得分基于验证文本反映了模型的能力:
Cm=−1Nc∑s=1∣S∣∑i=1∣Xs∣ws,ilogp(xi∣x<i)(1)C_{m}=-\frac{1}{N_{c}} \sum_{s=1}^{|S|} \sum_{i=1}^{\left|X_{s}\right|} w_{s, i} \log p\left(x_{i} | x_{<i}\right) \quad (1)Cm=−Nc1s=1∑∣S∣i=1∑∣Xs∣ws,ilogp(xi∣x<i)(1)
其中,NcN_{c}Nc是验证文本的字符数量。然后,使用Sigmoid函数来建模能力得分CmC_{m}Cm与模型下游任务性能(如准确率)之间的函数关系:
At,m=γ+1−γ1+exp(−α(Cm−β))(2)A_{t, m}=\gamma+\frac{1-\gamma}{1+\exp \left(-\alpha\left(C_{m}-\beta\right)\right)} \quad (2)At,m=γ+1+exp(−α(Cm−β))1−γ(2)
其中,α\alphaα和β\betaβ是待拟合的参数,γ\gammaγ表示随机猜测情况下任务的预期性能。
能力显著性向量
由于能力显著向量(Capability Salience Vector)的权重以及参数α\alphaα和β\betaβ都是未知的,作者通过三个步骤来获取能力显著向量的权重。
提取能力显著向量的权重
对于给定的验证集,使用带有评分头的语言模型来获取每个token的能力显著向量权重W={ws,i}W=\{w_{s,i}\}W={ws,i}:
ws,i=fθ(xs,i∣xs,<i)(3)w_{s,i}=f_{\theta}\left(x_{s,i} | x_{s,<i}\right) \quad (3)ws,i=fθ(xs,i∣xs,<i)(3)
其中,θθθ是评分头的参数。评分头通过一个线性层实现,该线性层作用于语言模型的最终隐藏状态,且在优化过程中冻结了语言模型的其他参数。这一步骤可以看作是为每个token分配一个分数,以反映其对整体能力表征的贡献。
拟合下游缩放定律函数
得到能力显著向量后,作者收集给定验证集上的token损失以及不同模型的下游任务性能,以拟合下游缩放定律函数。为此,固定θθθ,并估计下游缩放定律函数的参数α\alphaα和β\betaβ。使用Levenberg-Marquardt算法最小化预测的下游任务性能与观测到的下游任务性能之间的均方误差(MSE)损失:
minα,β∑Modelsm[At,m−A^t,m]2(4)min _{\alpha, \beta} \sum_{Models\thinspace m}\left[A_{t, m}-\hat{A}_{t, m}\right]^{2} \quad (4)minα,βModelsm∑[At,m−A^t,m]2(4)
其中,ttt代表特定下游任务(包括知识能力(MMLU)、推理能力(BBH)、常识能力(Hellaswag)和数学能力(GSM8K)等6个基准测试),mmm代表不同的模型(如Llama-2-7B、Qwen1.5-1.8B等)。AAA代表准确率。
优化能力显著向量
在这一阶段,利用下游缩放定律函数来优化能力显著向量的参数θθθ。具体通过随机梯度下降(SGD)算法最小化预测的下游任务性能与观测到的下游任务性能之间的均方误差(MSE)损失:
minθ∑Modelsm[At,m−A^t,m]2min _{\theta} \sum_{Models\ m}\left[A_{t, m}-\hat{A}_{t, m}\right]^{2}minθModels m∑[At,m−A^t,m]2
作者对这三个步骤的优化过程进行了多次迭代,以选择能实现最佳下游性能预测的参数。这些最优参数被保存下来,用于获取能力显著向量(Capability Salience Vector)并拟合下游缩放定律函数。
- 图3:能力显著向量(Capability Salience Vector)建立了验证交叉熵损失与下游任务性能之间的关系。它将模型的能力量化为token损失的加权和,其中每个token对整体性能的贡献各不相同。
实验细节
使用OpenCompass(Contributors,2023)工具来评估上述模型的下游得分。OpenCompass是一个Python包,支持对各种大型语言模型和数据集进行评估与基准测试。为获取特定验证集上的token交叉熵损失,作者使用了LMDeploy(Contributors,2023)框架。为确保验证损失能更好地反映模型的不同能力,作者从六个验证集中各随机抽取100个样本并混合。此外,还纳入了50个与BBH相关的思维链样本。作者将CMMLU和CEval视为反映相同能力的数据集,因此仅从其中一个数据集中抽样。总体而言,收集了550个样本用于优化能力显著向量(Capability Salience Vector)。该方法仅需使用这550个样本作为验证集来建模下游缩放定律。
作者使用InternLM2.5 1.8B(Cai等人,2024)作为评分模型,将其语言头替换为一个线性层,其后接一个非线性激活函数。在实际操作中,发现增加模型复杂度对最终结果影响甚微。为了高效优化,作者冻结了语言模型的参数,只训练线性层。采用1e-3的学习率进行训练,大多数任务在300步内就收敛到最佳性能(在单个A800上训练1-3小时),这体现了该方法的实际效率。
数据使用情况如下: