02.28 預訓練模型ProphetNet:根據未來文本信息進行自然語言生成

大規模預訓練語言模型在自然語言理解(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


分享到:


相關文章: