选择性语言建模:下一代语言模型训练方法

在人工智能领域,语言模型的预训练方法一直是研究的热点。传统的语言模型预训练方法普遍采用一种均匀的策略,即对所有训练数据中的下一个词进行预测,这种方法被称为因果语言建模(Causal Language Modeling, CLM)。虽然CLM在语言模型的发展中起到了关键作用,但它存在一些固有的局限性。首先CLM没有考虑到不同词对模型学习的重要性可能不同,这导致模型可能在一些对下游任务帮助不大的词上浪费计算资源。其次CLM无法有效过滤掉语料库中的噪声数据,如无关的符号、错误的拼写或者难以预测的模糊词汇,这些都可能对模型的训练造成负面影响。并且CLM在处理大规模数据集时还可能会遇到效率问题,因为它没有针对性地优化模型对数据的吸收和学习。

选择性语言建模(Selective Language Modeling, SLM)正是为了解决这些问题而提出的。SLM的核心优势在于它的针对性和效率。通过使用一个参考模型对预训练数据中的每个词进行评分,SLM能够识别出对模型训练更为重要的词,并集中资源对这些词进行训练。这不仅提高了模型学习的有效性,还减少了不必要的计算开销。SLM通过选择性地忽略那些对当前训练阶段帮助不大的词,使得模型能够更快地收敛,并且在更少的数据上达到与CLM相似或更好的性能。SLM的这种选择机制还有助于减少模型训练过程中的过拟合现象,因为它避免了模型在非目标数据上过度优化。

使用Selective Language Modeling (SLM)和传统的Causal Language Modeling (CLM)对1B和7B大小的语言模型进行持续预训练的结果。SLM在GSM8k和MATH数据集上的平均少量样本准确度比CLM高出超过16%,并且达到基线准确度的速度是CLM的5-10倍
即使经过广泛过滤的预训练语料库仍包含标记级别的噪声。左侧展示了以前的因果语言建模(CLM)对所有标记进行训练,而右侧展示了提出的选择性语言建模(SLM),它有选择地只对有用和干净的标记应用损失

选择性语言建模

选择性语言建模的核心思想是,不是所有词在语料库中对模型训练的贡献都是平等的。在深入探究语言模型预训练的过程中,研究人员对词级损失动态进行了细致的分析,揭示了不同词在训练过程中损失变化的复杂性。分析显示并非所有词在模型学习过程中的重要性是相同的。通过对损失轨迹的观察,词被归类为四种类型:

1、存在一些词,即使在训练的后期,它们的损失依然居高不下,这些词被称为持续高损失词(H→H)。这类词可能包含高度的不确定性或复杂性,使得模型难以准确预测,从而在整个训练过程中损失始终保持较高。

2、有些词在训练初期损失较低,但随着模型的学习,损失不降反升,形成了损失增加词(L→H)。这种情况可能指出模型在处理这些词时遇到了难以克服的困难,导致预测准确性不升反降。

3、与此相对的是损失减少词(H→L),这类词在训练初期损失较高,但随着时间的推移,模型逐渐学会了如何更准确地预测它们,损失随之降低。这表明模型对这些词的理解在训练过程中得到了显著提升。

4、还有一类词的损失始终保持在较低水平,称为一致低损失词(L→L)。这些词对模型来说相对容易预测,模型似乎已经很好地掌握了它们。

预训练期间四类标记的损失变化:持续高损失(H→H)、损失增加(L→H)、损失减少(H→L)、一致低损失(L→L)。(b)和(c)分别展示了L→L和H→H标记在预训练期间损失的波动情况

在实际的观察中,只有少数词显示出损失的明显减少,即从H→L的转变,而大多数词的损失变化不大,属于L→L类别,这表明这些词已经被模型学会。也存在一些词由于高变异性,即使在大量训练后,损失依然波动不定,抵抗收敛,这降低了模型在这些词上的训练效率。这种对词级训练动态的洞察为改进语言模型的预训练方法提供了重要的信息。

基于上述发现,研究者们提出了选择性语言建模(Selective Language Modeling, SLM)这一新颖的训练策略。SLM的核心在于优化训练过程,通过精准地识别并专注于那些对提升模型性能最为关键的词。

首先SLM引入了一个参考模型,该模型在高质量的数据集上进行训练,作为评估标准。这个参考模型充当了评估工具,用来计算预训练语料库中每个词的损失值。通过这种方式,SLM能够量化每个词对于模型学习的贡献度。

接着,SLM在预训练阶段采用了选择性损失函数,与传统的因果语言模型(Causal Language Modeling, CLM)的全面训练方法不同,SLM只对那些与参考模型相比显示出较高额外损失的词进行训练。这意味着模型将集中资源和计算能力在那些难以预测的、对模型性能提升有显著影响的词上。

选择性语言建模(SLM)的三个步骤:训练参考模型、计算预训练语料库中每个标记的损失,以及有选择地训练语言模型,只关注训练和参考模型之间损失差异较大的标记

训练参考模型(Step 1)

研究者们从高质量的数据集中选择一部分来训练一个参考模型。这个参考模型是SLM流程的基础,因为它将用于评估语料库中每个词的重要性。

高质量数据集的选择至关重要,因为它们应该能够代表模型训练的目标分布,即模型最终需要理解和生成的语言类型。

计算每个词的损失(Step 2)

使用训练好的参考模型,研究者们对预训练语料库中的每个词进行评分。这个评分基于参考模型分配给每个词的概率,从而计算出每个词的损失。

损失的计算公式通常是损失函数的负对数似然,即对于每个词,参考模型输出的概率越低,损失就越大。

这一步骤的目的是识别出那些模型当前预测不准确的词,这些词可能是由于复杂性或在训练数据中出现的频率较低。

有选择性地训练语言模型(Step 3)

在识别出高损失的词之后,SLM的第三步是选择性地训练语言模型。这意味着在训练过程中,模型将只关注那些参考模型评分较高的词。

这种选择性训练可以通过调整损失函数来实现,使得只有那些被认为对模型性能提升最有帮助的词才会对模型的参数更新产生影响。

通过这种选择性训练,SLM能够显著提高训练效率,因为它避免了在已经学会的词上进行无效的重复训练,同时也减少了在那些对当前模型性能提升帮助不大的词上的计算浪费。此外,这种方法还有助于降低过拟合的风险,因为它减少了模型在不相关或质量较低的数据上的过度适应。

SLM的选择性训练策略,不仅提高了模型学习的目标性和效率,还为大型语言模型的预训练提供了一种新的优化方向。这种方法的实施,有望在未来的语言模型训练中,带来性能的显著提升和训练成本的大幅度降低。

实验

实验的第一步是构建参考模型,这涉及到使用高质量数据集进行训练,以确保模型能够作为可靠的评估标准。接着,研究者们选定了预训练语料库,这些语料库不仅包括了数学领域的数据,也涵盖了通用领域的数据。在预训练设置中,研究者们详细规定了学习率、序列长度等参数,并选择了适当的硬件配置以支持大规模的模型训练。此外基线设置也被明确,以确保实验结果的可比性。

在数学预训练方面,研究者们展示了使用少量示例(few-shot)进行提示的CoT(Chain of Thought)推理结果。这些结果显示,经过SLM训练的模型在数学任务上表现出了显著的性能提升。工具集成推理结果也表明,SLM训练的模型在解决需要工具辅助的数学问题时,同样展现出了优越的性能。

不同模型在数学任务上的少量样本CoT推理结果,包括在GSM8K、MATH等数据集上的表现

进一步的实验在通用领域进行,研究者们在80亿个通用标记上持续训练了Tinyllama-1B模型。实验结果证明了SLM在通用预训练中的有效性,与直接持续预训练相比,在15个基准测试中平均提高了6.8%,这一结果凸显了SLM在提升模型泛化能力方面的潜力。

在通用领域持续预训练Tinyllama-1B模型时,使用SLM和CLM方法的性能对比

在没有高质量参考数据的情况下,研究者们探索了使用SLM进行自引用的可能性。实验结果表明,即使在这种条件下,SLM仍然能够提升模型在下游任务中的性能,平均提高了3.3%,这一发现为SLM在资源受限情况下的应用提供了新的思路。

使用OpenWebMath (OWM)训练参考模型,并在同一语料库上进行预训练时,使用不同评分函数选择标记的结果

为了深入理解SLM的工作原理和性能提升的原因,研究者们进行了消融研究和分析。他们分析了选择标记的损失与下游任务性能之间的关系,发现SLM选择的标记与模型在下游任务上的性能提升有直接的联系。此外,研究者们还探讨了SLM选择的标记类型,揭示了SLM倾向于选择那些对模型性能提升最为关键的词。

SLM和CLM方法在预训练期间选定/未选定标记的损失,以及在MetaMath数据集上的下游任务损失

通过这些实验,研究者们不仅验证了SLM的有效性,还为未来的研究提供了宝贵的见解和方向,特别是在如何进一步优化模型训练和提高模型性能方面。选择性语言建模(SLM)为大型语言模型的预训练提供了一种新的视角。通过专注于对模型训练影响最大的词,SLM不仅提高了训练效率,还提升了模型在下游任务上的性能。这项研究为未来如何从词级角度改进大型语言模型的预训练提供了宝贵的见解,并为人工智能领域的发展开辟了新的道路。随着技术的不断进步,我们可以期待SLM将在更多领域展现出其强大的潜力。

论文链接:https://arxiv.org/abs/2404.07965

Github 地址:https://github.com/microsoft/rho

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx配置详细解释:(6)实现反向代理服务器,动静分离,负载均衡

目录 单台反向代理 proxy_pass后面加不加/的问题: 反向代理动静分离 反向代理负载均衡 作为代理服务器是当客户端访问代理服务器时,代理服务器代理客户端去访问真实web服务器。proxy_pass; 用来设置将客户端请求转发给的后端服务器的主机。 需要模块…

Web前端弱势因素:深入探讨与挑战解析

Web前端弱势因素:深入探讨与挑战解析 在快速发展的Web前端领域,尽管技术日新月异,但仍存在一些固有的弱势因素。这些因素不仅影响了开发效率和用户体验,也带来了诸多挑战。本文将深入探讨Web前端的弱势因素,并从四个方…

【C++11 之rbegin()、rend() 反向迭代器原理介绍及 重点-限制情况】与正向迭代器对比(互换放在下一p)

C11 引入了许多新特性,其中包括对 STL(Standard Template Library)的改进。在 STL 容器中,rbegin() 和 rend() 是两个新的成员函数,它们分别返回指向容器最后一个元素的反向迭代器(reverse iterator&#x…

你不知道的HTML5应用程序缓存:深度揭秘与进阶实践

在HTML5的众多革新之中,应用程序缓存(AppCache)常常被视为一项被忽视的宝藏。尽管近年来Service Workers逐渐取代了它的位置,AppCache在特定场景下仍展现了其独特的魅力与价值。本文旨在深入挖掘HTML5应用程序缓存的隐藏功能、常见…

Android入门第69天-AndroidStudio中的Gradle使用国内镜像最强教程

背景 AndroidStudio默认连接的是dl.google的gadle仓库。 每次重新build时: 下载速度慢;等待了半天总时build faild;build到一半connection timeout;即使使用了魔法也难以一次build好;这严重影响了我们的学习、开发效率。 当前网络上的使用国内镜像的教程不全 网上的教程…

C++ shared_ptr

shared_ptr共享它指向的对象,多个shared_ptr可以指向(关联)相同的对象,在内部采用计数机制来实现。 当新的shared_ptr与对象关联时,引用计数增加1。 当shared_ptr超出作用域时,引用计数减1。当引用计数变为…

YOLOv8改进 | 注意力机制 | 添加适用于遥感图像的LSKblock注意力——【二次创新+完整代码】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 遥感目标检测的研究主要集中在改进方向边界框的表示上,而忽略了遥感场景中独特的先验知识。 这类先验知识对于准确检测微小目标至关重要,因为这些目标往往需要更大的上下文信息才能被正确识别。提出的 LSKNet …

根据身份证获取生日、性别、年龄

当type1时获取出生日期,type2时获取性别,type3时获取年龄 /** 当type1时获取出生日期,type2时获取性别,type3时获取年龄* */ function IdCard(IdCard, type) {if (type 1) {//获取出生日期let birthday IdCard.substring(6, 10) "-" IdCard.substring(10, 12) …

正式环境下的历史数据迁移方案,你知道几个?

一、历史数据库 MySQL 数据库可以很好地支撑海量的 OLTP(Online Transaction Processing)的系统,但是对于海量的互联网业务来说,数据量是非常巨大的。 假设一天 10 亿笔交易,每笔交易至少需要有一条记录,用于记录该笔交易,这就是通常所谓的流水数据。再假设一笔流水占…

C++100行超简单系统

非常好用&#xff0c;小白也可以自己修改 先来看图片&#xff1a; 用法附在代码里了&#xff01; #include <bits/stdc.h> #include <windows.h>using namespace std;struct users {string name;string num; bool f; } u[10000];int now_users 0; /*当前用户数*…

springboot接入springai-openAi代理和智谱ai调用示例

这里写自定义目录标题 背景配置具体代码总结 背景 一说到调用openAI的api或者做一些小项目&#xff0c;大部分例子都是python或者node实现的&#xff0c;后来发现spring出了对于openai的支持框架&#xff0c;所以尝试用一用。这里是SpringAI的地址&#xff0c;有兴趣的可以去官…

20240615在WIN11下的串口调试助手的下载安装以及使用

20240615在WIN11下的串口调试助手的下载安装以及使用 2024/6/15 18:06 百度&#xff1a;串口调试助手 blob:https://apps.microsoft.com/df934d29-fd7a-4873-bb6b-a4ab5a7934c9 串口调试助手 Installer.exe 收发的LOG&#xff1a; rootok3588:/# ./uart_test /dev/ttyS0 11520…

反射,枚举以及lambda表达式

【本节目标】 1. 掌握反射 2. 掌握枚举 3. 掌握lambda表达式使用 反射 1 定义 Java的反射&#xff08;reflection&#xff09;机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调…

C++ bfS

岛屿的最大面积 . - 力扣&#xff08;LeetCode&#xff09; 1.刚开始mn又加了int 2.bfs里符合条件了&#xff0c;不push&#xff0c;&#xff0c;&#xff0c;在写什么几把 class Solution { public:int dx[4] {0, 0, 1, -1};int dy[4] {1, -1, 0, 0};bool vis[50][50];int…

从零制作一个ubuntu的docker镜像

上次分享了一下怎么制作centos的镜像&#xff0c;今天给大家分享一下ubuntu的制作方法。 准备ubuntu环境 如果你有Ubuntu环境的话最好&#xff0c;可以直接打包&#xff0c;我用的是CentOS系统&#xff0c;所以需要借助debootstrap工具。 yum -y install epel-release yum -y…

【博士每天一篇文献-算法】Progressive Neural Networks

阅读时间&#xff1a;2023-12-12 1 介绍 年份&#xff1a;2016 作者&#xff1a;Andrei A. Rusu,Neil Rabinowitz,Guillaume Desjardins,DeepMind 研究科学家,也都是EWC(Overcoming catastrophic forgetting in neural networks)算法的共同作者。 期刊&#xff1a; 未录用&am…

调教LLaMA类模型没那么难,LoRA将模型微调缩减到几小时

简介&#xff1a; 调教LLaMA类模型没那么难&#xff0c;LoRA将模型微调缩减到几小时 LoRA 微调方法&#xff0c;随着大模型的出现而走红。 最近几个月&#xff0c;ChatGPT 等一系列大语言模型&#xff08;LLM&#xff09;相继出现&#xff0c;随之而来的是算力紧缺日益严重。虽…

python如何对list求和

如何在Python中对多个list的对应元素求和&#xff0c;前提是每个list的长度一样。比如&#xff1a;a[1&#xff0c;2&#xff0c;3]&#xff0c;b[2&#xff0c;3&#xff0c;4]&#xff0c;c[3&#xff0c;4&#xff0c;5]&#xff0c;对a&#xff0c;b&#xff0c;c的对应元素…

C语言运算中的临时匿名变量

一&#xff1a;C语言和汇编的区别&#xff08;汇编对应机器操作&#xff0c;C语言对应逻辑操作&#xff09; &#xff08;1&#xff09;C语言叫高级语言&#xff0c;汇编语言叫低级语言 &#xff08;2&#xff09;低级语言的意思是汇编语言和机器操作相对应&#xff0c;汇编语言…

Linux echo输出命令以及重定向符号

echo命令 使用他可以输出指定内容&#xff0c;和编程语言中的 print( )差不多&#xff0c;都是将文字打印输出&#xff0c;该命令无参数。 输出文本 echo "123" 123输出命令执行结果 echo pwd /home/dpc重定向符 > 将左侧的命令结果&#xff0c;覆盖写入右侧…