XLNet震驚了NLP領(lǐng)域,這種語言建模的新方法在20個NLP任務(wù)上的表現(xiàn)優(yōu)于強大的BERT,并且在18個任務(wù)中獲得了最先進的結(jié)果。
XLNet可能會改變語言建模,這就是為什么它是任何NLP從業(yè)者的重要補充。在本文中,我們將討論XLNet背后的原理,它使它比BERT更好。為了更好地理解它,我們還將研究它之前的相關(guān)技術(shù)。
語言建模簡介
在2018年,隨著語言建模任務(wù)處于研究的中心,NLP領(lǐng)域取得了重大的進步。
語言建模是在給定所有先前的單詞的情況下,預(yù)測句子中的下一個單詞的任務(wù)。語言模型現(xiàn)在已經(jīng)成為NLP管道的重要組成部分,因為它們?yōu)楦鞣N下游任務(wù)提供了支撐。語言模型捕獲幾乎普遍有用的輸入文本的一些特性。
早期的語言模型ULMFiT和ELMo,兩者都是基于LSTM的語言模型。事實上,ULMFiT和ELMo都取得了巨大的成功,在眾多任務(wù)中取得了最先進的成果。但我們將看到XLNet如何實現(xiàn)前所未有的成果。
用于語言建模的自回歸模型(AR)
XLNet是一種通用的自回歸預(yù)訓(xùn)練模型。自回歸模型僅僅是一種前饋模型,它根據(jù)給定上下文的一組單詞預(yù)測下一個詞。但是在這里,上下文單詞被限制在兩個方向,前向或后向。
可以按順序運行自回歸模型以生成新序列!從x1,x2,…,xk開始,預(yù)測xk+1。然后使用x2,x3,…,xk+1來預(yù)測xk+2,依此類推。GPT和GPT-2都是自回歸語言模型。所以,它們在文本生成中變現(xiàn)不錯。
自回歸語言模型的問題在于它只能使用前向上下文或后向上下文,這意味著它不能同時使用前向和后向上下文,從而限制其對上下文和預(yù)測的理解。
自動編碼器(AE)語言建模
與AR語言模型不同,BERT使用自動編碼器(AE)語言模型。AE語言模型旨在從損壞的輸入重建原始數(shù)據(jù)。
在BERT中,通過添加[MASK]來破壞預(yù)訓(xùn)練輸入數(shù)據(jù)。例如,'Goa has the most beautiful beaches in India'將成為‘Goa has the most beautiful [MASK] in India’,該模型的目標是根據(jù)上下文詞預(yù)測[MASK]詞。自動編碼器語言模型的優(yōu)點是,它可以看到前向和后向的上下文。但是,由于在輸入數(shù)據(jù)中添加[MASK]引入了微調(diào)模型的差異。
BERT有什么問題?
雖然通過使用AE語言建模BERT幾乎在所有NLP任務(wù)中都實現(xiàn)了SOTA,但它的實現(xiàn)仍然存在一些漏洞。BERT模型有兩個主要缺點:
1.由于掩蔽導(dǎo)致的微調(diào)差異
訓(xùn)練BERT以預(yù)測用特殊[MASK]標記替換的標記。問題是在下游任務(wù)中微調(diào)BERT時,[MASK]標記永遠不會出現(xiàn)。在大多數(shù)情況下,BERT只是將非掩碼標記復(fù)制到輸出中。
那么,它真的會學(xué)會為非掩碼標記生成有意義的表示嗎?它也不清楚如果輸入句中沒有[MASK]標記會發(fā)生什么。
2.預(yù)測的標記彼此獨立
BERT假設(shè)在給定未掩蔽的的標記的情況下,預(yù)測的(掩蔽的)標記彼此獨立。為了理解這一點,我們來看一個例子。
Whenever she goes to the[MASK][MASK]she buys a lot of[MASK].
這可以填寫為:
Whenever she goes to theshopping center, she buys a lot ofclothes.
或者
Whenever she goes to thecinema hallshe buys a lot ofpopcorn.
而句子:
Whenever she goes to thecinema hallshe buys a lot ofclothes.
是無效的。BERT并行預(yù)測所有掩蔽的的位置,這意味著在訓(xùn)練期間,它沒有學(xué)會處理同時預(yù)測的掩蔽的標記之間的依賴關(guān)系。換句話說,它不會學(xué)習(xí)到預(yù)測之間的依賴關(guān)系。它預(yù)測標記彼此之間互相獨立。這可能是一個問題的原因是這減少了BERT一次學(xué)習(xí)的依賴關(guān)系的數(shù)量,使得學(xué)習(xí)信號比它原本可能的更弱。
XLNet:排列語言建模
BERT在所有傳統(tǒng)語言模型中脫穎而出的原因在于它能夠捕獲雙向上下文。同樣,它的主要缺陷是在預(yù)訓(xùn)練引入[MASK]標記和并行獨立預(yù)測。
如果我們以某種方式構(gòu)建一個包含雙向上下文的模型,同時避免[MASK]標記和并行獨立預(yù)測,那么該模型肯定會勝過BERT并取得最先進的結(jié)果。
這基本上就是XLNet所實現(xiàn)的目標。
XLNet通過使用稱為“排列語言建模”的語言建模變體來實現(xiàn)這一點。訓(xùn)練排列語言模型以預(yù)測在給定上下文后的一個標記,就像傳統(tǒng)語言模型一樣,但是不是以連續(xù)順序預(yù)測標記,而是以某種隨機順序預(yù)測標記。為清楚起見,我們以下面的句子為例:
“Sometimes you have to be your own hero.”
傳統(tǒng)的語言模型按照下面的順序預(yù)測標記:
“Sometimes”, “you”, “have”, “to”, “be”, “your”, “own”, “hero”
其中每個標記使用所有前面的標記作為上下文。
在排列語言建模中,預(yù)測的順序不一定是從左到右。例如,它可能是:
“own”, “Sometimes”, “to”, “be”, “your”, “hero”, “you”, “have”
其中“Sometimes”會以看到“own為條件,而“to” 則以看到“own”和“Sometimes”等為條件。
注意如何使用排列語言建模強制模型建模雙向依賴關(guān)系。期望上,模型應(yīng)該學(xué)習(xí)建模所有輸入組合之間的依賴關(guān)系,而傳統(tǒng)語言模型只能在一個方向上學(xué)習(xí)依賴關(guān)系。
XLNet使用Transformer XL
除了使用排列語言建模之外,XLNet還使用了Transformer XL,它可以進一步改善其結(jié)果。
Transformer XL模型背后的主要思想:
相對位置嵌入
循環(huán)機制
在對當前段進行排列語言建模時,緩存并凍結(jié)來自前一段的隱藏狀態(tài)。由于來自前一段的所有單詞都用作輸入,因此不需要知道前一段的排列順序。
雙流自注意力(Two-Stream Self-Attention)
對于使用Transformer模型的語言模型,當預(yù)測位置i處的標記時,該詞的整個嵌入被掩蔽,包括位置嵌入。這意味著模型與它所預(yù)測的標記位置有關(guān)的知識隔絕。
這可能是有問題的,特別是對于句子開頭的位置,其與句子中的其他位置具有顯著不同的分布。為了解決這個問題,作者引入了第二組表示,其中包含位置信息,但僅為了預(yù)訓(xùn)練而屏蔽了實際的標記。第二組表示稱為query stream。訓(xùn)練該模型以使用來自query stream的信息來預(yù)測句子中的每個標記。
包括位置嵌入和詞嵌入的原始表示集稱為content stream。這組表示用于在預(yù)訓(xùn)練期間合并與特定單詞相關(guān)的所有信息。content stream用作query stream的輸入。這個模式稱為“雙流自注意力”。
對于每個單詞,query stream使用ontent stream,該ontent stream對直到當前單詞的單詞的所有可用上下文信息進行編碼。例如,我們在下面的句子中預(yù)測 “calm” 一詞:
其中位于排列前面的詞是 “and”和“papers”。content stream將編碼單詞“and”和“papers”的信息,query stream將編碼 “calm”的位置信息,以及結(jié)合來自content stream的信息,用于預(yù)測單詞 “calm”。
總結(jié)
XLNet必將成為研究中討論的話題。這表明NLP中的語言建模和遷移學(xué)習(xí)還有很多需要探索的地方。
-
語言建模
+關(guān)注
關(guān)注
0文章
5瀏覽量
6278 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22109
發(fā)布評論請先 登錄
相關(guān)推薦
評論