【论文串讲】从GPT和BERT到XLNet
“?本文是本專欄即將發(fā)表的文本預訓練系列里面的一個章節(jié),主要講了XLNet的思路和具體實現細節(jié),之所以叫XLNet是因為它以Transformer- XL為基礎。XLNet是一種廣義的自回歸預訓練模型,它提出了Permuted Language Model的思路,將BERT和GPT的各自優(yōu)點結合在一起。為了解決實現一個細節(jié)上的問題,它還創(chuàng)新地提出了“雙流自注意力機制”。那么具體是怎么展開的,就來一起看看吧!。
”
作者:潘小小,字節(jié)跳動AI-Lab算法工程師,專注機器翻譯,會講法語,喜歡音樂,寫文,記錄,無人機航拍(剛入坑)。
本文涉及的論文鏈接: ?XLNet: Generalized Autoregressive Pretraining for Language Understanding(https://arxiv.org/abs/1906.08237)
「在開頭先列出本文中涉及到的名詞縮寫:」
「LM」 : Language Model,語言模型
「AR」 : Auto-Regressive,自回歸
「AE」 : Auto-Encoding,自編碼
「MLM」 : Masked Language Model
「PLM」 : Permuted Language Model
「NLU」 : Natural Language Understanding
「NLG」 : Natural Language Generation
「1. GPT」
「關鍵詞:」 單向信息,NLU的pretrain-finetune差異
優(yōu)化目標是單向(從左到右或者從右到左)建模序列的聯(lián)合概率,是傳統(tǒng)意義上的語言模型,后預測的詞以先預測的詞為條件,比較適合文本生成任務,但是缺陷是只使用了單向的語言表征信息,無法獲取雙向上下文信息表征,而文本理解任務中經常需要用到雙向的上下文信息(比如,完形填空),因此,這就帶來了pre- train階段和下游任務的不一致。
「2. BERT」
「關鍵詞:」 雙向信息,獨立性假設,NLG的pretrain-finetune差異
將一段序列部分“損壞”,優(yōu)化目標是部分損壞的序列恢復到原始序列的獨立概率之積。其優(yōu)點是獲取了雙向上下文信息表征,缺點之一是引入了“ 「獨立性假設」”,也即每一個被mask的token都是獨立被重建的;缺點之二是預訓練階段的[MASK] token在下游任務的finetune中并沒有出現過,這也會造成pretrain階段和下游生成類任務的不一致。
如果當前token被mask,則 ? ?否則 ?
?為部分損壞的序列
**3. XLNet (AR + MLM - > PLM) **
GPT和BERT的對比如下圖所示
「我們的核心的關注點是: 如何取兩者之長,避兩者之短」 。首先要提到的就是XLNet這篇工作:XLNet是一種廣義的Auto- Regressive模型,它可以看作將序列的聯(lián)合概率分布按照打亂的順序重新因式分解,其將LM的 「順序拆解推廣到隨機拆解」,token之間的自回歸關系不再是基于在 「天然序列」 中的前后順序,而是基于 「打亂后的序列」 中的前后順序。
LM順序拆解(左)和亂序拆解(右)
順序拆解(左): ?
亂序拆解(右): ? ?,( ? ?)
正是因為這種“打亂”(permutation)的機制,模型既可以保留AR的優(yōu)點,規(guī)避AE的缺點(獨立性假設;引入[MASK]),又可以保留AE的優(yōu)點: 使得每個位置的token可以獲取到雙邊的信息(因為序列被打亂了)。這樣的建模方法,也叫做 「Permuted Language Model」(PLM)。
3.1 通過attention去實現Permutation
在具體的實現上,我們并不需要真正地去打亂序列的順序,只需記住Transformer框架下的序列中token的位置和它對應的position encoding「唯一綁定」 (請參考 潘小小:【經典精讀】Transformer模型深度解讀 positional encoding那一節(jié)的內容)。所以,只需要設計合適的attention mask就可以實現對因式分解順序的打亂。
論文里有這么一段,解釋了具體是如何去實現"Permutation"的
?we 「keep the original sequence order」 , use the 「positional encodings」corresponding to the original sequence, and rely on a 「proper attention mask」 in Transformers to achieve permutation of the factorization order.
?舉例來詳細解釋一下,如下的3張圖分別對應了不同的permutation,前2張圖是同樣目標序列輸出對應的不同permutation順序的輸入,第3張圖(從右向左)和前兩張(從左向右)的目標序列不同(注意第3張圖的解碼實際順序是it-read-to-like-,不是圖中畫的從下到上的順序)。同理我們也可以得出"like-to-read-it-I"->"I-like-to-read-it"等permutation的mask。
作者也提供了一張圖來解釋這個機制:下圖都是同一序列不同因式分解順序,在解碼 ? ?時的示意圖。
「XLNet的優(yōu)化目標函數」
sequence ? 「x」 ?的長度為 ?
所有permutation的集合是 ?
3.2. Target-aware Representations
「【問題】」 預測亂序中第t個token時,模型并不知道亂序中第t個對應的是原序列中的第幾個。
回顧一下XLNet的優(yōu)化目標函數中的 ? ?,這個部分描述的是在解碼permutated sequence中第t個位置的token時的概率
,其中 ? ?代表 ? ?經過 「按照permutation進行mask」(上一節(jié)有講怎么mask)之后的Transformer輸出的hidden representation。
我們注意到 ? 和 ? ?的位置(也就是 ? )沒有關系。不管 ? ?是1到T中(總長度為T)的哪個, 都完全一樣。
「【解決方法】Target-aware Representations」
既然模型不知道將要預測的token在原序列中的位置,那么我可不可以告訴它呢?答案是可以的,這就是Target-aware Representations。具體的做法就是在預測 ? ?的時候同時將 ? ?作為輸入傳遞給模型。
那么這時候的 ? ?就變成了
其中 ? ?在 ? ?的基礎上,加上了關于position ? ?的信息
3.3. 雙流自注意力機制(Two-stream Self-attention)
?該機制的提出是為了實現上文所述的Target-aware Representations ?
?在考慮到使用上述Target-aware Representations來整個序列的解碼過程時,發(fā)現了互相矛盾的兩點:
預測 ? ?時, ?
預測 ? ?時, ? 應該同時使用position ? ?和content ?
作者的解決思路是提出一種“雙流機制”,也就是
Query Representation ? ?只看得到之前的token+position,當前的position,但是看不到當前的token
Content Representation ? ?可以看到之前的token+position,當前的token+position
Query Representations和Content Representations的更新過程如下:
「初始化」
Query Stream初始化為隨機初始化:?
Content Stream初始化即相應的Word Embedding:?
「更新的公式」
如果self-attention有M層,對第m層
在finetune的時候,因為沒有了permutation,也就不需要模型去預測 ? ?,因此此時只需要使用content stream就可以了。
3.4. 部分打亂
一個長度為 ? ?的序列有 ?中permutation,這會導致訓練過程中收斂非常的慢,于是我們采取折中的做法:只對序列的末尾幾個token進行打亂,而對前面的部分保留原序列順序。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統(tǒng)計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優(yōu)惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結
以上是生活随笔為你收集整理的【论文串讲】从GPT和BERT到XLNet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习初学者手抄本:数学基础、机器学习
- 下一篇: 【Python基础】零基础学习Pytho