Transformer升级之路:二维位置的旋转式位置编码
?PaperWeekly 原創 ·?作者?|?蘇劍林
單位?|?追一科技
研究方向?|?NLP、神經網絡
在之前的文章 Transformer 升級之路:博采眾長的旋轉式位置編碼中我們提出了旋轉式位置編碼 RoPE 以及對應的 Transformer 模型 RoFormer。由于筆者主要研究的領域還是 NLP,所以本來這個事情對于筆者來說已經完了。但是最近一段時間,Transformer 模型在視覺領域也大火,各種 Vision Transformer(ViT)層出不窮,于是就有了問題:二維情形的 RoPE 應該是怎樣的呢?
咋看上去,這個似乎應該只是一維情形的簡單推廣,但真實情況卻遠比我們想象中復雜,本文就對此做一個分析,從中深化我們對 RoPE 的理解。
二維RoPE
什么是二維位置?對應的二維 RoPE 又是怎樣的?它的難度在哪里?在這一節中,我們先簡單介紹二維位置,然后直接給出二維 RoPE 的結果和推導思路,在隨后的幾節中,我們再詳細給出推導過程。
1.1 二維位置
在 NLP 中,語言的位置信息是一維的,換句話說,我們需要告訴模型這個詞是句子的第幾個詞;但是在 CV 中,圖像的位置信息是二維的,即我們需要告訴模型這個特征是在第幾行、第幾列。這里的二維指的是完整描述位置信息需要兩個數字,并不是指位置向量的維數。
有讀者可能想:簡單展平后當作一維的處理不行嗎?確實不大行,比如一個 的 feature map,位置 展平后就變成了 ,而位置 和 展平后就分別變成了 和 ,兩者與 的差分別是 h 和 1。然而,按照我們直觀的認識,、 它們與 的距離應該是一樣的才對,但是展平后卻得到了不一樣的 h 和 1,這未免就不合理了。
所以,我們需要專門為二維情形設計的位置編碼,不能簡單地展平為一維來做。
1.2 標準答案
經過后面的一番推導,得到二維 RoPE 的一個解為:
其中這個解很容易理解,它是兩個一維 RoPE 組成的分塊矩陣,實現上它就是將輸入向量分為兩半,一半施加 x 的一維 RoPE,一半施加 y 的一維 RoPE。由此形式我們也不難類比三維、四維等位置的 RoPE。
矩陣 (1) 是一個正交矩陣,它滿足兩個關鍵性質:
1. 相對性: 即 ,也正是由于這個性質,RoPE 才具有通過絕對位置實現相對位置的能力;
2. 可逆性: 給定 可以反解出 ,這意味著對位置信息的編碼是無損的;
某種意義上來說,式 (1) 是滿足上述兩個性質的最簡單解,也就是說,雖然存在略有不同的解滿足上述兩個性質,但是它們形式上和實現上都相對復雜些。
1.3?推導思路
事后來看,RoPE 其實就是找到了矩陣 ,使得滿足“相對性”條件:
所以,不難想到,二維 RoPE 的基本要求也是滿足相對性,即要找到矩陣 ,使得它滿足二維的相對性條件 。不過,如果僅僅是這個要求的話,可行解就很多了,比如直接讓:
但這個解的問題是,我們無法從 逆向推出 ,這意味著這個選擇對位置信息來說是有損的,所以我們需要多一個“可逆性”,保證可以從位置矩陣中無損地重構出原始位置信號。
對此,我們有兩個比較自然的途徑選擇:1)四元數;2)矩陣指數。接下來我們將會逐一介紹它們。
四元數
在一維 RoPE 的推導中,我們主要以復數為工具,而四元數(Quaternion)[1] 是復數的推廣,它同時也保留了復數的很多性質,所以用它來推導二維 RoPE 也算是一個自然的思路。不過很遺憾,這是一條走不通的途徑,但筆者仍然將思考過程放置在此,供大家參考。
2.1 復數與矩陣
在高中時我們就學習過,復數 跟二維向量 是一一對應的(為了跟后面的四元數對齊,這里把虛數單位 也加粗了),但這個對應關系只能保持加減法對應(因為向量沒有通用的乘法運算)。更精妙的對應是將復數與矩陣對應:
在這個映射下,復數的加減乘除與矩陣的加減乘除一一對應,比如:
所以,矩陣映射才是復數域的完全同構,而向量映射只是直觀的幾何理解。
復數的矩陣映射也是 RoPE 的重要基礎,在 Transformer 升級之路:博采眾長的旋轉式位置編碼中我們已經推導得到 RoPE 的復數表示是 ,所以根據復數的矩陣映射, 就對應著矩陣:
從而得到了一維 RoPE 的矩陣形式。
2.2 四元數簡介
前面說了,四元數是復數是一種推廣,事實上它還是矩陣的“鼻祖”,從歷史上來說,是先有四元數然后才有一般的矩陣運算,并且四元數啟發了矩陣的很多運算。早年筆者也寫了《與向量的淵源極深的四元數》[3] 、《幾何的數與數的幾何:超復數的淺探究》[4] 等文章來介紹四元數,歡迎讀者參考。
如果說復數是一個二維向量,那么四元數就是一個四維向量,表示為 ,這里的 ,但是它們本身都各不相等,幾個基之間的運算規則是:
在當時它給人們最大的沖擊是非交換性,比如 。但除此之外,它跟復數運算其實是高度相似的。
比如類似復數的歐拉公式:
這里 。此外,還有類似的矩陣映射:
2.3?違背相對性
關于這些公式背后的起源,那就說來話長了,這里也不打算細談,有興趣的讀者請自行搜索資料閱讀。有了歐拉公式和指數映射后,讀者或許反應過來:一維 RoPE 無非是 對應的矩陣映射,那么二維 RoPE 的話將 映射為矩陣形式不就行了?
筆者一開始也是這樣想的,很遺憾,這是錯的。錯在哪里呢?在一維 RoPE 中,我們利用了內積的復數表示:
該恒等式在四元數中同樣成立,因此可以照搬。接著我們利用了復指數:
前兩個等號都可以照搬到四元數中,關鍵是第三個等號在四元數中并不恒成立!一般地,對于兩個四元數?,等式??并不成立!更廣義來說,對于兩個乘法不滿足交換律的對象,一般都有?。
所以,推導到最后,由于指數乘法無法轉換為加法,最后的相對性沒法得到保證。因此通過四元數推導這條路,就此夭折了...
矩陣指數
四元數的矩陣映射表明四元數事實上代表了一簇特定的 4×4 矩陣,四元數推導走不通,那么或許使用一般的矩陣分析可以走得通。事實上確實如此,在這一節中,我們將利用矩陣指數給出一個推導結果。
3.1 矩陣指數
這里的矩陣指數 [5] ,并不是神經網絡的用指數函數作為激活函數的逐位運算,而是是按照冪級數定義的運算:
其中 是指按照矩陣乘法將 k 個 連乘。關于矩陣指數,筆者之前曾寫過《恒等式 det(exp(A)) = exp(Tr(A)) 賞析》[6] ,也歡迎參考閱讀。
矩陣指數是非常重要的一種矩陣運算,它可以直接寫出常系數微分方程組 的解:
當然這跟本文的主題關系不大。對于 RoPE 的推導,我們主要利用到矩陣指數的如下性質:
也就是說,如果 的乘法可以交換,那么矩陣指數就可以像數的指數一樣將乘法轉換為加法。不過要注意這是一個充分不必要條件。
至于怎么把矩陣指數算出來,這里沒法再展開介紹了,但是很多軟件庫已經自帶了矩陣指數運算,比如數值計算庫 scipy 和 tensorflow 都有 expm 函數,而符號計算的話,Mathematica 里邊有 MatrixExp 函數。
3.2 一維通解
為什么能夠將 RoPE 跟矩陣指數聯系起來呢?因為一維的 RoPE 存在比較簡單的指數表達式:
于是筆者開始思考如下形式的矩陣作為 RoPE 的解:
其中 是一個跟 n 無關的矩陣,RoPE 的必要條件是滿足“相對性”條件 (2),于是我們分析:
這里先假設??是可交換的,那么根據式(13)有:
要讓?,只需要滿足:
這便是“相對性”給出的約束條件,剛才我們還假設了??是可交換的,現在可以檢驗滿足這個等式的??一定是可交換的,所以結果是自洽的。
這也就是說,對于任何滿足 的矩陣 , 都是方程(2)的解,并且還可以證明它一定是正交矩陣。對于 的矩陣來說,它的 的通解是 ,于是就有了如式(14)的解。
3.3?二維約束
類似地,對于二維 RoPE,我們考慮:
作為候選解。重復上述關于“相對性”條件的推導:先假設?是可交換的,那么我們可以得到如下約束條件:
然而,?與??可交換,意味著?、、?和??都可交換,但是上述兩個約束只能保證?和?可交換,不能保證后兩者的交換性,所以我們需要把它作為約束條件補充上去,得到:
不難證明在前兩個條件下,新增的約束條件也相當于?。
3.4 RoPE現身
由于滿足前兩個條件的 2×2 矩陣只有一個獨立參數,不滿足“可逆性”,所以我們至少要考慮 3×3 矩陣,它有 3 個獨立參數:
為了保證可逆性,我們不妨設??是“正交”的,比如設:
不失一般性還可以設 a=1,那么由條件 解得 b=0,c=0,即??只能是全零解,這不符合我們的要求。Mathematica 的求解代碼為:
B[a_,?b_,?c_]?=?{{0,?-a,?-b},?{a,?0,?-c},?{b,?c,?0}}; B1?=?B[1,?0,?0]; B2?=?B[0,?b,?c]; Solve[{Dot[B1,?B2]?==?Dot[B2,?B1]},?{b,?c}]因此,我們至少要考慮 4×4 矩陣,它有 6 個獨立參數,不失一般性,考慮正交分解:
解得:
求解代碼:
B[a_,?b_,?c_,?d_,?e_,?f_]?=?{{0,?-a,?-b,?-d},?{a,?0,?-c,?-e},?{b,?c,?0,?-f},?{d,?e,?f,?0}}; B1?=?B[1,?b,?c,?0,?0,?0]; B2?=?B[0,?0,?0,?d,?e,?f]; Solve[{Dot[B1,?B2]?==?Dot[B2,?B1]},?{b,?c,?d,?e,?f}]可以求解結果沒有對 f 提出約束,所以從最簡單起見,我們可以讓 f=1,剩下的 b,c,d,e 全部為 0,此時:
可以增加個參數 θ,完成展開,就得到:
延伸故事
至此,關于二維 RoPE 的推導介紹完畢。現在讀者可能想問的是效果如何?很遺憾,現在還沒有很完整的實驗結果,畢竟筆者之前也沒做過 ViT 相關的工作,而這個二維 RoPE 的推導也剛完成沒多久,所以進展比較慢,只能說初步的結果顯示還是挺有效的。EleutherAI 團隊的成員也實驗過這個方案,效果也比已有的其他位置編碼好。
說到 EleutherAI 團隊,這里再多說幾句。EleutherAI 團隊是前段時候比較火的號稱要“復現 GPT3”的那個團隊,我們在文章 Transformer 升級之路:博采眾長的旋轉式位置編碼中提出了 RoPE 及 RoFormer 后,有幸得到了EleutherAI團隊的關注,他們做了很多補充實驗,確認了RoPE比很多其他位置編碼都更加有效(參考他們的博客《Rotary Embeddings: A Relative Revolution》[7]),這促使我們完成了英文論文《RoFormer: Enhanced Transformer with Rotary Position Embedding》[8]?并提交到了 Arxiv 上。而關于二維 RoPE 的疑問,最初也是來源于 EleutherAI 團隊。
文章小結
本文介紹了我們對 RoPE 的二維推廣,主要以“相對性”、“可逆性”為出發點來確定二維 RoPE 的最終形式,嘗試了四元數和矩陣指數兩種推導過程,最終通過矩陣指數來給出了最終的解,從推導過程中我們還可以深化對 RoPE 的理解。
參考文獻
[1] https://en.wikipedia.org/wiki/Quaternion
[2] https://kexue.fm/archives/8397
[3] https://kexue.fm/archives/898
[4] https://kexue.fm/archives/2291
[5] https://en.wikipedia.org/wiki/Matrix_exponential
[6] https://kexue.fm/archives/6377
[7] https://blog.eleuther.ai/rotary-embeddings/
[8] https://arxiv.org/abs/2104.09864
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的Transformer升级之路:二维位置的旋转式位置编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 军贸局何时成立?
- 下一篇: 民航FCOPS是什么意思?