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