【论文解读】大模型算法发展

news2024/11/14 20:04:27

一、简要介绍

论文研究了自深度学习出现以来,预训练语言模型的算法的改进速度。使用Wikitext和Penn Treebank上超过200个语言模型评估的数据集(2012-2023年),论文发现达到设定性能阈值所需的计算大约每8个月减半一次,95%置信区间约为5到14个月,大大快于摩尔定律下的硬件增益。论文估计了增强的scaling law,这使论文能够量化算法的进展,并确定scaling模型与训练算法中的创新的相对贡献。尽管算法的快速发展和transformer等新架构的发展,在这段时间内,计算量的增加对整体性能的提高做出了更大的贡献。虽然受到有噪声的基准数据的限制,但论文的分析量化了语言建模的快速进展,揭示了计算和算法的相对贡献。

二、方法论

2.1模型定义

论文希望估计更新的语言模型能够比旧的模型更有效地达到一定性能水平的速率。论文通过拟合一个模型,满足两个关键需求: (1)该模型必须与之前关于神经scaling law的工作广泛一致,和(2)该模型应该允许分解对提高性能的主要贡献者,例如改进模型中的数据或自由参数的使用效率。

2.2估算方法

2.2.1模型选择

论文在语言模型评估数据集上估计了公式(3)中提出的增广scaling law的变量。论文执行广泛的交叉验证练习,以确定最适合数据的模型的变体。本练习的目的是考虑捕获不同效果的不同模型(例如,不同模型架构之间的不同scaling行为、不同形式的算法进展等)。

论文试图在交叉验证分析中解释这种可能性。特别地,论文引入了三个模型(模型13到15),它们解释了不同类型的scaling指数,包括指数随时间变化的可能性。论文选择的主模型(模型7)在交叉验证中优于这些模型,但这些替代方案也表现出同样的效果,通常R2在0.88到0.91之间。这个分析在附录J中有更详细的描述。 论文还考虑了其他可能影响测量的困惑的因素,从而测量算法进展的速度。例如,在某些情况下,预处理过程中不同的标记化方案可以改善WT103的困惑,多个epoch的训练模型是提高性能的常见方法。论文发现,当改变这些自由度时,论文的核心结果是大致相同的——论文在附录中提供了关于这些实验的更多细节。 最后,为了解释模型规范中的不确定性,论文比较了在交叉验证分析中考虑的不同模型的模型预测。 2.2.2数据 论文的数据集包含超过400种语言模型,在 WikiText-103 (WT103), WikiText-2 (WT2), Penn Treebank (PTB)上评估,其中大约60%作者可以在论文的分析中使用。特别是,作者从大约200篇不同的论文中检索到了相关信息,以及使用Gao,Tow等人2021年的框架对自己执行的25个模型的评估。然后,论文考虑数据的子集,其中包含拟合论文提出的模型结构所需的信息:令牌级测试困惑(它决定交叉熵损失)、发布日期、模型参数数量和训练数据集大小。这就给论文留下了大约231个模型可供分析。

在某些情况下,从同一篇论文中检索到多个模型,即使它们构成了类似的算法创新。这可能会给自相关带来问题,这可能导致低估论文单个参数估计的不确定性。因此,在接下来的主要分析中,每篇论文最多只包含三个模型,这导致大约50个模型被排除。为了验证这种方法的稳健性,论文还考虑了另一种技术,直接解释自相关,它产生与论文的主要结果一致的加倍时间和置信区间估计(见附录I)。

三、实验结果

3.1模型大约每8个月需要的计算减少2倍

通过观察来自不同模型的预测,论文进一步检验了这个结果的稳健性。特别是,因为论文使用留一交叉验证来执行模型选择,所以论文可以将论文的首选模型的预测与论文所考虑的其他模型的预测进行比较。根据论文的交叉验证练习,连接前10个模型的倍增时间估计数,论文发现中位倍增时间为7.8个月[95%CI:1.5-17.6个月],这与论文所首选的模型相似。 另一种方法依赖于计算方案,而不是倍增时间的封闭解。论文首先计算通过加倍计算预算来实现的损失∆L的减少,假设N和D在估计的模型下是最优的。然后,论文确定了算法改进所需的时间,以产生等效的损失∆L减少。结果表明,这些方法产生的结果几乎相同,中位数的倍增时间为8.6个月,95%的置信区间为4.5-14.5个月。本程序在附录G中有更详细的说明。 该估计在计算机视觉算法进展率(Erdil和Besiroglu 2022)、强化学习的样本效率改进(Dorner 2021)以及特定输入大小下常见算法家族的估计速率的置信区间范围内。总的来说,论文的研究结果表明,语言模型的算法进展与之前研究的领域中算法和软件的进展速度相当,而且可能更快(见图1)。

虽然论文的模型的结构不适合分析算法改进速度上的细粒度加速或减速,但论文仍然可以测试增长率在整个时间段内一次性增加或减少的可能性。为此,论文考虑了论文的首选模型(模型7)的一个变体,其中引入了一个虚拟变量——对于在某一年开始之前发布的任何模型,这都等于0,否则为1。这允许论文考虑在某一年的截止时间前后倍增时间(例如2017年),论文对几个这样的截止时间进行分析。 其结果如图4所示。在这里,论文可以看到,2017年初前后估计的倍增时间的差异非常明显,但截止年份的其他选择并非如此。在每一年,截止年开始后,中位数的倍增时间都要快,但通常只是略快。总的来说,这并没有提供算法进步的急剧加速的有力证据。这并不排除效应量较弱的可能性,因为论文的方法在统计上的动力不足。

3.2最近的下一个令牌预测的性能提高都来自于计算scaling 天真地推断论文估计的倍增时间表明,在2014年到2023年之间,预训练算法的进步使性能提高了大约22000倍的计算。与此同时,自深度学习开始以来,物理计算预算大约每6个月就增加一倍,包括语言模型。这表明,物理计算增长了大约100万倍。这描绘了一幅程式化的画面,自2014年以来,“有效计算”增长了约220亿倍,几乎三分之二的规模是由于实际物理计算资源的使用增加。

论文有理由对这种幼稚的推理保持谨慎。首先,论文并没有在数据集中的任何地方直接观察到22,000倍(甚至10,000倍)的增益。然而,考虑到早期的研究人员不太可能用大量的计算来训练语言模型,因此论文不太可能在分析的时间段内观察到如此大的下降。然而,缺乏这样的观察结果仍然提出了关于在长时间的多年时期之间推断这些趋势的可靠性的问题。 值得注意的一个具体原因是,推理法忽略了算法创新的规模依赖性。随着时间的推移,随着模型在更大的计算规模上进行训练,一些算法创新可能会变得过时——例如,特定标记器或超参数设置的有效性可能会降低,使它们对未来更大的模型不那么有用。

相反,最近的创新在更小的规模上实施时,比现在的模型可能无法产生很大的或任何好处。例如,从scaling law中获得的收益与所使用的计算规模有关(见附录B),而较老的体系结构,如LSTM和卷积网络,可以在相对于transformer的小尺度上表现出更高的效率。 虽然倍增时间的简单外推预测了计算需求的大幅减少,但论文的工作并没有提供令人信服的证据,证明论文可以在当前或未来通过应用完整的现代创新来训练非常小的模型来实现更大的模型的性能。算法改进的规模依赖性,以及在论文的数据集中缺乏对如此大的效率提高的直接观察,这表明需要进一步的研究和更全面的数据来验证这些外推。 除了倍增时间外,论文还可以分解算法的相对贡献,并通过直接评估论文估计的模型来计算比例。

鉴于论文的模型是非线性的,因此不可能简单地将性能改进归因于计算、数据的扩展和基于系数比的算法的改进。因此,论文使用Shapley值分析,其中论文估计了每个因素在减少预测困惑方面的平均预期边际贡献。这一分析微弱地支持了上面的程式化图,即自2014年以来,计算scaling在解释性能改进方面比算法的进步更重要。 研究结果表明,算法进步对性能改进的相对贡献随着时间的推移而减少,至少在历史上接近最先进技术的模型数据集中是如此。这一观察结果与图5中的程式化表示以及Erdil和Besiroglu对计算机视觉的发现一致,在计算机视觉中,计算随着时间的推移,scaling显示出越来越重要。 对算法进步的相对贡献不断减少的一种解释是,对扩大物理计算的投资已经大幅增加,超过了算法改进的速度。相对于基本算法或架构的变化,这一框架在过去几年中与对大型语言模型的重视相一致,特别是自2019年引入GPT-2以来。图5说明了这一观点的一个程式化版本,描述了2018-2019年前后物理计算比例的急剧增加,随后恢复到之前的计算比例增长率。 还有其他可能的解释——例如,transformer架构可能是一个关键的创新(见第3.3节),而随后的算法进步则不那么重要。

另外,这一观察结果也可以用算法创新速度的长期下降来解释。然而,论文发现这两种解释不如图4的结果令人信服,在图4中,算法的进展速度并没有明显下降(例如2018年截止)。如果说有什么不同的话,那就是概率略有上升,这与这两种解释所预测的相反。

3.3transformer架构的意义 自2017年推出以来,transformer架构已成为语言建模中的主导算法架构,形成了多个著名系统的基础。transformer也被广泛应用于视觉模型中,并且有丰富的现有文献评估了transformer架构与其他视觉架构相比的优点。 论文试图根据“计算等效增益”来量化transformer体系结构对数据集中其他体系结构(lstm、rnn、state space model等)的贡献。这类似于戴维森等人2023年中概述的方法——在这种情况下,计算等效增益是必须调整训练计算以提高基准性能的量,与引入transformer的相同的量。例如,Eernandeds和T. Brown 2020发现transformer(2017)在WMT-14-EN-FR基准上实现了与Seq2Seq(2014)模型相同的性能,计算量少61倍。 为了获取transformer所代表的改进,论文修改了论文的核心模型如下:

其中,σ: R→(0,1)为sigmoid函数,由σ(x) = 1/(1 + e−x)给出。γT是一个常数,所有其他术语都具有与原始模型中相同的含义。关键的直觉是,transformer可以使论文能够比它之前的架构更有效地使用计算(或数据)。 经过预处理后,论文的数据集包含103个transformer模型和127个非transformer模型,主要由循环网络组成,如LSTM。根据该数据拟合模型表明,transformer结构通常可按比例降低4.6% [95% CI: 3.0%,7.0%]。 论文可以用“计算等效增益”来计算其贡献:论文首先计算具有N和D的transformer的预测损耗,以及具有相同输入的非transformer的预测损耗。然后,论文确定N和D的减少,以匹配损失的差异。然后计算近似,如C≈6ND。简而言之,如果一个创新将实现特定损失所需的计算量减少一半,那么该创新的计算等效增益为2。 基于100次自举,论文获得了transformer的计算等效增益的中值估计为7.2×[95%CI:3.3×,45.7×]。这一可观的增益表明,transformer架构提供的效率约相当于log (7)/ log(2e4),占过去9年算法总增益的20%,或该领域近2年的算法进步。此外,如果transformer架构还提供了一种方便的工具,通过它可以有效地传输计算,从而通过计算的scaling促进了一些增益,这些增益很可能主导了论文最近看到的总体增益。 这里需要注意的是,transformer的测量显著性可能取决于如何评估它。例如,transformer可能比循环网络更能适应长上下文,并且使用更长上下文(如>1000个token)可能表明transformer比使用更短的上下文的评估有更大的改进。论文在这里没有明确地控制上下文长度,论文在附录E.2.1中更详细地讨论了这个假设的潜在影响。

四、讨论和结论

4.1对论文的发现的总结

本文对2012-2023年语言模型预训练的算法进展进行了全面的实证分析。通过在 WikiText 和Penn Treebank基准上管理超过200种语言模型评估的数据集,论文量化了计算scaling和算法效率提高对总体性能增益的相对贡献。论文的主要发现如下:

首先,论文估计,自2012年以来,达到集合语言建模性能水平所需的计算量平均每8-9个月减少了一半。这一速度大大超过了摩尔定律的硬件收益,并使语言建模与计算机视觉和强化学习一起成为算法进步最快的领域之一。这支持了一种普遍的直觉,即语言建模是计算机科学中一个异常快速发展的领域。

其次,论文的工作表明,最近在语言建模方面的大部分进展更多地来自于scaling模型和数据集,而不是来自于预训练的算法创新。基于Shapley值的分析表明,60-95%的性能提高来自于计算scaling,而算法仅贡献了5-40%。

第三,2017年引入的transformer架构是算法的重大进步,计算等效增益为3倍到46倍,占过去十年预训练语言模型中算法创新的10%以上。这突出了transformer作为该领域的一个关键框架突破的意义。

4.2限制

虽然论文的分析是量化算法进展方面的进步,但一些限制降低了论文的精度,降低了论文估计的信心:

缺乏对特定创新所获得的收益的估计。论文的模型被指定用来量化算法在相对较大的时间段内(例如在几年)的进展。然而,它无法提供可靠的细粒度信息,如在较短的时间尺度内取得的进展,或特定创新的重要性。实验工作更适合于估计特定算法创新的效率增益。

高质量数据的可用性有限。论文在分析中使用的方法在很大程度上依赖于多年来的数据样本。这被证明是非常具有挑战性的,原因有很多——例如,模型并不总是在同一基准上进行评估,2017年之前的数据相对稀疏,论文可能不报告相关信息,如参数量。在其他原因中,这可能导致论文的估计非常嘈杂,产生广泛的置信区间。此外,算法的改进和scaling历来是同时引入的,在论文的数据集中,这两者之间的相关性使得很难理清它们对总体有效计算增长的相对贡献。

模型训练和评估中的不一致。评估中的不一致是众所周知的。虽然论文已经从数据集中排除了非标准评估,但论文的数据集跨越了具有不同标记化方案、文本预处理、步长和其他细节的模型。这在论文对算法进展的估计中引入了噪声和潜在的偏差,因为随着时间的推移,研究人员可能会采用更有利的评估方案。然而,论文估计算法改进的困惑减少很大;可能比评估程序的变化所能解释的要大。论文将在附录E.2.3中扩展一下这些点。

无法在数据使用中区分数据质量和效率。论文在本文中定义效率改进的方式是,随着时间的推移,减少达到一定性能水平所需的资源数量。然而,在数据效率的情况下,这遇到了一个问题——论文测量到的数据需求的减少是由于数据质量的提高,还是由于算法使用数据的能力的改进?这不是一个论文的模型能回答的问题。因此,值得注意的是,论文测量的计算需求的减少与算法改进和数据质量改进有关,它们的相对贡献可能是未来研究的一个主题。

依赖于Chinchilla scaling law。论文的模型推导出的scaling law适用于遵循GPT-3架构的密集transformer。论文使用这个scaling law来建模不同transformer架构、递归神经网络等的算法改进。未来的算法也可能遵循不同的scaling law。然而,论文相信论文的核心结果很可能仍然成立:首先,神经scaling并不是一种局限于transformer的现象。论文发现广泛的统计模型结构提供一致的估计,和替代方法估计预训练算法进展也给类似的结果(见附录),所以很可能论文的核心结果是鲁棒的。

对未来进展的了解有限。虽然本文的结果可以用来告知语言建模的未来进展,但论文的论文的重点是历史的改进。未来的进展速度可能会更慢,但它们也可能会更快(例如,由于研究兴趣和投资的增加)。对未来进展的期望需要考虑到这些因素,论文大部分没有深入讨论。

4.3结论

使用Wikitext 和 Penn Treebank上2012-2023年的200多个语言模型评估数据集,论文发现达到固定性能阈值所需的计算大约每8个月减少一半。这比摩尔定律和许多其他计算领域的速率要快得多。虽然算法创新发生迅速,但计算规模在同一时期扩展了100万倍,超过了算法的收益,构成了近年来性能改进的主要来源。

总的来说,论文的工作提供了一个对语言建模的快速发展速度的定量估计。它还揭示了计算规模对最近的收益的起主导作用而不是算法进步。未来的工作可以受益于将这种分析扩展到额外的、具体的基准,并更仔细地检查数据质量改进的影响和其他具体创新的成果。尽管有其局限性,但这项研究证明了可以从对机器学习结果的广泛数据集的详细统计分析中获得的有价值的见解。通过确定绩效改进的主要驱动因素,这项工作为进一步探索和理解该领域的这些趋势奠定了基础。

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

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

相关文章

React中的无状态组件:简约之美

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【掌握浏览器版本检测:从代码到用户界面】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论✍ 引言…

OS:处理机进程调度

1.BackGround:为什么要进行进程调度? 在多进程环境下,内存中存在着多个进程,其数目往往多于处理机核心数目。这就要求系统可以按照某种算法,动态的将处理机CPU资源分配给处于就绪状态的进程。调度算法的实质其实是一种…

使用 ComfyUI 跑 SD 图,就两个字:惊艳!

大家好,我是想象,AI 破局 9 颗 AI 之心持有者。ComfyUI 已经出来有一段时间了,一直没有深入去学习过,今天花了点时间跑了一下。体验下来,就两个字:惊艳! 这张 3 个小丑的图,很真实吧…

MT6816磁编码IC在自动缩口机中的应用

随着工业自动化的快速发展,各种智能传感器与执行器在制造业中发挥着越来越重要的作用。其中,磁编码IC以其高精度、高可靠性以及优秀的环境适应性,成为了工业自动化控制中不可或缺的一部分。本文将详细介绍MT6816磁编码IC在自动缩口机中的应用…

【数字】三态门,双向端口,HDL描述

#工作记录# 之前工作的时候,负责GPIO的同事被负责人问“三态的en开启的时候是直通的吗?” 他支支吾吾的回答“是的吧”,负责人又问了一句,他就有点不自信了,顺手记录一下这个在SoC设计中非常常见的逻辑。 目录 一、…

Python爬虫 instagram API获取instagram帖子数据信息

这个instagram接口可以通过url链接直接获取相关帖子信息。如有需求,可点击文末链接联系我们。 详细采集页面 https://www.instagram.com/p/CqIbCzYMi5C/ 请求参数 返回示例 { "__typename": "GraphSidecar", "accessibility_caption&qu…

STM32H7串口中断服务函数会禁止中断

STM32H7 在中断服务函数HAL_UART_IRQHandler中,会禁止接收中断 同时也会禁止发送完成中断,调用UART_EndTransmit_IT来进行操作

微信小程序-自定义组件生命周期

一.created 组件实例创建完毕调用。定义在lifetimes对象里。 不能在方法里面更改data对象里面的值,但是可以定义属性值。 lifetimes:{//不能给data设置值created(){this.testaaconsole.log("created") }}二. attached 模板解析完成挂载到页面。 可以更…

Unity:PC包直接查看Log日志

PC端会输出Log日志,位置在: C:\Users\用户名\AppData\LocalLow\公司名\项目名 在这里可以找到类似的文件: 打开便可以看到打印。

提交高通量测序原始数据到 SRA --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库,整理了相关笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. 提交高通量测序数据到 GEO --- 说明书 目录 1 注册 NCBI 账…

RedHat9 | Tomcat服务器部署

一、相关知识 Tomcat介绍 Tomcat 是 Apache 软件基金会(Apache Software Foundation)下的一个开源项目,主要用于实现 Java Servlet、JavaServer Pages (JSP)、Java Expression Language (JEL) 以及 Java WebSocket 技术的容器。作为轻量级的…

YOLOv8改进 | 融合改进 | C2f结合可变形大核注意力超越自注意力【含Seg、OBB、OD代码】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

Linux进程间通信(管道,命名管道/FIFO,消息队列)

目录 前言 一、管道 二、命名管道/FIFO 三、消息队列 前言 前面我们学习了Linux进程编程的相关函数,也举了几个进程编程的实际应用场景;我们之前学到父进程等待子进程退出时也涉及到了一些进程间通信的概念,比如子进程调用exit函数&#…

AWS DMS MySQL为源端,如何在更改分区的时候避免报错

问题描述: 文档[1]中描述MySQL compatible Databases作为DMS任务的源端,不支持MySQL 分区表的 DDL 更改。 在源端MySQL进行分区添加时,日志里会出现如下报错: [SOURCE_CAPTURE ]W: Cannot change partition in table members…

2024年普通人怎么利用AI工具赚钱?

在当今这个信息爆炸的时代,AI技术的应用如同一股不可阻挡的潮流,为普通人开辟了全新的赚钱途径。以下是一些普通人就可以做的赚钱方法: 1、信息差模式 现在市场上AI应用工具很多,不是所有人都会对这些工具进行深入学习和测试&am…

网络访问(Socket/WebSocket/HTTP)

概述 HarmonyOS为用户提供了网络连接功能,具体由网络管理模块负责。通过该模块,用户可以进行Socket网络通滚、WebSocket连接、HTTP数据请求等网络通信服务。 Socket网络通信:通过Socket(嵌套字)进行数据通信,支持的协议包括UDP核…

iOS开发设计模式篇第一篇MVC设计模式

目录 1. 引言 2.概念 1.Model 1.职责 2.实现 3.和Controller通信 1.Contrller直接访问Model 2.通过委托(Delegate)模式 3.通知 4.KVO 4.设计的建议 2.View 1.职责 2.实现 3.和Controller通信 1. 目标-动作(Target-Action)模式 2…

matlab gui下的tcp client客户端编程框架

GUI界面 函数外定义全局变量 %全局变量 global TcpClient; %matlab作为tcpip客户端 建立连接 在“连接”按钮的回调函数下添加以下代码: global TcpClient;%全局变量 TcpClient tcpip(‘192.168.1.10’, 7, ‘NetworkRole’,‘client’); %连接到服务器地址和端…

免费【2024】springboot北京医疗企业固定资产管理系统的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Springboot项目打包成镜像、使用docker-compose启动

Springboot项目打包成镜像、使用docker-compose启动 1、创建一个boot项目 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…