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