XLnet

自迴歸語言模型(Autoregressive LM)

 語言模型其實是根據上文內容預測下一個可能跟隨的單詞,就是常說的自左向右的語言模型任務,或者反過來也行,就是根據下文預測前面的單詞,這種類型的LM被稱爲自迴歸語言模型。GPT 就是典型的自迴歸語言模型。ELMO儘管看上去利用了上文,也利用了下文,但是本質上仍然是自迴歸LM,這個跟模型具體怎麼實現有關係。ELMO是做了兩個方向(從左到右以及從右到左兩個方向的語言模型),但是是分別有兩個方向的自迴歸LM,然後把LSTM的兩個方向的隱節點狀態拼接到一起,來體現雙向語言模型這個事情的。所以其實是兩個自迴歸語言模型的拼接,本質上仍然是自迴歸語言模型。

自迴歸語言模型有優點有缺點,缺點是隻能利用上文或者下文的信息,不能同時利用上文和下文的信息,當然,貌似ELMO這種雙向都做,然後拼接看上去能夠解決這個問題,因爲融合模式過於簡單,所以效果其實並不是太好。它的優點,其實跟下游NLP任務有關,比如生成類NLP任務,比如文本摘要,機器翻譯等,在實際生成內容的時候,就是從左向右的,自迴歸語言模型天然匹配這個過程。而Bert這種DAE模式,在生成類NLP任務中,就面臨訓練過程和應用過程不一致的問題,導致生成類的NLP任務到目前爲止都做不太好。

自編碼語言模型(Autoencoder LM)

自迴歸語言模型只能根據上文預測下一個單詞,或者反過來,只能根據下文預測前面一個單詞。相比而言,Bert通過在輸入X中隨機Mask掉一部分單詞,然後預訓練過程的主要任務之一是根據上下文單詞來預測這些被Mask掉的單詞,如果你對Denoising Autoencoder比較熟悉的話,會看出,這確實是典型的DAE的思路。那些被Mask掉的單詞就是在輸入側加入的所謂噪音。類似Bert這種預訓練模式,被稱爲DAE LM。

這種DAE LM的優缺點正好和自迴歸LM反過來,它能比較自然地融入雙向語言模型,同時看到被預測單詞的上文和下文,這是好處。缺點是啥呢?主要在輸入側引入[Mask]標記,導致預訓練階段和Fine-tuning階段不一致的問題,因爲Fine-tuning階段是看不到[Mask]標記的。DAE嗎,就要引入噪音,[Mask] 標記就是引入噪音的手段,這個正常。

XLNet的出發點就是:能否融合自迴歸LM和DAE LM兩者的優點。就是說如果站在自迴歸LM的角度,如何引入和雙向語言模型等價的效果;如果站在DAE LM的角度看,它本身是融入雙向語言模型的,如何拋掉表面的那個[Mask]標記,讓預訓練和Fine-tuning保持一致。

XLNet做了些什麼

  Bert這種自編碼語言模型的好處是:能夠同時利用上文和下文,所以信息利用充分。對於很多NLP任務而言,典型的比如閱讀理解,在解決問題的時候,是能夠同時看到上文和下文的,所以當然應該把下文利用起來。在Bert原始論文中,與GPT1.0的實驗對比分析也可以看出來,BERT相對GPT 1.0的性能提升,主要來自於雙向語言模型與單向語言模型的差異。這是Bert的好處,很明顯,Bert之後的改進模型,如果不能把雙向語言模型用起來,那明顯是很喫虧的。當然,GPT 2.0的作者不信這個邪,堅持沿用GPT 1.0 單向語言模型的舊瓶,裝進去了更高質量更大規模預訓練數據的新酒,而它的實驗結果也說明了,如果想改善預訓練語言模型,走這條擴充預序列模型訓練數據的路子,是個多快好但是不省錢的方向。這也進一步說明了,預訓練LM這條路,還遠遠沒有走完,還有很大的提升空間,比如最簡單的提升方法就是加大數據規模,提升數據質量。

但是Bert的自編碼語言模型也有對應的缺點,就是XLNet在文中指出的,第一個預訓練階段因爲採取引入[Mask]標記來Mask掉部分單詞的訓練模式,而Fine-tuning階段是看不到這種被強行加入的Mask標記的,所以兩個階段存在使用模式不一致的情形,這可能會帶來一定的性能損失;另外一個是,Bert在第一個預訓練階段,假設句子中多個單詞被Mask掉,這些被Mask掉的單詞之間沒有任何關係,是條件獨立的,而有時候這些單詞之間是有關係的,XLNet則考慮了這種關係(關於這點原因是否可靠,後面會專門分析)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章