天天看點

用Transformer做線代作業,真香!

用Transformer做線代作業,真香!

作者丨莓酊

編輯丨青暮

線性代數(linear algebra)是關于向量空間和線性映射的一個數學分支。

現代線性代數的曆史可以上溯到19世紀中期的英國。1843年,愛爾蘭數學家哈密頓發現四元數。1844年,赫爾曼·格拉斯曼發表他的著作《線性外代數》(Die lineare Ausdehnungslehre),包括今日線性代數的一些主題。1848年,詹姆斯·西爾維斯特引入矩陣(matrix)。阿瑟·凱萊在研究線性變換時引入矩陣乘法和轉置的概念。很重要的是,凱萊使用一個字母來代表一個矩陣,是以将矩陣當做了聚合對象。他也意識到矩陣和行列式之間的聯系。

多少學子魂牽夢繞、夜不能寐的現代線性代數就是這樣形成的。

古語有雲:線代虐我千百遍,我待線代如初戀。搜尋“線代太難了”,谷歌秒給我726, 000個相關結果。

用Transformer做線代作業,真香!

一些同學忍不住吐槽,做線代題感覺自己像個傻子......(摸摸頭)

用Transformer做線代作業,真香!

無論是結構力學到人工智能,深究理工科研究之後會發現到處都是線性代數的身影。線性代數的地位真的重要,這是科研人、技術人在實踐中的最大感受。許多算法都用到線性代數知識,比如非常熱門的深度學習,它的底層實作方式用到好多線性代數方面的知識。如果底層基礎打不好,不明白其中的原理,算法實作方式真的很難了解,更不可能去創新了。

12月3日,Facebook 人工智能研究院釋出最新研究,可以用Transformers解決線性代數問題了!

用Transformer做線代作業,真香!

論文位址:https://arxiv.org/pdf/2112.01898.pdf

Transformer是 Google 的團隊在 2017 年提出的一種 NLP經典模型。Transformer采用注意力機制( Self-Attention)來提高模型訓練速度,它抛棄了傳統的CNN和RNN,整個網絡結構完全是由Attention機制組成。主要由兩部分組成:encoder和decoder。

用Transformer做線代作業,真香!

Transformer最初為機器翻譯設計,後被應用于各種問題,從文本生成到圖像處理、語音識别等等。在數學中,Transformer大多應用集中在符号計算上,它“操作”數學符号,就像“操作”自然語言中的單詞一樣。

但數學≠ 符号處理:許多實際應用涉及數值計算,精确(如算術)或近似(如函數計算、方程數值解)。使用Transformer數值計算的研究較少,而且多數早期算術實驗結果差強人意。

但有一個不可回避的問題:數學和科學中的大多數問題都涉及符号計算和數值計算。如果我們希望Transformer端對端解決這些問題,它們就必須能進行高精度數值計算。

作者Fran ois Charton訓練Transformer計算線性代數問題的解,線性代數是許多科學問題的基本組成部分:矩陣的基本運算、矩陣求逆、特征值和奇異值分解。

接下來我們将介紹四種将問題和解決方案表示為Transformer可處理的編碼方案,在生成的随機矩陣資料集上訓練小型Transformer(最多 6 層,1000 到 5000 萬個可訓練參數)。訓練過的模型計算問題的近似解(到其L1範數的幾個百分比),精确度超過90%(大多數情況下為99%)。

同時,泛化訓練過的模型,通過更多樣化的資料集(特别是具有非獨立和相同分布系數矩陣進行的訓練),能夠大大提高域外精度。

作者相信這些結果為Transformer打開了全新世界的大門,為Transformer作為數學和科學問題的端對端解算器鋪平了道路。

1

問題模組化

用Transformer做線代作業,真香!

第一步,将矩陣編碼為序列。

因為問題的輸入和輸出是矩陣,要由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 矩陣),以及根據均勻、高斯或拉普拉斯定律的特征值分布,标準偏差為和。

為了提高分布外的準确性,作者在具有不同特征值分布的資料集上訓練新模型,并在之前建立的測試集上評估它們。

用Transformer做線代作業,真香!

最終得到一個重要結果:常被視為随機矩陣預設模型的 Wigner 矩陣可能不是訓練Transformer的最佳選擇。非分布泛化需要特别注意訓練資料的生成。

繼續閱讀