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