Transformer升级之路:Sinusoidal位置编码追根溯源
?PaperWeekly 原創 ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經網絡
最近筆者做了一些理解和改進Transformer的嘗試,得到了一些似乎還有價值的經驗和結論,遂開一個專題總結一下,命名為“Transformer升級之路”,既代表理解上的深入,也代表結果上的改進。
作為該專題的第一篇文章,筆者將會介紹自己對 Google 在《Attention is All You Need》[1] 中提出來的 Sinusoidal 位置編碼的新理解,其中??分別是位置 k?的編碼向量的第 2i, 2i+1 個分量,d 是向量維度。
作為位置編碼的一個顯式解,Google 在原論文中對它的描述卻寥寥無幾,只是簡單提及了它可以表達相對位置信息,后來知乎等平臺上也出現了一些解讀,它的一些特點也逐步為大家所知,但總體而言比較零散。特別是對于“它是怎么想出來的”、“非得要這個形式不可嗎”等原理性問題,還沒有比較好的答案。
因此,本文主要圍繞這些問題展開思考,可能在思考過程中讀者會有跟筆者一樣的感覺,即越思考越覺得這個設計之精妙漂亮,讓人嘆服。
泰勒展開
假設我們的模型為 ,其中標記出來的 分別表示第 m,n 個輸入,不失一般性,設 f 是標量函數。像 Transformer 這樣的純 Attention 模型,它是全對稱的,即對于任意的 m,n,都有:
這就是我們說 Transformer 無法識別位置的原因——全對稱性,簡單來說就是函數天然滿足恒等式 f(x,y)=f(y,x),以至于我們無法從結果上區分輸入是 [x,y] 還是 [y,x]。
因此,我們要做的事情,就是要打破這種對稱性,比如在每個位置上都加上一個不同的編碼向量:
一般來說,只要每個位置的編碼向量不同,那么這種全對稱性就被打破了,即可以用 代替 f 來處理有序的輸入。但現在我們希望能進一步分析位置編碼的性質,甚至得到一個顯式解,那么就不能止步于此。
為了簡化問題,我們先只考慮 m,n 這兩個位置上的位置編碼,將它視為擾動項,泰勒展開到二階:
可以看到,第 1 項跟位置無關,第 2 到 5 項都只依賴于單一位置,所以它們是純粹的絕對位置信息,第 6 項是第一個同時包含 的交互項,我們將它記為 ,希望它能表達一定的相對位置信息。
(此處的泰勒展開參考了知乎問題《BERT 為何使用學習的 position embedding 而非正弦 position encoding?》[2] 上的納米醬的回復。)
相對位置
我們先從簡單的例子入手,假設 是單位矩陣,此時 是兩個位置編碼的內積,我們希望在這個簡單的例子中該項表達的是相對位置信息,即存在某個函數 g 使得:
這里的 是 d 維向量,這里我們從最簡單 d=2 入手。
對于 2 維向量,我們借助復數來推導,即將向量 [x,y] 視為復數 ,根據復數乘法的運算法則,我們不難得到:
其中 是 的共軛復數, 代表復數的實部。為了滿足式(5),我們可以假設存在復數 使得:
這樣兩邊取實部就得到了式(5)。為了求解這個方程,我們可以使用復數的指數形式,即設 得到:
對于第一個方程,代入 n=m 得 ,即 是一個常數,簡單起見這里設為 1 就好;對于第二個方程,代入 n=0 得 ,簡單起見設 ,那么 ,即 ,代入 n=m-1 得 ,那么 只是一個等差數列,通解為 ,因此我們就得到二維情形下位置編碼的解為:
由于內積滿足線性疊加性,所以更高維的偶數維位置編碼,我們可以表示為多個二維位置編碼的組合:
它同樣滿足式(5)。當然,這只能說是式(5)的一個解,但不是唯一解,對于我們來說,求出一個簡單的解就行了。
遠程衰減
基于前面的假設,我們推導出了位置編碼的形式(10),它跟標準的 Sinusoidal 位置編碼(1)形式基本一樣了,只是 的位置有點不同。一般情況下,神經網絡的神經元都是無序的,所以哪怕打亂各個維度,也是一種合理的位置編碼,因此除了各個 沒確定下來外,式(10)和式(1)并無本質區別。
式(1)的選擇是 ,這個選擇有什么意義呢?事實上,這個形式有一個良好的性質:它使得隨著 |m-n| 的增大, 有著趨于零的趨勢。按照我們的直觀想象,相對距離越大的輸入,其相關性應該越弱,因此這個性質是符合我們的直覺的。只是,明明是周期性的三角函數,怎么會呈現出衰減趨勢呢?
這的確是個神奇的現象,源于高頻振蕩積分的漸近趨零性。具體來說,我們將內積寫為:
這樣問題就變成了積分 的漸近估計問題了。其實這種振蕩積分的估計在量子力學中很常見,可以利用其中的方法進行分析,但對于我們來說,最直接的方法就是通過 Mathematica 把積分結果的圖像畫出來:
然后從圖像中我們就可以看出確實具有衰減趨勢:
▲ 通過直接積分估計Sinusoidal位置編碼的內積衰減趨勢那么,問題來了,必須是 才能呈現出遠程衰減趨勢嗎?當然不是。事實上,對于我們這里的場景,“幾乎”每個 [0,1] 上的單調光滑函數 ,都能使得積分 具有漸近衰減趨勢,比如冪函數 。那么, 有什么特別的嗎?我們來比較一些結果。
▲ 幾個不同的 θt 的積分結果(短距離趨勢)
▲?幾個不同的 θt 的積分結果(長距離趨勢)就這樣看上去,除了 比較異常之外(與橫軸有交點),其他很難斷定孰優孰劣,無非就是冪函數在短距離降得快一點,而指數函數則在長距離降得快一點, 整體越接近于 0,那么整體就降得慢一些,等等。
如此看來 也只是一個折中的選擇,沒有什么特殊性,要是筆者來選,多半會選 。還有一個方案是,直接讓 作為各個 的初始化值,然后將它設為可訓練的,由模型自動完成微調,這樣也不用糾結選哪個了。
一般情況
前面兩節中,我們展示了通過絕對位置編碼來表達相對位置信息的思想,加上遠程衰減的約束,可以“反推”出 Sinusoidal 位置編碼,并且給出了關于 的其他選擇。但是別忘了,到目前為止,我們的推導都是基于 這個簡單情況的,對于一般的 ,使用上述 Sinusoidal 位置編碼,還能具備以上的良好性質嗎?
如果 是一個對角陣,那么上面的各個性質可以得到一定的保留,此時:
由積化和差公式得到:
可以看到它也是確實包含了相對位置 m-n,只不過可能會多出 m+n 這一項,如果不需要它,模型可以讓 來消除它。在這個特例下,我們指出的是 Sinusoidal 位置編碼賦予了模型學習相對位置的可能,至于具體需要什么位置信息,則由模型的訓練自行決定。
特別地,對于上式,遠程衰減特性依然存在,比如第一項求和,類比前一節的近似,它相當于積分:
同樣地,振蕩積分的一些估計結果(參考《Oscillatory integrals》[3] 、《學習筆記 3- 一維振蕩積分與應用》[4] 等)告訴我們,該振蕩積分在比較容易達到的條件下,有 時積分值趨于零,因此遠程衰減特性是可以得到保留的。
如果 不是對角陣,那么很遺憾,上述性質都很難重現的。我們只能寄望于 的對角線部分占了主項,這樣一來上述的性質還能近似保留。對角線部分占主項,意味著 d 維向量之間任意兩個維度的相關性比較小,滿足一定的解耦性。
對于 Embedding 層來說,這個假設還是有一定的合理性的,筆者檢驗了 BERT 訓練出來的詞 Embedding 矩陣和位置 Embedding 矩陣的協方差矩陣,發現對角線元素明顯比非對角線元素大,證明了對角線元素占主項這個假設具有一定的合理性。
問題討論
有讀者會反駁:就算你把 Sinusoidal 位置編碼說得無與倫比,也改變不了直接訓練的位置編碼比 Sinusoidal 位置編碼效果要好的事實。的確,有實驗表明,在像 BERT 這樣的經過充分預訓練的 Transformer 模型中,直接訓練的位置編碼效果是要比 Sinusoidal 位置編碼好些,這個并不否認。
本文要做的事情,只是從一些原理和假設出發,推導 Sinusoidal 位置編碼為什么可以作為一個有效的位置,但并不是說它一定就是最好的位置編碼。
推導是基于一些假設的,如果推導出來的結果不夠好,那么就意味著假設與實際情況不夠符合。那么,對于 Sinusoidal 位置編碼來說,問題可能出現在哪呢?我們可以逐步來反思一下。
第一步,泰勒展開,這個依賴于 是小量,筆者也在 BERT 中做了檢驗,發現詞 Embedding 的平均模長要比位置 Embedding 的平均模長大,這說明 是小量某種程度上是合理的,但是多合理也說不準,因為 Embedding 模長雖然更大但也沒壓倒性;
第二步,假設 是單位陣,因為上一節我們分析了它很可能是對角線占主項的,所以先假設單位陣可能也不是太大的問題;第三步,假設通過兩個絕對位置向量的內積來表達相對位置,這個直覺上告訴我們應該是合理的,絕對位置的相互應當有能力表達一定程度的相對位置信息;
最后一步,通過自動遠程衰減的特性來確定 ,這個本身應該也是好的,但就是這一步變數太大,因為可選的 形式太多,甚至還有可訓練的 ,很難挑出最合理的,因此如果說 Sinusoidal 位置編碼不夠好,這一步也非常值得反思。
文章小結
總的來說,本文試圖基于一些假設,反推出 Sinusoidal 位置編碼來,這些假設具有其一定的合理性,也有一定的問題,所以相應的 Sinusoidal 位置編碼可圈可點,但并非毫無瑕疵。
但不管怎樣,在當前的深度學習中,能夠針對具體的問題得到一個顯式解,而不是直接暴力擬合,Sinusoidal 位置編碼是一個不可多得的案例,值得我們思考回味。
參考文獻
[1] https://arxiv.org/abs/1706.03762
[2] https://www.zhihu.com/question/307293465/answer/1028613658
[3] https://www.math.ucla.edu/~tao/247b.1.07w/notes8.pdf
[4] https://zhuanlan.zhihu.com/p/60610509
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的Transformer升级之路:Sinusoidal位置编码追根溯源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金产品风险特征由低到高 投资时要关注
- 下一篇: 口语语言理解(SLU)最新资源库:综述、