LLMs——扩展数据受限的语言模型解决方案

概述

在自然语言处理(NLP)领域,大型语言模型的发展一直是研究的热点。这些模型通过增加参数数量和训练数据量来提升性能,但这种增长趋势是否会有一个极限?实际上,研究者们已经注意到,为了有效地训练这些拥有海量参数的语言模型,所需的训练数据量也同样庞大。
以Gopher模型为例,它拥有2800亿个参数,而Chinchilla模型虽然只有700亿个参数,但由于其训练数据量是Gopher的四倍,因此在性能上更胜一筹。这表明,单纯的参数数量增长并不一定能够带来性能上的提升,除非我们能够提供相应增长的、高质量的训练数据。
这种现象可以通过“缩放规则”(Scaling Laws)来解释,它描述了模型规模和性能之间的关系。缩放规则指出,为了实现性能上的提升,我们需要按照特定的比例增加模型的参数数量和训练数据量。然而,这种增长模式在实际应用中可能会遇到瓶颈,因为可用的高质量数据是有限的,而且模型规模的增加也会带来计算资源和效率上的挑战。
例如,MT-NLG 是一个拥有 580 亿个参数的大型语言模型,在应用于龙猫缩放定律时,可能需要在 30 TB 的文本上进行训练。换句话说,要想通过增加模型参数数量来获得无限好的性能,所需的数据量可能远远超过互联网上现有的可训练文本数据集。
这里介绍的论文基于这些可能性,提出了语言模型在训练数据数量有限时的数据约束扩展法则。此外,本文还提出了一种在数据有限的情况下提高语言模型性能的方法。

源码地址:https://github.com/huggingface/datablations
论文地址:https://arxiv.org/pdf/2305.16264.pdf

分配和回报

在考虑语言模型的缩放法则时,分配和回报是重要的概念。扩展法则是这样一条法则:"语言模型中可以增加哪些内容来提高语言模型的性能?其背景是希望通过优化有限计算资源的分配(Allocation)来最大化投资回报(Return),从而提高语言模型的性能。

举个形象的例子,子弹头列车的速度需要提高。换句话说,如果将越来越多的资金用于改进新干线的车体和发动机,速度就会提高。然而,预算是有限的。他们不确定应该投入多少资金来改进新干线车身(减少空气阻力)或改进新干线电机(提高电机输出功率)。因此,他们希望了解新干线速度、新干线车体改进和新干线电机改进之间的关系,并做出最佳预算分配,以便在当前预算有限的情况下获得最大的速度改进效果。

子弹头列车速度的提高→语言模型性能(预测准确性)的提高",“金钱→计算资源”,如果再联想到 "车身空气阻力→模型参数数量 "和 “电机输出功率→训练数据数量”,那么这就是语言模型的缩放定律。

问题是:随着计算资源的增加,语言模型的性能能提高多少?在给定计算资源的限制下,模型参数数量和训练数据数量的最佳分配是什么?问题是

因此,如果计算资源的预算越多,基本模型和语言模型的预测准确率就会越高,但对于每种预算,模型参数和训练数据数量的最佳值是多少?这就是缩放法则。因此,在缩放法则的背后,存在着这样一个优化问题。

缩放规则

以往的研究假设数据取之不尽,用之不竭。

因此,在背景优化问题(等式 1)中,对训练数据的数量没有限制。

等式 1.传统缩放定律背后的最小化问题。

在公式 1 中,预测误差 L(L 越小,语言模型的性能越好)是需要最小化的函数,它取决于模型参数 N 的数量和训练标记 D 的数量。在计算资源为 C 的约束条件下,多少个模型参数 N 和多少个训练数据 D 能使 L 最小化?这就是最小化问题。

计算资源数量的计量单位是 “FLOPs”。FLOPs "是衡量计算机计算速度的单位。FLOPs 值越高的计算机运算速度越快。对于需要高级计算的任务(如游戏或科学模拟)来说,这是一个重要的性能指标,因为 FLOPs 似乎更像是计算速度的衡量标准,而不是计算资源的衡量标准,这似乎有点不妥。

就目前的情况而言,当只有一台速度较慢的计算机时,过多的模型参数和过多的训练数据将无法实际完成学习过程。那么,在只有一台慢速计算机的情况下,模型参数数量和训练数据数量的合适设定值是多少,才能在实际计算时间内达到最大预测精度呢?这或许值得考虑。

以往的研究预测,语言模型因计算资源输入而产生的性能提升效应(Return)与训练语言模型所用计算资源的平方成正比。根据这一假设,为了与实际实验数据相匹配,它与多少平方成正比?比例系数是多少?

计算资源分配的最佳平衡(Allocation)大致是指在不断增加的训练数据数量和模型参数数量之间平均分配。

拟议的数据约束缩放

为了研究如何充分利用有限的数据,本文提出了一种缩放规则,该规则施加了有限数据和计算资源的限制。

技术要点 1. 将训练代币总数分解为唯一训练代币数和迭代次数,并查看迭代次数的新投资回报率

在所提出的数据限制缩放规则中,栗鼠缩放规则中的训练数据数量 D 被重新定义为训练标记总数 D,以深化数据限制下的考虑。换句话说,该定义不再简单地看与所给训练数据数量的相关性,而是将多次训练的同一数据也算作训练标记数。

然后,训练标记总数 D 被分解为唯一训练标记数 U_D 和迭代次数 R(epoch 数 - 1)。迭代次数是一个数字,表示在深度学习的训练过程中使用了整个训练数据的多少次迭代。一旦全部训练数据用完,则算作一个epoch。一般来说,epoch 越多,给定训练数据的预测准确率就越高。另一方面,过多的epoch会导致对训练数据的过度训练和对未知数据的预测性能低下。以往研究中的缩放规则只考虑了迭代次数 R=0。本文的新颖之处在于研究了 R > 0 的情况,即 R 的投资回报率。

对于模型参数个数 N,为了表达的一致性,拟合一个唯一标记所需的基本模型参数个数为 U_N,该赋值的迭代次数为 R_N。

技术要点 2.设置唯一训练代币的数量上限

在传统的栗鼠缩放定律中,只有计算资源受到限制。在数据约束下的缩放定律中,唯一训练标记 U_C 有一个新的预算 D_C。因此,在公式 1 所示的最小化问题中增加了新的唯一训练标记数 U_D ≤ 唯一数据预算 D_C 约束。

公式 2.数据受限缩放规则背后的最小化问题。

为了与实际实验数据相匹配,N 和 D 的幂的比例系数是多少?比例系数是多少?

数据约束缩放规律

介绍了数据约束缩放定律与实际实验数据拟合的主要结果。

图 1 显示了对训练数据进行迭代训练(重复训练)时的计算资源投资回报。

图 1:训练数据迭代训练期间计算资源的投资回报。

在图 1 中,横轴是标记数(历时),纵轴是语言模型的测试误差(越小性能越好)。橙色实线是根据数据约束缩放规则预测的语言模型测试误差。橙色虚线是假设标记数都是唯一标记(新数据)时的测试误差。

从图中可以看出,在 4 个 epochs 之前,对相同数据的重复训练与添加新数据具有相同的性能提升效果;从 4 个 epochs 到 40 个 epochs,性能提升效果迅速下降;40 个 epochs 之后,准确率提升效果消失。从 4 个 epoch 到 40 个 epoch,性能提升效果迅速下降;40 个 epoch 之后,准确度提升效果消失。

图 2 显示了训练数据迭代训练过程中计算资源的最佳分配值。

图 2.训练数据迭代训练过程中计算资源的最佳分配。

蓝色虚线是计算资源数量相同时的结果。黑线是代币数为所有唯一代币(新数据)时的最优分配预测,红线是根据数据约束缩放规律得出的最优分配预测。蓝色虚线与黑线的交点和蓝色虚线与红线的交点是在给定相同计算预算的情况下,有数据限制和无数据限制(迭代学习)的最优分配之间的差异。

从图中可以看出,在数据受限的情况下,作为计算资源的分配平衡,增加历元数比增加模型参数数更好。这是与传统的栗鼠缩放规则的不同之处。

数据补充

数据受限缩放规则表明,即使独特数据有限,增加历时次数也能在一定程度上提高性能。但同时也表明,增加历时次数对性能的提高是有限度的。因此,本文提出了一种补充独特数据不足的方法。

图 3:独特的数据完成方法。

如图 3 所示,除了目前所述的对唯一数据的迭代学习(重复)外,我们还提出了一种通过填充程序代码(填充代码)和对唯一数据进行排序(过滤)来进行迭代学习的方法。

顾名思义,"用代码填充 "就是在缺乏自然语言文本数据的情况下为程序提供代码。

从字面上理解,过滤也意味着对分类后的数据进行学习。在这种情况下,我们提出了两个过滤器:重复过滤器(Deduplicate)和复杂性过滤器(Perplexity):重复过滤器去除重复的文本,而复杂性过滤器只收集对语言模型的预测具有高置信度的文本。(Perplexity 是一个指标,perplexity 越小,语言模型预测的可信度就越高。例如,如果有两个句子,A:"The cat is curled up in the kotatsu "和 B:“The cat is curled up on the apple”,那么更有可能的句子是 “The cat is curled up in the kotatsu”。因此,句子 A 的 PERPLEXITY 要小于句子 B。)

评估结果

独特数据完成方法的评估结果如图 4 所示。

图 4:补充方法的评估结果。

纵轴为 19 项任务的平均性能,横轴为数据预算。模型参数数为 42 亿,唯一令牌总数为 840 亿。横轴上 100% 的数据预算指的是 840 亿个代币。图中每一点都是使用不同种子训练模型五次的平均值,标准偏差以阴影显示。

用代码填充的效果

图中紫线表示对训练数据进行迭代训练的结果,红线表示用 python 代码代替迭代训练的结果。在数据预算较低时,没有性能提升效果,导致性能下降。当数据预算较大时,给出 python 代码会有性能提升,但性能提升效果不稳定。至少似乎没有性能下降的副作用。

论文报告了添加 python 代码的效果,显示了在 WebNLG 和 bAbI 任务上性能的显著提高,其中 WebNLG 是将结构数据(如 Taro Nippon,生日,2000_01_01)转化为句子的生成任务,而 bAbI 是逻辑推理。我们假设,学习 python 代码可能提供了随时间跟踪状态的能力,而这正是这些任务所必需的。

论文指出,通过在 "代码填充 "中加入程序代码并进行 4 次历时迭代训练,将数据量增加一倍,使训练标记总数增加了 8 倍,而这一训练标记总数与唯一标记数量一样有效。

过滤的效果

图中的星星显示的是对数据进行分类后反复训练的结果。虽然看不清楚,但白色的星星是 Perplexity 过滤器的结果,橙色的星星是 Deduplicate 过滤器的结果。在这个基准测试中,Deduplicate 过滤器似乎没有任何改进。另一方面,Perplexity 筛选器显示出了一些改进。

该论文认为,使用重复数据过滤器(Deduplicate filter)后效果没有改善,可能是由于以前的研究曾报告过数据重复对语言模型产生负面影响的案例,而且以前研究中的基准可能是有效的。

从根本上说,过滤器的有效性背后的逻辑首先在于,它们通过排除这些异常高的数据或不可能的句子,解决了出现次数异常多的句子或一般不可能的句子的过度拟合问题,降低了一般句子的处理能力

论文指出,只有在噪声数据集中加入滤波器,才能提高性能。

总结

在本文所述的论文中,提出了一种使用有限训练数据的语言模型性能改进规则。结果表明,即使使用相同的训练数据,迭代训练也能将性能提高到大约四个历元,这与添加不同训练数据的效果类似。

关于模型参数数和训练代币总数的优化分配,结果表明,在计算资源相同的情况下,减少模型参数数和增加训练代币总数比传统的缩放法更好。

为了有效利用有限的文本数据集,还有人建议,不仅应在同一数据上反复训练程序代码,而且应将程序代码作为训练数据,并对数据进行排序。从这次实验的结果来看,建议只对有噪声的数据集进行数据排序,基本上,在同一数据上进行迭代学习,并将程序编码也作为训练数据,会更有效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

npm常用的命令大全(2024-04-21)

nodejs中npm常见的命令 npm主要是node包管理和发布的工具。 npm官网网址:npm | Homehttps://www.npmjs.com/官网英文文档: npm DocsDocumentation for the npm registry, website, and command-line interfacehttps://docs.npmjs.com/about-npm官网中文文…

我的读书摘记《点燃孩子的学习动力:关于儿童学习兴趣的真相》

德韦克认为乔丹的经历揭示了那些最卓越的学习者身上的一个秘密:人的天赋,是可以不断发展的!不管早期的天赋如何,人终将不断超越自己,发展自己的天赋。 思维方式决定了学习的成功与否!这也意味着&#xff0…

软考-系统集成项目管理中级--信息(文档)和配置管理

本章历年考题分值统计(16年11月及以后按新教材考的) 本章重点常考知识点汇总清单(学握部分可直接理解记忆) 本章历年考题及答案解析 12、2018 年下半年第 14题 关于配置管理,不正确的是(14) A、配置管理计划制定时需了解组织结构环境和组织单元之间的联系 B、配置…

windows驱动开发-设备栈

设备栈是windows内核中非常重要的部分,这部分理解可以让我们在调试中节省大量的时间, 在windows NT体系中,内核所有的设备被按照连接次序加载到设备树上,这棵树的根节点是ROOT节点,每一个设备可以从当前路径一直遍历到…

【ARMv9 DSU-120 系列 4.1 -- Utility bus 详细介绍 2】

文章目录 ARM DSU-120DSU-120 Utiity BusCluster and core PPUPPU寄存器的访问性PPU寄存器的作用系统组件基地址ARM DSU-120 DSU-120 Utiity Bus 在ARMv9架构中,DSU-120(Dynamic Shared Unit 120)是一个关键组件,用于管理核心和系统组件之间的通信与协作。某些系统组件寄存…

【漏洞复现】号卡极团管理系统 index.php SQL注入漏洞

0x01 产品简介 号卡极团管理系统是一款专为号卡行业打造的管理系统,它具备一系列强大的功能,能够满足号卡行业推广人员在业务运营中的各类需求。 0x02 漏洞概述 号卡极团管理系统存在SQL注入漏洞,未授权的攻击者可以通过该漏洞获取数据库敏…

vue 请求php接口 header 传自定义参数 提示cors 跨域问题

前端地址 http://192.168.0.125:4021 请求后端地址的时候报 from origin http://192.168.0.125:4021 has been blocked by CORS policy: Request header field userid is not allowed by Access-Control-Allow-Headers in preflight response. 大概意思是请求 header里有个…

【leetcode面试经典150题】74. 填充每个节点的下一个右侧节点指针 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

【11-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

如何看待AIGC技术

文章目录 前言如何看待AIGC技术AIGC可以应用到哪些领域 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸…

Games101-相机与透镜

成像:光栅化成像(上图)和光线追踪成像(下图) 都是用合成的方法来成像。还可以用捕捉的方法来成像 利用小孔成像原理制作的相机就是针孔相机 如果一个相机没有针孔/透镜,是无法拍照的。 因为任何一个点都有可能收集到来自不同方向上的光。这个点本身作为…

telnet 退出失败ctrl+c

1. 使用ctrl] ,退出到telnet >界面 2. quit 或者 3. 直接强制退出: ] Enter键

第十五届蓝桥杯省赛第二场C/C++B组F题【狡兔k窟】题解(AC)

题意分析 有一个 n n n 个点, n − 1 n-1 n−1 条边的无向图,边权均为 1 1 1。 每个点隶属于一个集合,同一个集合的点可以互相传送。 给定 m m m 个询问,求 x , y x, y x,y 的最短距离。 最短路解法 步骤: 建…

探索数学语言模型的前沿进展——人工智能在数学教育和研究中的应用

数学一直被认为是科学的基石,对于推动技术进步和解决现实世界问题具有重要意义。然而,传统的数学问题解决方式正面临着数字化转型的挑战。MLMs的出现,预示着数学学习和研究方式的一次革命。 MLMs,包括预训练语言模型(…

黑马-设计模式-笔记(未完)

一、基础 UML类图 可见性: public- private#protected 表示方式:属性:可见性 名称:类型[默认值]方法:可见性 名称(参数)[:返回类型] 关系:关联关系:实线,引用关系,类属性里有另一个…

CUDA的应用场景

CUDA的应用场景随着技术的发展不断扩展,其核心优势在于能够显著提高并行计算任务的处理速度,这对于任何需要处理大量数据和执行复杂计算的领域都是极其有价值的。CUDA开发的应用场景非常广泛,主要得益于其强大的并行计算能力,以下…

【软考】UML中的关系

目录 1. 说明2. 依赖3. 关联4. 泛化5. 实现 1. 说明 1.UML中有4种关系:依赖、关联、泛化和实现2.这 4种关系是 UML,模型中可以包含的基本关系事物。它们也有变体,例如,依赖的变体有精化、跟踪、包含和延伸 2. 依赖 1.依赖(Dependency)。2.…

代码随想录刷题随记27-贪心1

代码随想录刷题随记27-贪心 455.分发饼干 leetcode链接 class Solution {public int findContentChildren(int[] g, int[] s) {//boolean used[]new boolean [s.length];Arrays.sort(s);Arrays.sort(g);int index0;int ret0;for(int i0;i<g.length;i){while(index<s.…

MySQL--表的操作

目录 创建表 查看表结构 修改表 新增列 修改列类型 修改列名 修改表名&#xff1a; 删除列 删除表 创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引…

【Entity Framework】聊一聊EF如何使用数据库函数

【Entity Framework】聊一聊EF如何使用数据库函数 文章目录 【Entity Framework】聊一聊EF如何使用数据库函数一、数据库函数的类型二、内置函数与用户定义的函数四、聚合函数、标量函数和表值函数五、Niladic函数六、EF Core 中的数据库函数映射6.1 内置函数映射6.2 EF.Functi…