Press "Enter" to skip to content

用Transformer做线代作业,真香!

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作者丨莓酊

 

编辑丨青暮

 

线性代数(linear algebra)是关于向量空间和线性映射的一个数学分支。

 

现代线性代数的历史可以上溯到19世纪中期的英国。1843年,爱尔兰数学家哈密顿发现四元数。1844年,赫尔曼·格拉斯曼发表他的着作《线性外代数》(Die lineare Ausdehnungslehre),包括今日线性代数的一些主题。1848年,詹姆斯·西尔维斯特引入矩阵(matrix)。阿瑟·凯莱在研究线性变换时引入矩阵乘法和转置的概念。很重要的是,凯莱使用一个字母来代表一个矩阵,因此将矩阵当做了聚合对象。他也意识到矩阵和行列式之间的联系。

 

多少学子魂牵梦绕、夜不能寐的现代线性代数就是这样形成的。

 

古语有云:线代虐我千百遍,我待线代如初恋。搜索“线代太难了”,谷歌秒给我726, 000个相关结果。

 

 

一些同学忍不住吐槽,做线代题感觉自己像个傻子……(摸摸头)

 

 

无论是结构力学到人工智能,深究理工科研究之后会发现到处都是线性代数的身影。线性代数的地位真的重要,这是科研人、技术人在实践中的最大感受。许多算法都用到线性代数知识,比如非常热门的深度学习, 它的底层实现方式用到好多线性代数方面的知识。如果底层基础打不好,不明白其中的原理,算法实现方式真的很难理解,更不可能去创新了。

 

 

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

 

Transformer是 Google 的团队在 2017 年提出的一种 NLP经典模型。Transformer采用 注意力机制( Self-Attention) 来提高模型训练速度,它抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。主要由两部分组成:encoder和decoder。

 

 

Transformer最初为机器翻译设计,后被应用于各种问题,从文本生成到图像处理、语音识别等等。在数学中,Transformer大多应用集中在 符号计算 上,它“操作”数学符号,就像“操作”自然语言中的单词一样。

 

但数学≠ 符号处理:许多实际应用涉及数值计算,精确(如算术)或近似(如函数计算、方程数值解)。使用Transformer数值计算的研究较少,而且多数早期算术实验结果差强人意。

 

但有一个不可回避的问题: 数学和科学中的大多数问题都涉及符号计算和数值计算。 如果我们希望Transformer端对端解决这些问题,它们就必须能进行高精度数值计算。

 

作者François Charton训练Transformer计算线性代数问题的解,线性代数是许多科学问题的基本组成部分: 矩阵的基本运算、矩阵求逆、特征值和奇异值分解 。

 

接下来我们将介绍四种将问题和解决方案表示为Transformer可处理的编码方案,在生成的随机矩阵数据集上训练小型Transformer(最多 6 层,1000 到 5000 万个可训练参数)。训练过的模型计算问题的近似解(到其L1范数的几个百分比),精确度超过90%(大多数情况下为99%)。

 

同时,泛化训练过的模型,通过更多样化的数据集(特别是具有非独立和相同分布系数矩阵进行的训练),能够大大提高域外精度。

 

作者相信这些结果为Transformer打开了全新世界的大门,为Transformer作为数学和科学问题的端对端解算器铺平了道路。

 

1

 

问题建模

 

 

第一步,将 矩阵编码为序列。

 

因为问题的输入和输出是矩阵,要由Transformer处理,它们需要转换为token序列。

 

首先对一个m×n矩阵进行编码,将其维度编码为两个符号标记(Vm和Vn),然后是其mn系数,编码为序列。在本文中,使用了四种矩阵系数的编码方案:P10、P1000、B1999 和 FP15。

 

在基数为 10 的位置编码 (P10) 中,是五个标记的序列:一个符号标记(+ 或 -)、尾数的 3 位数字(从 0 到 9)和符号标记(来自E-100到E+100) 的指数。

 

例如,3.14 将表示为 ,并编码为 。下图中展示了一些编码的示例。

 

 

第二步,随 机矩阵生成。

 

大多数实验是在均匀分布的随机矩阵数据集上训练模型的,[−A, A] (with A = 10)。有时,也对具有相同标准偏差 的高斯系数进行采样。

 

在研究特征值问题的分布外泛化时,生成具有不同特征值分布的随机对称矩阵(对应于具有非 iid 系数的随机矩阵)。为此,作者运用高斯系数随机采样对称矩阵M,并计算它们的特征值分解 P是特征向量的正交矩阵。然后,用从另一个分布采样的对角线D’替换M的特征值的对角矩阵D。

 

最后重新计算 ,一个对称矩阵(因为P是正交的),特征值按选择分布,特征向量均匀分布在单位球面上。

 

2

 

实验和结果

 

矩阵转置

 

学习转置矩阵相当于学习其元素的排列。矩形矩阵的排列涉及更长的周期。作者研究了两个公式:

 

1.固定大小情况,数据集中所有矩阵都具有相同维度,只需要学习一个排列。

 

2.可变大小的情况,数据集包括不同维度的矩阵,尽可能多的排列学习。

 

在编码器和解码器中使用四种编码方案,并数据集上训练 1 层、256 个维度和 8 个注意力头 的Transformer。模型学会在超过 99% 的测试用例准确预测解决方案(具有 0% 的容差)。

 

 

矩阵 加法

 

学习两个m×n矩阵的加法相当于学习输入和输出位置之间的对应关系(如在转置问题中),以及在mn对元素上执行浮点表示中两个数字相加的算法。作者对此训练了 1 层或 2 层、8 个注意力头和 512 个维度的 Transformer。

 

对于大小不超过 10 的固定大小矩阵的加法,包括n=m和n≠m两种情况,在 1% 的容差范围达到99% 准确率(并且在 0.5% 内超过 98%)。FP15 模型在 15×15 矩阵的 0.5% 容差内实现了 99.5% 准确率,而 B1999 模型在 20×20 矩阵上实现了 89.7% 准确率和 1% 的容差。

 

维度高达 10 的可变大小矩阵由 2 层Transformer使用 B1999 编码预测,准确率超过 99.5%,容差为 1%。编码器中有一层,解码器中有 6 层的模型在相同的数据集上实现了 77% 和 87% 的准确率。下图总结了实验结果。

 

 

矩阵 乘法

 

维数为m×n的矩阵M与向量 相当于计算V和M之间的m个点积。

 

每次点积计算包含n个乘法和n − 1 个加法,涉及矩阵中的其中一行和向量中的所有系数。模型必须了解这2n个元素在计算中的位置,以及两个运算(加法和乘法)。

 

通过对1 层或2 层、超过5×5矩阵的模型进行实验,作者观察到P10和P1000编码的模型才能训练到高精度。P1000编码性能最好,两层和一层模型之间差别不大。对于5×5和10×10平方矩阵,采用P1000编码的2层Transformer可实现99.9%以上的精度,容差为1%。结果汇总在下图中。

 

 

矩阵M和P的乘法是矩阵向量乘法的进阶版本,其对矩阵 P 中的每一列向量执行上述运算。和以前一样,只有使用P10和P1000的编码模型才能训练高精度预测。

 

超过5×5矩阵和类似大小的矩形矩阵,训练模型精度与向量乘法相同(在 1% 容差下超过 99%),但需要更深的解码器(4 到 6 层)。

 

 

特征值

 

我们把注意力转向由迭代算法解决的非线性问题。

 

作者在编码器或解码器中训练 4 层或 6 层的模型,用以预测对称矩阵的特征值。

 

对于 5×5 随机矩阵的样本,在 5% 的容差下达到 100% 的准确率,在所有四种编码下达到 98.5% 的 1%。对于 8×8 矩阵,在 5% 和 1% 的容差下实现了 100% 和 85% 的准确率。

 

但也遇到了瓶颈,对于大规模问题,模型难以学习:在 10×10 矩阵上,3.6 亿个示例可达 25% 的准确率和 5% 的容差。相比之下,对于5×5矩阵,模型在大约 4000 万个样本中训练到最高准确率,对于8×8矩阵,模型在大约 6000 万个样本中训练到最高准确率。

 

这个限制通过在可变大小的数据集上训练模型能够克服。在维度为 5-10、5-15 和 5-20 的矩阵样本上,模型在 5% 的容差下达到 100% 的准确率,在 1% 容差下达到 88%、94% 和 45%。使用 5-15 模型,10×10 矩阵的特征值可以在 2% 的容差下以 100% 的准确率进行预测,在 1% 容差时为 73%。结果如下图所示。

 

 

特征向量

 

除了特征值,作者还预测了特征向量的正交矩阵。

 

在5×5矩阵上,使用P10和P1000编码的模型在5%容差的情况下,实现了97.0%和94.0%的准确率。FP15 型号的性能较弱,准确率为51.6%,但非对称型号,带有6层FP15编码器和1层P1000解码器,在5%容差下的准确率为93.5%,在1%容差下的准确率为67.5%。P1000模型可以预测6×6矩阵的特征向量,预测准确率为81.5%。

 

 

逆 矩阵

 

5×5矩阵的求逆比之前任务难度更大,P10模型的准确率为 73.6%,P1000模型的准确率为80.4(5%容差,6层编码器和1层解码器)。

 

注意力头数量增加到 10 和 12 对准确率基本没影响,但可以加快训练速度:在大约2.5亿个示例中,8头模型的训练准确率达到75%。非对称模型实现了最高的准确率(90.0%)。

 

 

奇异值分解

 

虽然这项任务与特征分解有关,但事实证明它的学习难度更大:使用P10或P1000编码的多达6层Transformer可以预测4×4矩阵的奇异值分解。单奇异值(容差为5%和1%)的准确率较高,分别为100%和86.7%,完全分解的准确率分别为98.9%和75.3%。

 

 

此外,域外泛化和再训练中,作者为了训练模型,生成独立同分布 (iid) 系数的随机n×n矩阵,从[−A, A]上的均匀分布中采样。

 

Transformer如果想要解决线性代数问题,了解在 Wigner 矩阵上训练模型在不同特征值分布的矩阵上执行方法十分重要。

 

研究人员创建了 10,000 个矩阵的测试集,其分布与训练集不同。然后,生成不同特征值分布的矩阵的测试集:正特征值(特征值替换为其绝对值的 Wigner 矩阵),以及根据均匀、高斯或拉普拉斯定律的特征值分布,标准偏差为 和 。

 

为了提高分布外的准确性,作者在具有不同特征值分布的数据集上训练新模型,并在之前创建的测试集上评估它们。

 

 

最终得到一个重要结果: 常被视为随机矩阵默认模型的 Wigner 矩阵可能不是训练Transformer的最佳选择。 非分布泛化需要特别注意训练数据的生成。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。