關注小夕並星標,解鎖天然語言處理
搜索、推薦與算法崗求職祕籍git
導讀
做爲 NLP 近兩年來的當紅炸子雞,以 ELMo/BERT 爲表明的語言預訓練技術相信你們已經很熟悉了。簡單回顧下 18 年以來幾個預訓練的重要工做:github
ELMo, GPT and 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的作法是將輸入的順序打亂,好比將「夕小瑤的賣萌屋」,變成「屋小夕的瑤萌賣」後進行單向語言模型的訓練,這樣在預測「萌」時會用到「屋小夕的瑤」的信息,能夠認爲同時利用了上下文。學習
咱們能夠對 MLM 和 PLM 進行 「unified view」 的描述:編碼
左:MLM、右:PLM (圖自 MPNet )
雙流機制
XLNet 爲了實現 PLM 提出了雙流機制。能夠看到 PLM 任務的是經過 Query stream 進行學習的。spa
XLNet 雙流機制
爲了更容易理解,咱們從新整理 XLNet 的雙流輸入,在上節 PLM content stream 輸入的基礎上補充 query stream 輸入。設計
其中 [P] 佔位符表明 PLM 中待預測的 Token,預測順序爲 4 -> 5 -> 2。3d
如下爲 PLM 對應輸入的 self-attention 掩碼矩陣,其中 context (x_1, x_3, x_6) 能夠同時被 content/query stream 全部 tokens 可見。
「超一流」預訓練模型
XLNet 定義的雙流機制,其中 query stream 把「預測任務」和輸入文本(content stream)進行了分離,具備很強的通用性。事實上,咱們能夠定義不一樣的 query stream 預訓練任務,甚至定義多個 query stream (多流)。今年以來,涌現出了很多基於多流機制的預訓練工做,其中包括刷新多個語言生成任務 SOTA 的語言生成預訓練技術 ERNIE-GEN(百度)和第二代統一語言預訓練技術 UniLMv2 (微軟)。
目前,基於多流機制的預訓練工做包括語言生成和語言理解兩大類。
「超一流」定義
除了 Span-by-span 生成流,ERNIE-GEN 中還包括 Contextual 流(建模待生成語義單元前的上文信息)和一個 Word-by-Word 生成流。所以 ERNIE-GEN 設計了 Mulit-flow Attention 模塊來進行多流的聯合學習。
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) 兩個預測流。
*
此外,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 任務。
UniLMv2 中,MLM 和 PLM 的聯合建模是經過相似 XLNet 的多流機制實現的。
UniLMv2 在 PLM 建模中還提出了 「partially autoregressive」 機制。傳統的 「autoregressive」 預測是 token-by-token 的, 「partially autoregressive」 的預測則是包含一個相似 Span 的概念(論文中稱之爲 block-wise masking),在生成的時候,組成 Span 的 token 是一塊兒預測的,也即在 PLM 中進行 Span-by-Span 預測。
「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 進行對比:
MPNet 的實驗作的比較紮實,消融實驗分別驗證了 「position compensation」([Maskl] 佔位)、"output dependency」 (PLM) 去除後的下游任務效果。
MPNet 論文地址:
https://arxiv.org/abs/2004.09297
MPNet 開源地址:https://github.com/microsoft/MPNet
總結
BERT 橫空出世一年多以來,語言預訓練技術不斷髮展融合。XLNet 提出的 PLM,以及實現 PLM 的雙流機制,在更多的語言預訓練後起之秀的手中不斷髮揚光大。
恩,一切都是那麼美好。