介紹最基本的XLNet的原理,理解XLNet和BERT的直覺上的不同點。
作者:Xu LIANG
編譯:ronghuaiyang
首發:AI公園公眾號
在發布后不到一周,我周圍的NLP領域的每個人似乎都在談論XLNet。
是的,“在20個任務上比BERT做得更好”確實吸引了我們的眼球。但更重要的是理解它是如何工作的,以及為什么它比BERT表現得更好。所以我寫了這個博客來分享我讀了這篇文章后的想法。
內容結構如下。
- 什么是XLNet?
- XLNet和BERT有什么不同?
- XLNet是如何工作的?
什么是XLNet?
首先,XLNet是一個類似于bert的模型,而不是一個完全不同的模型。但它是一個非常有前途和潛力的。總之,XLNet是一種廣義的自回歸預訓練方法。
那么,什么是自回歸(AR)語言模型?
AR語言模型是利用上下文單詞預測下一個單詞的一種模型。但是在這里,上下文單詞被限制在兩個方向,要么向前,要么向后。
GPT和GPT-2都是AR語言模型。
AR語言模型的優點是擅長NLP生成任務。因為在生成上下文時,通常是正向的。AR語言模型在這類NLP任務中很自然地工作得很好。
但是AR語言模型有一些缺點,它只能使用前向上下文或后向上下文,這意味著它不能同時使用前向上下文和后向上下文。
XLNet和BERT的區別是什么?
與AR語言模型不同,BERT被歸類為自動編碼器(AE)語言模型。
AE語言模型的目的是從損壞的輸入中重建原始數據。
損壞的輸入意味著我們使用在訓練前階段將原始tokeninto替換為 [MASK] 。我們的目標是預測into來得到原來的句子。
AE語言模型的優點是它可以在向前和向后兩個方向上看到上下文。
但是AE語言模型也有其不足之處。它在預訓練中使用了[MASK],但是這種人為的符號在finetune的時候在實際數據中時沒有的,導致了預訓練 — finetune的不一致。[MASK]的另一個缺點是它假設所預測的(mask掉的)token是相互獨立的,給出的是未掩碼的tokens。例如,我們有一句話“It shows that the housing crisis was turned into a banking crisis”。我們蓋住了“banking”和“crisis”。注意這里,我們知道,蓋住的“banking”與“crisis”之間隱含著相互關聯。但AE模型是利用那些沒有蓋住的tokens試圖預測“banking”,并獨立利用那些沒有蓋住的tokens預測“crisis”。它忽視了“banking”與“crisis”之間的關系。換句話說,它假設預測的(屏蔽的)tokens是相互獨立的。但是我們知道模型應該學習(屏蔽的)tokens之間的這種相關性來預測其中的一個token。
作者想要強調的是,XLNet提出了一種新的方法,讓AR語言模型從雙向的上下文中學習,避免了AE語言模型中mask方法帶來的弊端。
XLNet如何工作?
AR語言模型只能使用前向或后向的上下文,如何讓它學習雙向上下文呢?語言模型由預訓練階段和調優階段兩個階段組成。XLNet專注于預訓練階段。在預訓練階段,它提出了一個新的目標,稱為重排列語言建模。 我們可以從這個名字知道基本的思想,它使用重排列。
這里我們用一個例子來解釋。序列順序是[x1, x2, x3, x4]。該序列的所有排列如下。
對于這4個tokens (N)的句子,有24個(N!)個排列。假設我們想要預測x3。24個排列中有4種模式,x3在第1位,第2位,第3位,第4位。
[x3, xx, xx, xx]
[xx, x3, xx, xx]
[xx, xx, x3, xx]
[xx, xx, xx, x3]
4種模式
在這里,我們將x3的位置設為第t位,它前面的t-1個tokens用來預測x3。
x3之前的單詞包含序列中所有可能的單詞和長度。直觀地,模型將學習從兩邊的所有位置收集信息。
具體實現要比上面的解釋復雜得多,這里就不討論了。但是你應該對XLNet有最基本和最重要的了解。
來自XLNet的靈感
與BERT將mask方法公布于眾一樣,XLNet表明重排列法是一種很好的語言模型目標選擇。可以預見,未來在語言模型目標方面的探索工作將會越來越多。
—END—
關注圖像處理,自然語言處理,機器學習等人工智能領域。
歡迎關注微信公眾號
審核編輯 黃昊宇
-
人工智能
+關注
關注
1794文章
47642瀏覽量
239667 -
語言模型
+關注
關注
0文章
538瀏覽量
10315
發布評論請先 登錄
相關推薦
評論