0. XLNet簡介
2018年Bert橫空出世原朝,刷新了很多NLP任務(wù)的SOTA。之后人們開始研究對Bert的改進镶苞,本文介紹的XLNet就是比較成功的另一個模型喳坠。不同于Bert的AutoEncoder模式,XLNet用的是AutoRegressive模式茂蚓。據(jù)說壕鹉,XLNet在20個任務(wù)上比BERT做得更好,的確吸人眼球聋涨。
Bert類(AE)模型的的不足之處在于晾浴,在訓(xùn)練的時候引入了[MASK],而在fine-tune階段并不會出線[MASK]牍白,導(dǎo)致了預(yù)訓(xùn)練與finetune不一致脊凰。[MASK]的另一個問題是假設(shè)MASK掉的token是相互獨立的,然而并不是這樣淹朋,譬如New York笙各。
XLNet提供了一種新的方法钉答,讓AR語言模型從雙向的上下文學(xué)習(xí),避免了AE語言模型中MASK帶來的弊端杈抢。
1. Permutation Language Modeling
AR語言模型只能使用前向的上下文或后向的上下文数尿,那么如何使用雙向的上下文呢,XLNet提出了一個新的目標(biāo)惶楼,叫做重排序語言建模(Permutation Language Modeling)右蹦。
理論上對于長度為T的序列X,存在T歼捐!中排列方式何陆,但實際上由于計算復(fù)雜度的限制,不可能計算所有的序列排列豹储,因此對于每個序列輸入只采樣一個排列方式贷盲。而且在實際訓(xùn)練時,不會打亂序列剥扣,而是通過mask矩陣
實現(xiàn)permutation巩剖。作者特意強調(diào),這樣可以保持與finetune輸入順序的一致钠怯,不會存在pretrain-finetune
差異佳魔。
2. Two-Stream Self-Attention
將序列X打亂順序后有一個很大的問題,就是如何加入位置信息晦炊。在預(yù)測的時候鞠鲜,我們應(yīng)該知道
的位置編碼,而不是上下文編碼断国,同時還要知道
之前的上下文編碼贤姆。
Query stream:只能看到當(dāng)前的位置信息,不能看到當(dāng)前token的編碼并思,如圖b
Content stream:傳統(tǒng)self-attention
庐氮,像GPT一樣對當(dāng)前token進行編碼语稠,如圖a
在預(yù)訓(xùn)練階段的最終預(yù)測只是用Query stream宋彼,在fine-tune階段使用Content stream。
3. Transformer-XL
由于內(nèi)存和算力的限制仙畦,Bert只能支持到512個字符输涕,過長的文本都要截斷,丟棄部分信息慨畸。Transformer-XL參考了RNN莱坎,將前邊的信息以隱藏單元的形式記錄下來。
從圖b可以看出寸士,右上角的token獲取到了遠(yuǎn)遠(yuǎn)大于之前截斷方式的信息檐什,類似CNN的感受野碴卧。