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

在人工智能领域,语言模型的预训练方法一直是研究的热点。传统的语言模型预训练方法普遍采用一种均匀的策略,即对所有训练数据中的下一个词进行预测,这种方法被称为因果语言建模(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; 用来设置将客户端请求转发给的后端服务器的主机。 需要模块…

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

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

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; /*当前用户数*…

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…

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…

【博士每天一篇文献-算法】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的对应元素…

分数计算 初级题目

今天继续更题。今天的题目是《第五单元 分数的加减法》初级题目。 定位&#xff1a;题目较为初级&#xff0c;适合预习 参考答案&#xff1a;CACCADACAABACBBCDBCB

Linux文件系统【真的很详细】

目录 一.认识磁盘 1.1磁盘的物理结构 1.2磁盘的存储结构 1.3磁盘的逻辑存储结构 二.理解文件系统 2.1如何管理磁盘 2.2如何在磁盘中找到文件 2.3关于文件名 哈喽&#xff0c;大家好。今天我们学习文件系统&#xff0c;我们之前在Linux基础IO中研究的是进程和被打开文件…

【DevOps】 什么是容器 - 一种全新的软件部署方式

目录 引言 一、什么是容器 二、容器的工作原理 三、容器的主要特性 四、容器技术带来的变革 五、容器技术的主要应用场景 六、容器技术的主要挑战 七、容器技术的发展趋势 引言 在过去的几十年里,软件行业经历了飞速的发展。从最初的大型机时代,到后来的个人电脑时代,…

【Mongodb-01】Mongodb亿级数据性能测试和压测

mongodb数据性能测试 一&#xff0c;mongodb数据性能测试1&#xff0c;mongodb数据库创建和索引设置2&#xff0c;线程池批量方式插入数据3&#xff0c;一千万数据性能测试4&#xff0c;两千万数据性能测试5&#xff0c;五千万数据性能测试6&#xff0c;一亿条数据性能测试7&am…

MySQL-----InnoDB的自适应哈希索引

InnoDB存储引擎监测到同样的二级索引不断被使用&#xff0c;那么它会根据这个二级索引&#xff0c;在内存上根据二级索引树(B树)上的二级索引值&#xff0c;在内存上构建一个哈希索引&#xff0c;来加速搜索。 查看是否开启自适应哈希索引 show variables like innodb_adapti…

JavaScript常见面试题(一)

文章目录 1. JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f;2.数据类型检测的方式有哪些3. 判断数组的方式有哪些4.null和undefined区别5.typeof null 的结果是什么&#xff0c;为什么&#xff1f;6.intanceof 操作符的实现原理及实现7.为什么0.10.2 ! 0.3&…

Fluent固体运动的设置方法(1)

1 概述 固体运动是某些CFD问题中必须要考虑的因素&#xff0c;如风扇的旋转。相关问题可分类如下&#xff1a; 问题类型是否为刚体运动规律是否已知无特定称呼YY六自由度运动问题YN流固耦合问题NN 在 Fluent 中&#xff0c;有多种方法表征固体运动&#xff0c;包括&#xff1…

【医学图像处理】从ADNI中下载样本的MMSE数据

MMSE是什么&#xff1f; 简易精神状态检查&#xff08;MMSE&#xff0c;Mini-Mental State Examination&#xff09;是一种广泛使用的认知功能评估工具。它通常用于临床和研究环境中筛查痴呆症及评估其严重程度。MMSE通过考察患者的多种认知功能来进行评估&#xff0c;包括算术…

深度学习(八)——神经网络:卷积层

一、卷积层Convolution Layers函数简介 官网网址&#xff1a;torch.nn.functional — PyTorch 2.0 documentation 由于是图像处理&#xff0c;所以主要介绍Conv2d。 class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, b…

C++初学者指南第一步---3.输入和输出(基础)

C初学者指南第一步—3.输入和输出&#xff08;基础&#xff09; 1. I/O Streams(I/O流) #include <iostream>int main () {int i;// read value into istd::cin >> i; // print value of istd::cout << i << \n; }数据的来源和目标 …

解决MyBatis获取刚插入数据的ID值

解决MyBatis获取刚插入数据的ID值 Mybatis获取刚插入数据的ID值有很多解决方法&#xff0c;目前采用以下方式进行获取。 添加完数据后直接返回刚添加数据的id // UserDao.java public static void addUser() throws Exception{InputStream resourceAsStream Resources.getR…

绝了!篇篇10万+的AI治愈系插画,完整版项目拆解(附提示词)!

大家好&#xff0c;我是向阳 最近&#xff0c;治愈系插画在小某薯上热度很高&#xff0c;比如这个号&#xff0c;每一篇的笔记数据都不错&#xff0c;2个月时间涨粉7.3万。 然后&#xff0c;我偶然发现&#xff0c;有人把这样的治愈插画用到公某号爆文的配图上&#xff0c;每一…