在人工智能领域,语言模型的预训练方法一直是研究的热点。传统的语言模型预训练方法普遍采用一种均匀的策略,即对所有训练数据中的下一个词进行预测,这种方法被称为因果语言建模(Causal Language Modeling, CLM)。虽然CLM在语言模型的发展中起到了关键作用,但它存在一些固有的局限性。首先CLM没有考虑到不同词对模型学习的重要性可能不同,这导致模型可能在一些对下游任务帮助不大的词上浪费计算资源。其次CLM无法有效过滤掉语料库中的噪声数据,如无关的符号、错误的拼写或者难以预测的模糊词汇,这些都可能对模型的训练造成负面影响。并且CLM在处理大规模数据集时还可能会遇到效率问题,因为它没有针对性地优化模型对数据的吸收和学习。
选择性语言建模(Selective Language Modeling, SLM)正是为了解决这些问题而提出的。SLM的核心优势在于它的针对性和效率。通过使用一个参考模型对预训练数据中的每个词进行评分,SLM能够识别出对模型训练更为重要的词,并集中资源对这些词进行训练。这不仅提高了模型学习的有效性,还减少了不必要的计算开销。SLM通过选择性地忽略那些对当前训练阶段帮助不大的词,使得模型能够更快地收敛,并且在更少的数据上达到与CLM相似或更好的性能。SLM的这种选择机制还有助于减少模型训练过程中的过拟合现象,因为它避免了模型在非目标数据上过度优化。
选择性语言建模
选择性语言建模的核心思想是,不是所有词在语料库中对模型训练的贡献都是平等的。在深入探究语言模型预训练的过程中,研究人员对词级损失动态进行了细致的分析,揭示了不同词在训练过程中损失变化的复杂性。分析显示并非所有词在模型学习过程中的重要性是相同的。通过对损失轨迹的观察,词被归类为四种类型:
1、存在一些词,即使在训练的后期,它们的损失依然居高不下,这些词被称为持续高损失词(H→H)。这类词可能包含高度的不确定性或复杂性,使得模型难以准确预测,从而在整个训练过程中损失始终保持较高。
2、有些词在训练初期损失较低,但随着模型的学习,损失不降反升,形成了损失增加词(L→H)。这种情况可能指出模型在处理这些词时遇到了难以克服的困难,导致预测准确性不升反降。
3、与此相对的是损失减少词(H→L),这类词在训练初期损失较高,但随着时间的推移,模型逐渐学会了如何更准确地预测它们,损失随之降低。这表明模型对这些词的理解在训练过程中得到了显著提升。
4、还有一类词的损失始终保持在较低水平,称为一致低损失词(L→L)。这些词对模型来说相对容易预测,模型似乎已经很好地掌握了它们。
在实际的观察中,只有少数词显示出损失的明显减少,即从H→L的转变,而大多数词的损失变化不大,属于L→L类别,这表明这些词已经被模型学会。也存在一些词由于高变异性,即使在大量训练后,损失依然波动不定,抵抗收敛,这降低了模型在这些词上的训练效率。这种对词级训练动态的洞察为改进语言模型的预训练方法提供了重要的信息。
基于上述发现,研究者们提出了选择性语言建模(Selective Language Modeling, SLM)这一新颖的训练策略。SLM的核心在于优化训练过程,通过精准地识别并专注于那些对提升模型性能最为关键的词。
首先SLM引入了一个参考模型,该模型在高质量的数据集上进行训练,作为评估标准。这个参考模型充当了评估工具,用来计算预训练语料库中每个词的损失值。通过这种方式,SLM能够量化每个词对于模型学习的贡献度。
接着,SLM在预训练阶段采用了选择性损失函数,与传统的因果语言模型(Causal Language Modeling, CLM)的全面训练方法不同,SLM只对那些与参考模型相比显示出较高额外损失的词进行训练。这意味着模型将集中资源和计算能力在那些难以预测的、对模型性能提升有显著影响的词上。
训练参考模型(Step 1):
研究者们从高质量的数据集中选择一部分来训练一个参考模型。这个参考模型是SLM流程的基础,因为它将用于评估语料库中每个词的重要性。
高质量数据集的选择至关重要,因为它们应该能够代表模型训练的目标分布,即模型最终需要理解和生成的语言类型。
计算每个词的损失(Step 2):
使用训练好的参考模型,研究者们对预训练语料库中的每个词进行评分。这个评分基于参考模型分配给每个词的概率,从而计算出每个词的损失。
损失的计算公式通常是损失函数的负对数似然,即对于每个词,参考模型输出的概率越低,损失就越大。
这一步骤的目的是识别出那些模型当前预测不准确的词,这些词可能是由于复杂性或在训练数据中出现的频率较低。
有选择性地训练语言模型(Step 3):
在识别出高损失的词之后,SLM的第三步是选择性地训练语言模型。这意味着在训练过程中,模型将只关注那些参考模型评分较高的词。
这种选择性训练可以通过调整损失函数来实现,使得只有那些被认为对模型性能提升最有帮助的词才会对模型的参数更新产生影响。
通过这种选择性训练,SLM能够显著提高训练效率,因为它避免了在已经学会的词上进行无效的重复训练,同时也减少了在那些对当前模型性能提升帮助不大的词上的计算浪费。此外,这种方法还有助于降低过拟合的风险,因为它减少了模型在不相关或质量较低的数据上的过度适应。
SLM的选择性训练策略,不仅提高了模型学习的目标性和效率,还为大型语言模型的预训练提供了一种新的优化方向。这种方法的实施,有望在未来的语言模型训练中,带来性能的显著提升和训练成本的大幅度降低。
实验
实验的第一步是构建参考模型,这涉及到使用高质量数据集进行训练,以确保模型能够作为可靠的评估标准。接着,研究者们选定了预训练语料库,这些语料库不仅包括了数学领域的数据,也涵盖了通用领域的数据。在预训练设置中,研究者们详细规定了学习率、序列长度等参数,并选择了适当的硬件配置以支持大规模的模型训练。此外基线设置也被明确,以确保实验结果的可比性。
在数学预训练方面,研究者们展示了使用少量示例(few-shot)进行提示的CoT(Chain of Thought)推理结果。这些结果显示,经过SLM训练的模型在数学任务上表现出了显著的性能提升。工具集成推理结果也表明,SLM训练的模型在解决需要工具辅助的数学问题时,同样展现出了优越的性能。
进一步的实验在通用领域进行,研究者们在80亿个通用标记上持续训练了Tinyllama-1B模型。实验结果证明了SLM在通用预训练中的有效性,与直接持续预训练相比,在15个基准测试中平均提高了6.8%,这一结果凸显了SLM在提升模型泛化能力方面的潜力。
在没有高质量参考数据的情况下,研究者们探索了使用SLM进行自引用的可能性。实验结果表明,即使在这种条件下,SLM仍然能够提升模型在下游任务中的性能,平均提高了3.3%,这一发现为SLM在资源受限情况下的应用提供了新的思路。
为了深入理解SLM的工作原理和性能提升的原因,研究者们进行了消融研究和分析。他们分析了选择标记的损失与下游任务性能之间的关系,发现SLM选择的标记与模型在下游任务上的性能提升有直接的联系。此外,研究者们还探讨了SLM选择的标记类型,揭示了SLM倾向于选择那些对模型性能提升最为关键的词。
通过这些实验,研究者们不仅验证了SLM的有效性,还为未来的研究提供了宝贵的见解和方向,特别是在如何进一步优化模型训练和提高模型性能方面。选择性语言建模(SLM)为大型语言模型的预训练提供了一种新的视角。通过专注于对模型训练影响最大的词,SLM不仅提高了训练效率,还提升了模型在下游任务上的性能。这项研究为未来如何从词级角度改进大型语言模型的预训练提供了宝贵的见解,并为人工智能领域的发展开辟了新的道路。随着技术的不断进步,我们可以期待SLM将在更多领域展现出其强大的潜力。
论文链接:https://arxiv.org/abs/2404.07965
Github 地址:https://github.com/microsoft/rho