乘法和排序也有效。
自 2017 年被提出以来,Transformer 已成为 AI 大模型的主流架构,一直稳站 C 位。
但所有钻研者都不得不承认的是,Transformer 在算数任务中表现非常糟糕,尤其是加法,这一缺陷在很大程度上源于 Transformer 无法跟踪大范围数字中每一个数字的确切位子。
为了处理这个课题,来自马里兰大学、CMU 等机构的钻研者向这一课题发起了挑战,他们通过在每一个数字中添加一个嵌入来处理这个课题,该嵌入编码数字相对于开头的位子。该钻研发现,只用一天时间在单个 GPU 上训练 20 位数字,就可以达到最新的功能水平,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 在算术和泛化方面的功能,他们发现结合输出注入(input injection),即在输出层和每一个解码器层之间插入跳跃连接,可以在 Abacus 嵌入基线上减少 50% 的泛化误差。本文还发现,与嵌入结合运用的 looped transformer 架构可以在加法课题上实现几乎完美的泛化。
本文的贡献可以总结如下:
本文提出了一种新的位子嵌入,称为 Abacus 嵌入,以更好地捕获每一个数字的重要性,从而实现近乎完美的分布内泛化;
钻研表明,当将 Abacus 嵌入与输出注入和 looped transformer 相结合时,功能会进一步提升,分布外准确率从 92.9% 提升到 99.1%,与单独运用规范架构的嵌入相比,误差降低了 87%;
钻研者将这些发现扩展到更复杂的课题,包括乘法和排序,在这些领域也展现出了长度泛化。
实现加法的长度泛化
作家钻研了一系列方法,旨在提升从头开始训练的语言模型在算术能力上的表现。他们主要关注两个假设:1)数字内各个位数的位子信息正在丢失;2)轮回可以提升 Transformer 架构在多步算术推理课题上的推理能力。在详细描述每项改进之前,作家简要讨论了训练和评估设置。
实验设置
作家训练了仅包含解码器的因果语言模型来处理加法课题。
他们考虑了两种规范 transformer 架构。首先,他们运用一个规范的自回归 transformer 模型,多个解码器层以前馈方式堆叠。其次,他们通过输出注入(input injection)增强了这一规范 transformer 模型,即把嵌入的输出添加到每一个解码器层的输出中。作家在图 20 中直观地描述了这些架构。
Abacus 嵌入帮助对齐数字
通过之前的钻研和初步实验,作家发现,即使输出的数字是先显示最不重要的数字,训练数据是分层的、丰富的(几百万个例子),规范 transformer 也很难学习多位数加法。他们还观察到,人类在进行长加法运算时,会先将数位相同的数字排列成列。因此,作家的第一个假设是,对于 transformer 来说,每一个数字的数位并不容易表示,而且这个子课题比实际加法本身带来的障碍更大。
为了处理 transformer 在表示位子信息方面的局限性,作家设计了一种特殊的位子嵌入,它可以编码每一个数字相对于当前数字起始位子的位子。作家将其称之为 Abacus 嵌入。他们将相同的位子嵌入应用于所有具有相同数位的数字,从而提供一个显式的信号,供模型用于对齐数字,如图 2 所示。
Abacus 嵌入处理加法课题
对于规范 transformer 架构,Abacus 嵌入可将泛化功能提升到 100 位及以上。在图 3(左)中,作家强调了 Abacus 嵌入与规范 transformer 架构和嵌入相比,在进行加法运算时所具有的比较优势,取三种模型在所有情况下的平均准确度。
图 1 还显示了运用 FIRE 和 Abacus 训练的规范 transformer 模型的准确度结果,这些模型经过了域内 (ID) 和域外 (OOD) 测试。
Transformer 中的轮回提升了功能
在处理位子嵌入课题后,接下来作家探讨了轮回架构能否进一步提升 transformer 执行多位数加法的能力。他们运用「轮回块(recurrent block)」一词来指一组具有不同权重的解码器层,而「轮回(recurrence)」则指轮回块的重复次数。作家运用有效深度(effective depth)一词来指 transformer 中运用的层数,无论其权重是否唯一。除非另有说明,否则他们运用的是最大轮回架构,即只轮回一个唯一层来达到有效深度。他们还采用了输出注入、 残差连接的方式,将输出的副本传播到网络中的每一层。
轮回的优势
在图 3(右)中,作家比较了运用 FIRE 和 NoPE 嵌入对操作数多达 40 位的加法进行训练的所有架构变体。尽管参数数量仅相当于其他模型的 1/10,但可以看到,looped transformer(轮回的、有输出注入和渐进损失)在运用任何一种位子嵌入时都取得了最佳的分布外功能。在图 8 中,作家展示了这一结果在多种训练数据规模下的稳健性。
对于轮回模型,可以选择在训练时改变每次前向传递的轮回次数。这往往会提升模型测试时对较难任务的泛化能力,这也被称为渐进损失计算(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 中,作家记录了最接近百万的参数量。
实验
钻研者不仅对加法课题进行了探讨,还对乘法和排序进行了钻研。
整数乘法
图 5 展示了 Abacus 嵌入模型在 15 位数乘法的分布内准确率超过了之前的工作,且不需要用零将每一个操作数填充到相同长度。特别地,该钻研强调,与仅运用 FIRE 的基线相比,将 Abacus 嵌入与 FIRE 相结合也提升了分布课题中最难的分布准确率 (右下)。
数组排序
表 1 展示了运用不同嵌入 ——FIRE、Abacus 及其组合 —— 训练的规范 transformer(八层)的功能。结果显示,组合嵌入方法增强了模型的泛化能力。
如表 2 所示,钻研者观察到在将 Abacus+FIRE 嵌入组合与不同的模型架构(有效深度为 8)配对时,结果表现出混合性。
Abacus 和相关嵌入
图 6 展示了将 Abacus 嵌入整合到更通用系统中的真正潜力,显示出 Abacus 嵌入与 FIRE 结合可以解锁远超 FIRE 嵌入处理课题的能力。
更多钻研细节,请参考原论文。