預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成

微軟研究院AI頭條發表於2020-03-02

大規模預訓練語言模型自然語言理解(NLU)和自然語言生成(NLG)中都取得了突破性成果。這些模型通常使用特殊的自監督學習目標先在大規模無標記語料中進行預訓練,然後在下游任務上微調。

傳統自迴歸語言模型通過估計文字語料概率分佈被廣泛用於文字建模,序列到序列的建模(seq2seq),以及預訓練語言模型中(如 GPT 等)。這類模型通常使用 teacher-forcing 的方法訓練,即每一時刻通過給定之前時刻的所有字元以預測下一個時刻的字元。然而,這種方式可能會讓模型偏向於依賴最近的字元,而非通過捕捉長依賴(long-term dependency)的資訊去預測下一個字元。有如以下原因:(1)區域性的關係,如兩元字元的組合,往往比長依賴更強烈;(2)Teacher-forcing 每一時刻只考慮對下一個字元的預測,並未顯式地讓模型學習對其他未來字元的建模和規劃。最終可能導致模型對區域性字元組合的學習過擬合,而對全域性的一致性和長依賴欠擬合。尤其是當模型通過貪心解碼(greedy decoding)的方式生成序列時,序列往往傾向於維持區域性的一致性而忽略有意義的全域性結構。

ProphetNet(先知網路)

針對上述問題,我們提出了一個新的 seq2seq 預訓練模型, 我們稱之為 ProphetNet(先知網路)。該模型帶有一個新穎的自監督學習目標函式,即預測未來的N元組(Predicting Future N-gram)。與傳統 seq2seq 的 Teacher-forcing 每一時刻只預測下一個字元不同,ProphetNet 每一時刻將學習去同時預測未來的 N 個字元。如圖1所示:

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成圖1:左邊是傳統的語言模型,每一時刻預測下一時刻的字元。右邊是 Bigram 形式下的 ProphetNet,每一時刻同時預測未來的兩個字元。預測未來 N 元組這一自監督學習目標在訓練過程中顯式地鼓勵模型在預測下一個字元時考慮未來更遠的字元,做到對未來字元的規劃,以防止模型對強區域性相關(strong local correlation)過擬合

ProphetNet 基於 Transformer 的 seq2seq 架構,其設計有兩個目標:1.模型能夠以高效的方式在訓練過程中完成每時刻同時預測未來的 N 個字元;2.模型可以靈活地轉換為傳統的 seq2seq 架構(每時刻只預測一下個字元),以在推理或微調階段相容現有的方法和任務。為此,我們受 XLNet 中 Two-stream self attention 的啟發,提出了用於模型 decoder 端的 N-stream self-attention 機制。圖2展示了 bigram 形式下的 N-stream self-attention 樣例。除了原始的 multi-head self-attention 之外(我們稱為 main stream self-attention,如圖2a),N-stream self-attention 包含了額外的 N 個 predicting stream self-attention(如圖2b和圖2c),用於分別預測第 n 個未來時刻的字元(如圖2d)所示。每一個 predicting stream 與 main stream 共享引數,我們可以隨時關閉 predicting stream 以讓模型轉換回傳統 seq2seq 的模式。

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成圖2:(a) 為main stream self-attention;(b) 為1-st predicting stream self-attention;(c) 為2-nd predicting stream self-attention;(d) 展示了n-stream self-attention的輸入輸出及流程。由於難以獲取到大量帶標記的序列對資料,我們用去噪的自編碼任務通過大量無標記文字預訓練 ProphetNet。去噪的自編碼任務旨在輸入被噪音函式破壞後的序列,讓模型學習去復原原始序列。該任務被廣泛應於 seq2seq 模型的預訓練中,如 MASS、BART、T5 等。本文中使用 MASS 的預訓練方式,通過引入提出的 predicting n-stream 自監督學習目標函式預訓練 ProphetNet。我們以 bigram 形式的 ProphetNet 為例,整個流程如圖3所示:
預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成圖3:二元形式下的 Prophet 整體框架圖實驗結果

我們使用兩個規模的語料資料訓練 ProphetNet。ProphetNet 包含12層的 encoder 和12層的 decoder,隱層大小為1024。先在 BERT 所使用的 BookCorpus+Wikipedia(16GB)的資料上預訓練模型,將模型在 Text summarization 和 Question generation 兩個 NLG 任務上的三個資料集微調並評估模型效能。與使用同等規模資料(16GB)的預訓練模型相比,ProphetNet 在CNN/DailyMail、Gigaword 和 SQuAD 1.1 question generation 資料集上都取得了最高的效能,如表1-3所示。

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成表1:CNN/DailyMail 測試集結果

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成表2:Gigaword 測試集結果

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成表3:SQuAD 1.1 測試集結果(上半部分)SQuAD 1.1 交換驗證測試集結果(下半部分)除了使用 16GB 的語料訓練模型,我們也進行了更大規模的預訓練實驗。該實驗中,我們使用了 160GB 的語料(該語料被 BART、RoBETRa 等模型預訓練中所使用)預訓練 ProphetNet。我們展示了預訓練14個 epoch 後的 ProphetNet 在 CNN/DailyMail 和 Gigaword 兩個任務上微調和測試的結果。如表4所示。需要注意的是,在相同大小的訓練資料下,我們模型的預訓練 epoch 僅約為 BART 的三分之一。我們模型的訓練資料使用量僅約為 T5 和 PEGASUSLARGE(C4)的五分之一,約為 PEGASUSLARGE(HugeNews) 的二十分之一。儘管如此,我們的模型仍然在 CNN/DailyMail 上取得了最高的 ROUGE-1 和 ROUGE-L F1 scores。並在 Gigaword 上實現了新的 state-of-the-art 效能。

預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成表4:模型經大規模語料預訓練後在 CNN/DailyMail 和 Gigaword 測試集的結果為了進一步探索 ProphetNet 的效能,我們在不預訓練的情況下比較了 ProphetNet 和 Transformer 在 CNN/DailyMail 上的效能。實驗結果如表5所示,ProphetNet 在該任務上超越了同等引數量的 Transformer。
預訓練模型ProphetNet:根據未來文字資訊進行自然語言生成表5:模型不經過預訓練在 CNN/DailyMail 驗證集結果總結

本文介紹了微軟亞洲研究院在序列到序列模型預訓練的一個工作:ProphetNet,該模型提出了一種新的自監督學習目標,在同一時刻同時預測多個未來字元。並通過提出的 N-stream self-attention 機制高效地實現了模型在該目標下的訓練。實驗表明,該模型在序列到序列的多個自然語言生成任務都取得了不錯的效能。我們將在之後嘗試使用更大規模的模型架構和語料進行預訓練,並進一步深入地探索該機制。

ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training

論文連結:https://arxiv.org/pdf/2001.04063.pdf

程式碼連結:https://github.com/microsoft/ProphetNet(即將開放)

本文作者:劉大一恆、齊煒禎、晏宇、宮葉雲、段楠、周明

相關文章