一文看懂XLNet
XLNet論文推薦語:
BERT本身很有效,但它也存在一些問題,比如不能用于生成、以及訓練數據和測試數據的不一致(Discrepancy)。在本文中,我們重點介紹比BERT更強大的預訓練模型XLNet,它為了達到真正的雙向學習,采用了Permutation語言模型、以及使用了雙流自注意力機制,并結合了Transformer-XL的相對位置編碼。
XLNet的論文:
Yang Z, Dai Z, Yang Y, et al. Xlnet: Generalized autoregressive pretraining for language understanding[C]//Advances in neural information processing systems. 2019: 5754-5764.
目錄:
1. Unsupervised Pre-training
目前神經網絡在進行訓練的時候基本都是基于后向傳播(Back Propagation,BP)算法,通過對網絡模型參數進行隨機初始化,然后利用優化算法優化模型參數。但是在標注數據很少的情況下,通過神經網絡訓練出的模型往往精度有限,“預訓練”則能夠很好地解決這個問題,并且對一詞多義進行建模。
預訓練是通過大量無標注的語言文本進行語言模型的訓練,得到一套模型參數,利用這套參數對模型進行初始化,再根據具體任務在現有語言模型的基礎上進行精調。預訓練的方法在自然語言處理的分類和標記任務中,都被證明擁有更好的效果。目前,熱門的預訓練方法主要有:ELMo、OpenAI GPT、BERT和XLNet等。
在NLP中,早期的無監督預訓練模型主要是word2vec(SkipGram、CBOW)和Glove,這些模型都使用了不考慮上下文嵌入的方式得到詞向量。
在2018年初,AllenNLP 和華盛頓大學的研究人員在《Deep contextualized word representations》一文中提出了ELMo。相較于傳統的使用詞嵌入(Word embedding)對詞語進行表示,得到每個詞唯一固定的詞向量,ELMo 利用預訓練好的雙向語言模型,根據具體輸入從該語言模型中可以得到在文本中該詞語的表示。在進行有監督的 NLP 任務時,可以將 ELMo 直接當做特征拼接到具體任務模型的詞向量輸入或者是模型的最高層表示上。這篇論文提出的 ELMo 模型是 2013 年以來 Embedding 領域非常精彩的轉折點,并在 2018 年及以后的很長一段時間里掀起了遷移學習在 NLP 領域的風潮。簡單來說,ELMo 是一種基于語境的深度詞表示模型(Word Representation Model),它可以捕獲單詞的復雜特征(詞性句法),也可以解決同一個單詞在不同語境下的不同表示(語義)。
在ELMo的基礎之上,OpenAI的研究人員在《Improving Language Understanding by Generative Pre-Training》提出了OpenAI GPT。與ELMo為每一個詞語提供一個顯式的詞向量不同,OpenAI GPT能夠學習一個通用的表示,使其能夠在大量任務上進行應用。在處理具體任務時,OpenAI GPT 不需要再重新對任務構建新的模型結構,而是直接在 Transformer 這個語言模型上的最后一層接上 softmax 作為任務輸出層,再對這整個模型進行微調。GPT 采用無監督學習的 Pre-training 充分利用大量未標注的文本數據,利用監督學習的 Fine-tuning 來適配具體的 NLP 任務(如機器翻譯等)。
ELMo和OpenAI GPT這兩種預訓練語言表示方法都是使用單向的語言模型來學習語言表示,而Google提出的BERT則實現了雙向學習,并得到了更好的訓練效果。具體而言,BERT使用Transformer的編碼器作為語言模型,并在語言模型訓練時提出了兩個新的目標:一個是 token-level 級別的MLM(Masked Language Model)和一個是 sentence-level 級別的NSP(Next Sentence Prediction)。MLM是指在輸入的詞序列中,隨機的遮擋上 15% 的詞,并對遮擋部分的詞語進行雙向預測。為了讓模型能夠學習到句子間關系,研究人員提出了讓模型對即將出現的句子進行預測:對連續句子的正誤進行二元分類,再對其取和求似然。
自從ELMo、GPT和BERT出現之后,pretrain+finetune的兩段式訓練方法,成為NLP任務的主流做法。在公開的語料庫上對大模型進行自監督或者無監督的預訓練,然后在特定任務的語料庫上對模型做微調。本文介紹另外一篇類似的算法XLNet。
相關論文:
【1】Peters M E, Neumann M, Iyyer M, et al. Deep contextualized word representations[J]. arXiv preprint arXiv:1802.05365, 2018.
【2】Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. URL https://s3-us-west-2. amazonaws. com/openai-assets/researchcovers/languageunsupervised/language understanding paper. pdf, 2018.
【3】Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
2. AR與AE語言模型
AR:Autoregressive Language Modeling
AE:Autoencoding Language Modeling
AR語言模型:指的是,依據前面(或后面)出現的tokens來預測當前時刻的token,代表有 ELMO, GPT等。
forward:
backward:
AE語言模型:通過上下文信息來預測被mask的token,代表有 BERT , Word2Vec(CBOW) ?。
二者有著它們各自的優缺點:
AR 語言模型:
缺點: 它只能利用單向語義而不能同時利用上下文信息。ELMO 通過雙向都做AR 模型,然后進行拼接,但從結果來看,效果并不是太好。
優點: 對生成模型友好,天然符合生成式任務的生成過程。這也是為什么 GPT 能夠編故事的原因。
AE 語言模型:
缺點: 由于訓練中采用了 [MASK] 標記,導致預訓練與微調階段不一致的問題。BERT獨立性假設問題,即沒有對被遮掩(Mask)的 token 之間的關系進行學習。此外對于生成式問題, AE 模型也顯得捉襟見肘。
優點: 能夠很好的編碼上下文語義信息(即考慮句子的雙向信息), 在自然語言理解相關的下游任務上表現突出。
所以,AR方式所帶來的自回歸性學習了預測 token 之間的依賴,這是 BERT 所沒有的;而 BERT 的AE方式帶來的對深層次雙向信息的學習,卻又是像ELMo還有GPT單向語言模型所沒有的,不管是有沒有替換 [MASK]。于是,自然就會想,如何將兩者的優點統一起來?這時就到了XLNet登場的時間。
3. XLNet提出的方法
3.1 Permutation Language Model
作者發現,只要在 AR中再加入一個步驟,就能夠完美地將AR與AE的優點統一起來,那就是提出Permutation Language Model(PLM)。
具體實現方式是,通過隨機取一句話的一種排列,然后將末尾一定量的詞給遮掩(和 BERT 里的直接替換 [MASK] 有些不同)掉,最后用 AR 的方式來按照這種排列依次預測被遮掩掉的詞。
我們可以發現通過隨機取排列(Permutation)中的一種,就能非常巧妙地通過 AR 的單向方式來習得雙向信息了。
論文中 Permutation 具體的實現方式是通過直接對 Transformer 的 Attention Mask 進行操作。
比如說序號依次為 1234 的句子,先隨機取一種排列3241。于是根據這個排列我們就做出類似上圖的 Attention Mask。先看第1行,因為在新的排列方式中 1 在最后一個,根據從左到右 AR 方式,1 就能看到 234 全部,于是第一行的 234 位置是紅色的(沒有遮蓋掉,會用到),以此類推。第2行,因為 2 在新排列是第二個,只能看到 3,于是 3 位置是紅色。第 3 行,因為 3 在第一個,看不到其他位置,所以全部遮蓋掉...
3.2 Two-Stream Self-Attention
為了實現 Permutation 加上 AR 預測過程,首先我們會發現,打亂順序后位置信息非常重要,同時對每個位置來說,需要預測的是內容信息(對應位置的詞),于是輸入就不能包含內容信息,不然模型學不到東西,只需要直接從輸入復制到輸出就好了。
于是這里就造成了位置信息與內容信息的割裂,因此在 BERT 這樣的位置信息加內容信息輸入 Self-Attention (自注意力) 的流(Stream)之外,作者還增加了另一個只有位置信息作為 Self-Attention 中 Query 輸入的流。文中將前者稱為 Content Stream,而后者稱為 Query Stream。
這樣就能利用 Query Stream 在對需要預測位置進行預測的同時,又不會泄露當前位置的內容信息。具體操作就是用兩組隱狀態? 和? 。其中 ? ?只有位置信息,作為 Self-Attention 里的? 。? 包含內容信息,則作為? 和?。具體表示如下圖所示:
圖:Query stream attention
假如,模型只有一層的話,其實這樣只有 Query Stream 就已經夠了。但如果將層數加上去的話,為了取得更高層的 h,于是就需要 Content Stream 了。h 同時作為 Q K V。如下圖所示:
圖:Content stream attention
于是組合起來就是這樣:
圖:基于雙流注意力機制的排序語言模型
上圖中我們需要理解兩點:
第一點,最下面一層藍色的 Content Stream 的輸入是? ,這個很好懂就是 ? ?對應的詞向量 (Embedding),不同詞對應不同向量,但看旁邊綠色的 Query Stream,就會覺得很奇怪,為什么都是一樣的? ?這個和Relative Positional Encoding 有關。
第二點,Query stream attention圖中為了便于說明,只將當前位置之外的? 作為? 和?,但實際上實現中應該是所有時序上的? 都作為? 和?,最后再交給上圖中的 Query stream 的 Attention Mask 來完成位置的遮蓋。
3.3 Partial Prediction
XLNet還使用了部分預測(Partial Prediction)的方法。因為LM是從第一個Token預測到最后一個Token,在預測的起始階段,上文信息很少而不足以支持Token的預測,這樣可能會對分布產生誤導,從而使得模型收斂變慢。為此,XLNet只預測后面一部分的Token,而把前面的所有Token都當作上下文。具體來說,對長度為? 的句子,我們選取一個超參數? ,使得后面? 的Token用來預測,前面的的Token用作上下文。注意,? 越大,上下文越多,模型預測得就越精確。
例如:只預測和,把和當作上下文信息。
3.4 Transformer-XL
為什么會提出Transformer-XL呢?它的提出主要是為了解決transformer的問題。我們首先分析一下RNN以及Transformer的優缺點。
RNN:
優點:支持可變長,支持記憶,有序列順序關系。
缺點:gradient vanish,耗時無法并行。
Transformer:
優點:并行,考慮到sequence的long term dependency信息(相對于RNN),可解釋性。
缺點:句子與句子之間的關系,batch size也不能很大,空間占用大(因為每個encoder的score matrix(sequenceLen*sequecenLen是? 的空間復雜度) 如下圖:
Transformer編碼固定長度的上下文,即將一個長的文本序列截斷為幾百個字符的固定長度片段(segment),然后分別編碼每個片段,片段之間沒有任何的信息交互。比如BERT,序列長度的極限一般在。因此Transformer-XL提出的動機總結如下:
Transformer無法建模超過固定長度的依賴關系,對長文本編碼效果差。
Transformer把要處理的文本分割成等長的片段,通常不考慮句子(語義)邊界,導致上下文碎片化(context fragmentation)。通俗來講,一個完整的句子在分割后,一半在前面的片段,一半在后面的片段。
《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》論文圍繞如何建模長距離依賴,提出Transformer-XL(XL是extra long的意思):
提出片段級循環機制(segment-level recurrence mechanism),引入一個記憶(memory)模塊(類似于cache或cell),循環用來建模片段之間的聯系。這使得長距離依賴的建模成為可能;也使得片段之間產生交互,解決上下文碎片化問題。
提出相對位置編碼機制(relative position embedding scheme),代替絕對位置編碼。在memory的循環計算過程中,避免時序混淆,位置編碼可重用。
Transformer-XL總結: 片段級循環機制為了解決編碼長距離依賴和上下文碎片化,相對位置編碼機制為了實現片段級循環機制而提出,解決可能出現的時序混淆問題。也可以簡單的理解Transformer-XL=Transformer + RNN,即segment-wise的RNN模型,但是RNN模型的組件是Transformer的Encoder模塊。
相關論文:
【1】Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
【2】Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019.
3.5 Relative Segment Encodings
3.5.1 Absolute Positional Encoding
Transformer使用的是絕對位置編碼,如果我們繼續使用Absolute Positional Encoding的話,對于所有的sequence序列,只要這個字在序列中的位置一樣的話,它的position encoding也會一樣,這樣的話,對于我們concat之后的輸出,我們無法區別每個字的位置。如下圖:The和that的position encoding完全一樣,模型無法區分兩者位置區別。
3.5.2 Relative Position Encoding
所以Transformer-XL 首先分析了position encoding在計算中的作用,然后根據這個結果將交互項轉化為relative position encoding。
The notation (i, ?) refers to the entire row i and (?, j) to the entire column j 。經過計算,這個式子可以分為4項。
a) 這一項中沒有包含? 位置信息,代表的是在第? 行的字應該對第? 列的字提供多大的注意力。這是不管他們兩個字的位置信息的。
b) 這一項捕獲的是模型的global attention,指的是一個字在position?應該要對 position? 付出多大的注意力。例如兩個字的位置越遠,期望它們之間的注意力越小。
c) 這一項捕獲的是在row?的字對其他位置的關注信息,例如在position?是一個字"狗", 應該要對 這個位置特別注意,否則可能出現是“熱”, 出現是“熱狗”的情況。
d) 這個是c) 的逆向表示,指的是的字要關注位置的字。
根據這個觀測,為了轉化relative position, 通過了解了每一項的意義,特別是了解了兩個字的相對位置對這個score的作用。我們將 b), c) and d) 替換為如下式子:
我們可以看到主要的變化:
我們將使用的是相對的position encoding i.e. 取消? 而采用? 相對位置。
每次使用? ,我們都將? 替換為? (兩者的形狀相同)。這是為了區別? (仍使用) 和? ,使得兩者可以各自捕獲有意義的位置信息而不會相互干預,因為? 和? 相匹配出現,而? 和?相匹配出現 。
這一項被替代為? 和? ,這兩個向量的維度為?。因為我們使用的是相對位置編碼,所以我們并不需要提供絕對位置? 。
所以? 的公式被替換為:
3.5.3 Relative Segment Encodings
為了通過輸入形式? 來處理句子對任務,于是需要加入標識 A 句和 B 句的段信息。BERT 里面很簡單,直接準備兩個向量,一個加到 A 句上,一個加到 B 句上。
但當這個遇上 Segment Recurrence Mechanism 時,和位置向量一樣,也出問題了。萬一出現了明明不是一句,但是相同了怎么辦,于是我們就需要最后一個技巧,同樣準備兩個向量, 和? 分別表示在一句話內和不在一句話內。
具體實現是在計算 attention 的時候加入一項:
當? 和? 位置在同一段里就用?,反之用?,在 attention 計算權重的時候加入額外項。
4. 總結
從XLNet論文的結果來看,其在問答、文本分類、自然語言理解等任務上大幅超越BERT。除了相比BERT增加了訓練集之外,XLNet也在模型設計上有較大的改進,比如引入了新的優化目標Permutation Language Modeling(PLM),使用了雙流自注意力機制(Two-Stream Self Attention, TSSA)和與之匹配的Mask技巧。此外,XLNet還使用了Transformer-XL作為Backbone,也使用了Transformer-XL的相對位置編碼。所以,相比BERT,XLNet對長文本的支持更加有效。這些改進為BERT類預訓練模型難以進行生成任務的問題提供了一個解決思路。可以期待,在不久的將來,NLP預訓練模型能夠突破一系列生成任務,實現NLP模型結構化的統一。
5. Reference
【1】Larochelle H, Murray I. The neural autoregressive distribution estimator[C]//Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics. 2011: 29-37.
【2】Uria B, C?té M A, Gregor K, et al. Neural autoregressive distribution estimation[J]. The Journal of Machine Learning Research, 2016, 17(1): 7184-7220.
【3】The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning),Jay Alammar'blog,地址:https://jalammar.github.io/illustrated-bert/
【4】【AI模型】最通俗易懂的XLNet詳解,地址:https://www.bilibili.com/video/av73657563?p=1
【5】Dissecting Transformer-XL,地址:https://mc.ai/dissecting-transformer-xl/
【6】你應該知道的transformer - Don.hub的文章 - 知乎 https://zhuanlan.zhihu.com/p/102591791
【7】飛躍芝麻街:XLNet 詳解 - Andy Yang的文章 - 知乎 https://zhuanlan.zhihu.com/p/71916499
【8】就最近看的paper談談預訓練語言模型發展 - 老宋的茶書會的文章 - 知乎 https://zhuanlan.zhihu.com/p/79371603
【9】XLNet:運行機制及和Bert的異同比較 - 張俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/70257427
【10】請收好這份NLP熱門詞匯解讀:預訓練、Transformer、無監督機器翻譯 - 七月在線 七仔的文章 - 知乎 https://zhuanlan.zhihu.com/p/59158735
【11】論文筆記 —— Transformer-XL - 謝玉強的文章 - 知乎 https://zhuanlan.zhihu.com/p/70745925
【12】香儂讀 | XLnet:比Bert更強大的預訓練模型 - 香儂科技的文章 - 知乎 https://zhuanlan.zhihu.com/p/71759544
【13】從BERT到XLNet,李文哲B站直播視頻,地址:https://www.bilibili.com/video/av89296151?p=5
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
總結
- 上一篇: 注册不到两年半Github标星39k+,
- 下一篇: 这些花式降薪的招数,总有些你想不到的