0

0

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

WBOY

WBOY

发布时间:2024-06-03 15:40:01

|

565人浏览过

|

来源于机器之心

转载

乘法和排序也有效。

自 2017 年被提出以来,Transformer 已成为 AI 大模型的主流架构,一直稳站 C 位。

然而,虽然所有研究者都不得不承认的是,Transformer 在算数任务中表现异常糟糕,尽管是加法,这一缺陷在很大程度上源于 Transformer 无法跟踪大范围数字中每个数字的准确位置。

为了解决这个问题,来自马里兰大学、CMU等机构的研究者们向这一问题发起了挑战。他们通过在每个数字中添加一个嵌入来解决这个问题,该嵌入编码数字相对于开头的位置。该研究发现,只用一天时间在单个GPU上训练20位数字,就可以达到最新的性能水平,100位数字加法问题高达99%的准确率。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

论文地址:https://arxiv.org/pdf/2405.17399

项目地址:https://github.com/mcleish7/arithmetic

标题:Transformers Can Do Arithmetic with the Right Embeddings

具体而言,研究者建议对数据表显示进行一个简单的修改,就能解决这个缺点。他们提出了 Abacus 嵌入用于编码每个数字符号 token 范围内的位置。将 Abacus 嵌入与标准位置嵌入结合使用后,该研究观察到 Transformer 在算数任务上的准确率有显著提高,以至于最多只训练了 20 位数操作数的模型可扩展到 120 位数操作数的问题。这一数字代表了 6 倍的 SOTA 扩展因子,而前的最先进的扩展因子也只有 2.5 倍。据了解,这是迄今为止被证明的最长的学习加法法序列。

除了研究优化Transformer在算术和泛化方面的性能之外,本文还探讨了几种其他方法来改善Transformer的性能。他们发现,通过在输入注入(input injection)层和每个解码器层之间插入跳跃连接,可以在Abacus嵌入基线上减少50%的泛化误差。本文还发现,与嵌入结合使用的looped Transformer架构可以在加法问题上实现几乎完美的泛化。

本文的贡献可以总结如下:

  • 本文提出了一种新的位置嵌入,称为 Abacus 嵌入,以更好地捕获每个数字的重要性,从而实现近乎完美的分布内泛化;

  • 研究表明,当将 Abacus 嵌入与输入注入和 looped transformer 相结合时,性能会进一步提高,分布外准确率从 92.9% 提高到 99.1%,与单独使用标准架构的嵌入相比,误差降低了 87%;

  • 研究者将这些发现扩展到更复杂的问题,包括乘法和排序,在这些领域也展现出了长度泛化。

实现加法的长度泛化

作者研究了一系列方法,旨在提高从头开始训练的语言模型在算术能力上的表现。他们主要关注两个假设:1)数字内各个位数的位置信息正在丢失;2)循环可以提高 Transformer 架构在多步算术推理问题上的推理能力。在详细描述每项改进之前,作者简要讨论了训练和评估设置。

实验设置

作者训练了仅包含解码器的因果语言模型来解决加法问题。

他们考虑了两种标准 transformer 架构。首先,他们使用一个标准的自回归 transformer 模型,多个解码器层以前馈方式堆叠。其次,他们通过输入注入(input injection)增强了这一标准 transformer 模型,即把嵌入的输入添加到每个解码器层的输入中。作者在图 20 中直观地描述了这些架构。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

Abacus 嵌入帮助对齐数字

通过之前的研究和初步实验,作者发现,即使输入的数字是先显示最不重要的数字,训练数据是分层的、丰富的(几百万个例子),标准 transformer 也很难学习多位数加法。他们还观察到,人类在进行长加法运算时,会先将数位相同的数字排列成列。因此,作者的第一个假设是,对于 transformer 来说,每个数字的数位并不容易表示,而且这个子问题比实际加法本身带来的障碍更大。

为了解决 transformer 在表示位置信息方面的局限性,作者设计了一种特殊的位置嵌入,它可以编码每个数字相对于当前数字起始位置的位置。作者将其称之为 Abacus 嵌入。他们将相同的位置嵌入应用于所有具有相同数位的数字,从而提供一个显式的信号,供模型用于对齐数字,如图 2 所示。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

Abacus 嵌入解决加法问题

对于标准 transformer 架构,Abacus 嵌入可将泛化性能提高到 100 位及以上。在图 3(左)中,作者强调了 Abacus 嵌入与标准 transformer 架构和嵌入相比,在进行加法运算时所具有的比较优势,取三种模型在所有情况下的平均准确度。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

图 1 还显示了使用 FIRE 和 Abacus 训练的标准 transformer 模型的准确度结果,这些模型经过了域内 (ID) 和域外 (OOD) 测试。单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

BgSub
BgSub

免费的AI图片背景去除工具

下载

Transformer 中的循环提高了性能

在解决位置嵌入问题后,接下来作者探讨了循环架构能否进一步提高 transformer 执行多位数加法的能力。他们使用「循环块(recurrent block)」一词来指一组具有不同权重的解码器层,而「循环(recurrence)」则指循环块的重复次数。作者使用有效深度(effective depth)一词来指 transformer 中使用的层数,无论其权重是否唯一。除非另有说明,否则他们使用的是最大循环架构,即只循环一个唯一层来达到有效深度。他们还采用了输入注入、 残差连接的方式,将输入的副本传播到网络中的每一层。

循环的优势

在图 3(右)中,作者比较了使用 FIRE 和 NoPE 嵌入对操作数多达 40 位的加法进行训练的所有架构变体。尽管参数数量仅相当于其他模型的 1/10,但可以看到,looped transformer(循环的、有输入注入和渐进损失)在使用任何一种位置嵌入时都取得了最佳的分布外性能。在图 8 中,作者展示了这一结果在多种训练数据规模下的稳健性。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

对于循环模型,可以选择在训练时改变每次前向传递的循环次数。这往往会提高模型测试时对较难任务的泛化能力,这也被称为渐进损失计算(progressive loss computation)。这个损失函数是两个前向传递的损失值的凸组合,一个使用字面上的循环数(1 × 16 模型为 16),另一个使用随机的较小循环数。

接下来,作者探讨了在保持有效深度固定的同时改变循环块大小的效果。他们将循环块中的层数减半,循环次数增加一倍,从块中有 16 层、循环次数只有一次(16 × 1,即标准 transformer)的模型,过渡到块中只有一层、循环次数有 16 次(1 × 16)的模型。

通过图 4 分析这些结果,作者发现在某些情况下,结合循环和 Abacus 嵌入可以进一步提高性能。具体来说,在 OOD 问题上,有两个循环的模型(8 × 2)产生的误差是纯非循环模型(16 × 1)的一半,而在 100 + 的 OOD 问题上,其准确率也有所提高。

最后,在附录 A.7.3 中,作者改变了模型的有效深度,以分析参数数量对这项任务的影响,包括 Abacus、FIRE 和 NoPE 嵌入。虽然图 4 中的实验是对不同深度的公平比较,但纯粹的标准 transformer 模型比相应的循环模型拥有更多的参数。在附录的表 3 中,作者记录了最接近百万的参数量。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

实验

研究者不仅对加法问题进行了探讨,还对乘法和排序进行了研究。

整数乘法

图 5 展示了 Abacus 嵌入模型在 15 位数乘法的分布内准确率超过了之前的工作,且不需要用零将每个操作数填充到相同长度。特别地,该研究强调,与仅使用 FIRE 的基线相比,将 Abacus 嵌入与 FIRE 相结合也提高了分布问题中最难的分布准确率 (右下)。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

数组排序

表 1 展示了使用不同嵌入 ——FIRE、Abacus 及其组合 —— 训练的标准 transformer(八层)的性能。结果显示,组合嵌入方法增强了模型的泛化能力。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

如表 2 所示,研究者观察到在将 Abacus+FIRE 嵌入组合与不同的模型架构(有效深度为 8)配对时,结果表现出混合性。

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

Abacus 和相关嵌入

图 6 展示了将 Abacus 嵌入整合到更通用系统中的真正潜力,显示出 Abacus 嵌入与 FIRE 结合可以解锁远超 FIRE 嵌入解决问题的能力。 

单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率

更多研究细节,请参考原论文。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6039

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

781

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1044

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1085

2024.03.01

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

366

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

559

2023.08.10

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2023.11.24

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1653

2024.08.16

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Node.js 教程
Node.js 教程

共57课时 | 7.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号