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