【NLP】XLNet詳解

此次寫文原本想把從Transformer-XL到XLNet講一下,可是本身還沒看,先寫一下XLNet的部分,Transformer-XL明天補上~網絡

1. 背景

2018年10月的時候,谷歌放出了稱霸GLUE榜單的BERT模型,當時BERT最大的創新就是提出了Masked Language Model做爲預訓練任務,解決了GPT不能雙向編碼、ELMo不能深度雙向編碼的問題。以後從那天起,不少任務都再也不須要複雜的網絡結構,也不須要大量的標註數據,業界學術界都基於BERT作了不少事情。函數

昨天,也就是2019年6月19日,谷歌又放出了一個模型XLNet,找到並解決了BERT的缺點,刷爆了BERT以前的成績(固然數據、算力相比去年都增長了不少)。驚醒你們不要總被牽着走,創新總會從某個縫裏鑽出來。學習

首先介紹兩種無監督目標函數:優化

  1. AR(autoregressive):自迴歸,假設序列數據存在線性關係,用 [公式] 預測 [公式] 。之前傳統的單向語言模型(ELMo、GPT)都是以AR做爲目標。
  2. AE(autoencoding):自編碼,將輸入複製到輸出。BERT的MLM就是AE的一種。

AR是之前經常使用的方法,但缺點是不能進行雙向的編碼。所以BERT採用了AE,獲取到序列全局的信息。但本文做者指出了BERT採用AE方法帶來的兩個問題:編碼

  1. BERT有個不符合真實狀況的假設:即被mask掉的token是相互獨立的。好比預訓練時輸入:「天然[Mask][Mask]處理」,目標函數實際上是 p(語|天然處理)+p(言|天然處理),而若是使用AR則應該是 p(語|天然)+p(言|天然語)。這樣下來BERT獲得的機率分佈也是基於這個假設的,忽略了這些token之間的聯繫。
  2. BERT在預訓練和精調階段存在差別:由於在預訓練階段大部分輸入都包含[Mask],引入了噪聲,即便在小部分狀況下使用了其餘token,但仍與真實數據存在差別。

以上就是BERT採用AE方法存在的痛點,接下來請看XLNet如何解決這些問題。spa

2. XLNet

與其說XLNet解決了BERT的問題,不如說它基於AR採用了一種新的方法實現雙向編碼,由於AR方法不存在上述兩個痛點。3d

XLNet的創新點是Permutation Language Modeling,以下圖:orm

  • 理論上

對於長度爲T的序列x,存在T!種排列方法,若是把 [公式] 從新排列成 [公式] ,再採用AR爲目標函數,則優化的似然爲 [公式] cdn

由於對於不一樣的排列方式,模型參數是共享的,因此模型最終能夠學習到如何彙集全部位置的信息。blog

  • 操做上

因爲計算複雜度的限制,不可能計算全部的序列排列,所以對於每一個序列輸入只採樣一個排列方式。並且在實際訓練時,不會打亂序列,而是經過mask矩陣實現permutation。做者特地強調,這樣能夠保持與finetune輸入順序的一致,不會存在pretrain-finetune差別。

2.1 Two-Stream Self-Attention

解決了核心問題,接下來就是實現的細節問題了。其實上面打亂順序後有一個很大的問題,就是在預測第三個x的時候模型預測的是 [公式] ,若是把排列方式換成 [公式] ,則應該預測 [公式] ,但模型是不知道當前要預測的是哪個,所以輸出的值是同樣的,即 [公式] ,這就不對了。因此說要加入位置信息,即 [公式][公式] ,讓模型知道目前是預測哪一個位置的token。

那下一個問題又來了,傳統的attention只帶有token編碼,位置信息都在編碼裏了,而AR目標是不容許模型看到當前token編碼的,所以要把position embedding拆出來。怎麼拆呢?做者就提出了Two-Stream Self-Attention。

Query stream:只能看到當前的位置信息,不能看到當前token的編碼

[公式]

Content stream:傳統self-attention,像GPT同樣對當前token進行編碼

[公式]

預訓練階段最終預測只使用query stream,由於content stream已經見過當前token了。在精調階段使用content stream,又回到了傳統的self-attention結構。

下面的圖起碼看3遍~看懂爲止,圖比我講的明白。。

另外,由於不像MLM只用預測部分token,還須要計算permutation,XLNet的計算量更大了,所以做者提出了partial prediction進行簡化,即只預測後面1/K個token。

2.2 Transformer-XL

爲了學習到更長距離的信息,做者沿用了本身的Transformer-XL。



(太困了。。明天繼續好很差)

相關文章
相關標籤/搜索