超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
關注小夕並星標,解鎖天然語言處理
搜索、推薦與算法崗求職祕籍git

導讀
做爲 NLP 近兩年來的當紅炸子雞,以 ELMo/BERT 爲表明的語言預訓練技術相信你們已經很熟悉了。簡單回顧下 18 年以來幾個預訓練的重要工做:github

超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

ELMo, GPT and BERT算法

  • ELMo 首先提出了基於語言模型的預訓練技術,成功驗證了在大規模語料上基於語言模型進行文本自監督學習的有效性。
    GPT 提出了 NLP 預訓練技術使用時應該像 CV 預訓練技術同樣,在下游任務中經過 fine-tuning 微調的方式進行,在 GLUE 任務榜單上取得了突破。
    BERT 在 GPT 的基礎上,提出了改進的雙向語言模型學習技術 Mask language model。相較傳統語言模型,Mask language model (aka MLM) 可以更有效的利用文本的上下文信息,在 transformer 這種依賴全局 attention 表示機制的學習器中,更是如虎添翼。BERT 在通用語言理解評估(GLUE)中大幅刷新了基準水平,一舉打破了 11 項 NLP 記錄,成爲新一代語言預訓練技術的大成之做。
    BERT 的發表引起了 NLP 學界和業界對語言預訓練技術的極大熱情,針對 BERT 的一系列改進工做也如雨後春筍般涌出。ERNIE(Baidu)/SpanBert 改進了 MLM 任務的 masking 機制, UniLM 把 GPT/BERT 進行聯合訓練實現了統一語言預訓練,XLM 把 BERT 預訓練技術擴展到多語言。

然而,MLM 雖然解決了傳統 language model 僅能看到單向文本信息的問題,但不得不在預訓練階段引入了不低比例的 [MASK] 掩碼 ID 佔位。這樣在語言模型學習中就存在信息丟失(被掩碼的 token 彼此不可見)。同時,MLM 的樣本構造方式與 fine-tuning 階段的訓練樣本存在 gap,可能影響下游任務的使用效果。針對這兩個問題,XLNet 提出了 Permuted Language Modeling(aka PLM) 預訓練任務。爲了實現PLM,做者提出了雙流機制,也所以拋玉引玉,引出了更多應用並改進雙流機制的工做。框架

本篇文章將從XLNet的雙流機制講起,帶你們一覽近期的優秀工做,它們是百度的ERNIE-GEN、微軟的ProphetNet、UniLMv2和MPNet。ide

XLNet: PLM 和 雙流機制
PLM 任務
PLM的作法是將輸入的順序打亂,好比將「夕小瑤的賣萌屋」,變成「屋小夕的瑤萌賣」後進行單向語言模型的訓練,這樣在預測「萌」時會用到「屋小夕的瑤」的信息,能夠認爲同時利用了上下文。學習

超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

  • 輸入方面,MLM 待預測 token([M])互相間僅可見位置信息(實線鏈接)。PLM 中待預測 token x_2 不可見 token x_4 (虛線鏈接) 、但 token x_4 可見 token x_2 (實線鏈接)。
  • 在 15% 的掩碼比例下,MLM 經過保留了 100% 的位置信息和 85% 的 token 信息,PLM 保留了(指望)92.5 % 的位置信息和 92.5% 的 token 信息。
    對於 PLM 來說,給定一段文本 x = (x1,x2,··· ,xn),就有 n 的階乘中排列組合。在 PLM 的理想世界裏,雖然對於特定序列的文本 x_i,語言模型仍然只能看到位於 x_i 以前的單向文本(上文),但考慮 x_i 以前的序列可能包含整段文本的全部組合,所以仍可認爲 PLM 是有能力建模上下文信息的。

咱們能夠對 MLM 和 PLM 進行 「unified view」 的描述:
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展編碼

左:MLM、右:PLM (圖自 MPNet )
雙流機制
XLNet 爲了實現 PLM 提出了雙流機制。能夠看到 PLM 任務的是經過 Query stream 進行學習的。spa

超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

XLNet 雙流機制
爲了更容易理解,咱們從新整理 XLNet 的雙流輸入,在上節 PLM content stream 輸入的基礎上補充 query stream 輸入。設計

超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
其中 [P] 佔位符表明 PLM 中待預測的 Token,預測順序爲 4 -> 5 -> 2。3d

如下爲 PLM 對應輸入的 self-attention 掩碼矩陣,其中 context (x_1, x_3, x_6) 能夠同時被 content/query stream 全部 tokens 可見。
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
「超一流」預訓練模型
XLNet 定義的雙流機制,其中 query stream 把「預測任務」和輸入文本(content stream)進行了分離,具備很強的通用性。事實上,咱們能夠定義不一樣的 query stream 預訓練任務,甚至定義多個 query stream (多流)。今年以來,涌現出了很多基於多流機制的預訓練工做,其中包括刷新多個語言生成任務 SOTA 的語言生成預訓練技術 ERNIE-GEN(百度)和第二代統一語言預訓練技術 UniLMv2 (微軟)。

目前,基於多流機制的預訓練工做包括語言生成和語言理解兩大類。

「超一流」定義

  • 超一流模型,均包含 2+ 預訓練任務 「流」
    現有工做
  • ERNIE-GEN(百度):Multi-flow 框架,首次在生成預訓練引入 span-by-span 任務,在 pre-training & fine-tuning 階段利用 noise-aware 機制緩解 seq-to-seq 語言生成框架面臨的曝光誤差問題,應用於語言生成任務(accepted by IJCAI 2020)
  • ProphetNet(微軟):Ngram-stream 框架,每一個 stream 單獨建模一個粒度,用於語言生成預訓練 (投稿 icml 2020)
  • UniLMv2(微軟):繼承 unilm v1 的思路,用 PLM 替換原 LM 任務。利用雙流機制,同時作 MLM 和 PLM 任務,應用於語言理解和生成任務 (accepted by ICML 2020)
  • MPNet(微軟):接近 UniLMv2,從「信息保留」理論上更好的解釋了爲何須要同時保留 MLM 和 PLM 兩個流的數據構造方式。預訓練任務僅包含 PLM 任務,應用於語言理解任務
    多流預訓練技術之語言生成
    ERNIE-GEN (Baidu)
    ERNIE-GEN 是百度研究者提出的語言生成預訓練模型。ERNIE-GEN 繼承了通用語言理解預訓練技術 ERNIE1.0 的思想,率先在語言生成預訓練中引入了 Span-by-span 生成流,使得預訓練模型具備的直接生成 Span 級(bigrams/trigrams)完整語義單元的能力。

除了 Span-by-span 生成流,ERNIE-GEN 中還包括 Contextual 流(建模待生成語義單元前的上文信息)和一個 Word-by-Word 生成流。所以 ERNIE-GEN 設計了 Mulit-flow Attention 模塊來進行多流的聯合學習。
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

ERNIE-GEN: Multi-Flow Attention 實現
同時,ERNIE-GEN 在預訓練階段即有意識的設計了填充生成 (Infilling generation) 和噪音感知 (Noise-aware) 機制,來緩解 Sequence-to-Sequence 生成框架面臨的曝光誤差問題。

ERNIE-GEN 論文地址https://paperswithcode.com/paper/ernie-gen-an-enhanced-multi-flow-pre-training

ERNIE-GEN 開源地址https://github.com/PaddlePaddle/ERNIE/tree/repro/ernie-gen

ProphetNet (微軟)
ProphetNet 是微軟研究者提出的語言生成預訓練模型。與 ERNIE-GEN 相似的,ProphetNet 一樣關注了語言生成中模型建模完整語義單元的能力,並提出了 N-gram stream 多流機制來解決該問題

ProphetNet 預訓練時會同時建模多個不一樣粒度的語義單元。ProphetNet 把這種同時建模多種粒度的機制叫 「Future N-gram Prediction」。在實際預訓練中,出於效果和效率的權衡,ProphetNet 僅使用 1-gram (word) 和 2-gram (bigram) 兩個預測流。
*超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

此外,ProphetNet 在預訓練中除絕對編碼 embedding 外,還額外引入了相對位置編碼 embedding,不過論文並無作相關的消融實驗。

ProphetNet 論文地址https://arxiv.org/abs/2001.04063

ProphetNet 開源地址https://github.com/microsoft/ProphetNet

多流預訓練技術之語言理解
接下來咱們介紹基於多流機制的語言理解預訓練模型。

UniLMv2 (微軟)
UniLMv2 是微軟研究者提出的第二代統一語言預訓練模型。與 UniLM v1 相比,v2 保留了 v1 版本的 MLM 任務,但把傳統 language model 任務替換成了 PLM 任務。
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
UniLMv2 中,MLM 和 PLM 的聯合建模是經過相似 XLNet 的多流機制實現的。

UniLMv2 在 PLM 建模中還提出了 「partially autoregressive」 機制。傳統的 「autoregressive」 預測是 token-by-token 的, 「partially autoregressive」 的預測則是包含一個相似 Span 的概念(論文中稱之爲 block-wise masking),在生成的時候,組成 Span 的 token 是一塊兒預測的,也即在 PLM 中進行 Span-by-Span 預測。
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展

「partially autoregressive」 預測:(x_1, x_3, x_6) -> t=1, predict span by (x_4, x_5) -> t=2, predict token by (x_2)

UniLMv2 15% mask 比例裏,其中 40% 按 n-gram (span) 進行 mask, 60% 按 token 進行 mask。

UniLMv2 在論文作了很是完善的策略消歧實驗,有興趣的同窗能夠直接去圍觀。

UniLMv2 論文地址https://arxiv.org/abs/2002.12804

UniLMv2 開源地址https://github.com/microsoft/unilm

MPNet (微軟)
MPNet 也是微軟研究者的工做。這篇工做和 UniLMv2 比較神似,都是在探討如何融合 MLM 和 PLM 這兩種任務。MPNet 論文首先從統一的視角對 MLM 和 PLM 進行對比:

  • 輸出依賴(Output Dependency): MLM 假設被掩碼的 tokens 是相互獨立的(或者說他們彼此間是互相屏蔽的),這樣建模上下文的時候就存在信息丟失。而 PLM 的待預測的 tokens 預測順序能夠有 N 階乘的排列組合,所以能夠更好的建模待預測 tokens 的上下文。
  • 輸入差別(Input Discrepancy): MLM 中 mask 掩碼隱藏了 token 信息,但經過「佔位」的方式保留了位置信息。而標準的 PLM 待預測的 token 只能看到對應 permute 序列的前序部分,在 15% 預測比例下,指望能看到 85% + 7.5% = 92.5% 的 token 和 位置信息。
    MPNet 在輸入上保留了 MLM 的掩碼 [M] 進行佔位,而輸出僅進行 PLM 的學習。所以,在輸入上 MPNet 和 UniLMv2 是很是類似的,主要的區別是 UniLMv2 的輸出也進行 MLM 的學習。
    超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
    MPNet:輸入包含 MLM 的掩碼佔位、輸出僅進行 PLM 的學習

MPNet 的實驗作的比較紮實,消融實驗分別驗證了 「position compensation」([Maskl] 佔位)、"output dependency」 (PLM) 去除後的下游任務效果。
超一流 | 從XLNet的多流機制看最新預訓練模型的研究進展
MPNet 論文地址
https://arxiv.org/abs/2004.09297

MPNet 開源地址https://github.com/microsoft/MPNet

總結
BERT 橫空出世一年多以來,語言預訓練技術不斷髮展融合。XLNet 提出的 PLM,以及實現 PLM 的雙流機制,在更多的語言預訓練後起之秀的手中不斷髮揚光大。

恩,一切都是那麼美好。

相關文章
相關標籤/搜索