無情!「自然語言處理(NLP)」統一預訓練UniLM模型(NLU+NLG)
- 2020 年 2 月 10 日
- 筆記
本文主要參考:https://zhuanlan.zhihu.com/p/96020318
引言
本文提出了一種新的統一的預訓練語言模型(UNILM),該模型不僅可用於自然語言理解(NLU),還可以用於生成任務((NLG))。該模型使用三種類型的語言建模(單向模型、雙向模型、序列到序列預測模型)進行預訓練。通過使用一個共享的Transform網路,利用特定的自注意掩模來控制預測條件的上下文,從而實現了統一的建模。
本文概要
1
First Blood
2
Aced
3
Attention
正文開始
1
First Blood
TILE: (NeurIPS-19)Unified Language Model Pre-training for Natural Language Understanding and Generation.
Contributor : 微軟研究院
Paper: https://arxiv.org/pdf/1905.03197.pdf
Code: https://github.com/microsoft/unilm
文章摘要
本文提出了一種新的統一的預訓練語言模型(UNILM),該模型不僅可用於自然語言理解,還可以用於生成任務。該模型使用三種類型的語言建模(單向模型、雙向模型、序列到序列預測模型)進行預訓練。通過使用一個共享的Transform網路,利用特定的自注意掩模來控制預測條件的上下文,從而實現了統一的建模。在 GLUE 基準以及 SQuAD 2.0 和 CoQA 問答任務上,UniLM 優於 BERT。
文章主要內容
1、UniLM 是一種多層 Transformer 網路,在大量文本上進行過聯合的預訓練,並針對下表中所示的三種類型的無監督語言建模目標進行過優化。

2、類似於 BERT,預訓練的 UniLM 可以進行微調(如有必要需添加額外的特定於任務的層),以適應不同類型的下游任務。
3、不同於主要用於 NLU 任務的 BERT,UniLM 可使用不同的自注意掩碼進行配置,從而聚合用於不同類型的語言模型的上下文,因此 UniLM 可用於 NLU 和 NLG 任務。
模型三大優勢
第一,統一的預訓練流程讓單個 Transformer 語言模型能為不同類型的語言模型使用共享的參數和架構,從而減輕對分開訓練和管理多個語言模型的需求。
第二,這種參數共享能使得學習到的文本表徵更通用,因為它們針對不同的語言建模目標(其中利用上下文的方式各不相同)進行了聯合優化,這能緩解在任意單個語言模型任務上的過擬合。
第三,除了在 NLU 任務上的應用,作為序列到序列語言模型使用的 UniLM 也使其能自然地用於 NLG 任務,比如抽象式摘要和問答。
UniLM模型介紹
給定一個輸入序列 x,UniLM 會獲取每個 token 的基於上下文的向量表徵。如下圖所示,預訓練會根據多種無監督語言建模目標優化共享的 Transformer 網路,這些目標為單向語言模型、雙向語言模型、序列到序列語言模型。為了控制對所要預測的詞 token 的上下文的讀取,作者使用了不同的自注意掩碼。換句話說,作者使用了掩碼來控制在計算基於上下文的表徵時 token 應該關注的上下文的量。UniLM 訓練完成後,當用於下游任務時,我們可以使用特定於任務的數據來對其進行微調。

表徵輸入
輸入 x 是一個詞序列,該序列要麼是用於單向語言模型的一段文本,要麼是用於雙向和序列到序列語言模型的打包在一起的一對文本段。作者的做法是:總是在輸入的起始處添加一個特殊的序列起點([SOS])token,在每一段的結尾處添加一個特殊的序列結束([EOS])token。[EOS] 不僅能在 NLU 任務中標記句子邊界,還能在 NLG 任務中讓模型學習中止解碼過程的時間。這種輸入表徵方式與 BERT 的一樣。
多層Transform網路
首先輸入向量Xi會被打包進,

然後使用一個 L 層的 Transformer

將其編碼成在不同抽象層面

上的上下文表徵。在每個 Transformer 模組中,使用了多個自注意頭來聚合前一層的輸出向量。對於第 l 個 Transformer 層,自注意頭 AI 的輸出的計算方式為:

預訓練目標
作者使用了四個為不同語言建模目標設計的完形填空任務來預訓練 UniLM。在完形填空任務中,作者會用特殊 token [MASK] 來替代輸入中隨機選擇的某些 WordPiece token。然後,將通過 Transformer 網路計算得到的對應的輸出向量輸入一個 softmax 分類器,預測被掩蓋的 token。UniLM 的參數的學習目標是最小化用預測 token 和原始 token 計算得到的交叉熵損失。需要說明,由於使用的是完形填空任務,所以可以為所有語言模型(無論是單向還是雙向)都使用同樣的訓練流程。
預訓練設置
整體的訓練目標是不同類型的語言模型目標的和。具體來說,作者為一個訓練批次所設置的時間如下:1/3 的時間使用雙向 LM 目標,1/3 的時間使用序列到序列 LM 目標,從左到右和從右到左的語言模型目標的取樣比例都是 1/6。為了公平地比較,UniLM 的模型架構遵照了 BERT_LARGE 的架構。
針對下游 NLU 和 NLG 任務進行微調
對於 NLU 任務,作者將 UniLM 微調為類似於 BERT 的雙向 Transformer 編碼器。以文本分類為例,作者使用 [SOS] 的編碼向量作為輸入的編碼,表示為:

,然後將其輸入一個隨機初始化的 softmax 分類器(即特定於任務的輸出層),其中類別概率的計算方式為:

其中

是參數矩陣,C 是類別數量。對於 NLG 任務,以序列到序列任務為例。微調過程類似於使用自注意掩碼進行預訓練。令 S1 和 S2 分別表示源序列和目標序列。作者將它們與特殊 token 打包在一起,構建出輸入「[SOS] S1 [EOS] S2 [EOS]」。該模型的微調是通過隨機掩蓋目標序列中一定比例的 token,並學習恢復被掩蓋的詞。其訓練目標是基於上下文最大化被掩蓋 token 的似然度。
論文實驗
作者在 NLU(即 GLUE 基準和抽取式問答)和 NLG(即抽象式摘要、問題生成、生成式問答和對話響應生成)任務上執行了實驗。
抽象式摘要
作者重點關注了抽象式摘要,這是一種生成任務,其中的摘要並不限於復用輸入文本中的短語或句子。作者使用了 CNN/DailyMail 數據集和 Gigaword 的非匿名化版本來進行模型微調和評估。表 3 在 CNN/DailyMail 上比較了 UniLM 與基準和幾種當前最佳的模型。

表 4 給出了在不同規模(10K 和 3.8M)的 Gigaword 上的模型評估結果。Transformer 和 OpenNMT 都實現了標準的注意式序列到序列模型。

問答(QA)
這個任務是回答給定文本篇章的問題。問答任務有兩種設置。一種是抽取式問答,其假定答案是該篇章中的一段文本。另一種是生成式問答,其需要即時生成答案。抽取式問答可以構建成一個 NLU 任務,目標是預測篇章中答案範圍的起止位置。作者針對該任務將預訓練的 UniLM 模型微調成了一個雙向編碼器。生成式問答可為輸入的問題和篇章生成形式自由的答案,這是一種 NLG 任務。作者在 Stanford Question Answering Dataset(SQuAD)2.0 以及 Conversational Question Answering(CoQA)數據集上進行了實驗。

問題生成
作者還在答案感知型問題生成任務上執行了實驗。給定一個輸入段落和一個答案範圍,該任務的目標是生成一個詢問該答案的問題。


響應生成
作者還在基於文檔的對話應生成任務上對 UniLM 進行了評估。給定一段多輪對話歷史,並將網路文檔作為知識源,系統需要生成適合對話並且能反映網路文檔內容的自然語言響應。

GLUE 基準
作者還在 GLUE 基準上對 UniLM 進行了評估。表 11 給出了從 GLUE 基準的評估伺服器得到的測試結果。結果表明,UniLM 在 GLUE 任務上的表現與 BERT_LARGE 相當。

總結
實驗結果表明,UniLM 在 GLUE 基準以及兩個問答數據集上與 BERT 表現相當。此外,UniLM 在五個 NLG 數據集上優於之前最佳模型,即:CNN/DailyMail 和 Gigaword 抽象式摘要、SQuAD 問題生成、CoQA 生成式問答、DSTC7 對話響應生成。
2
Aced
自然語言NLP(NLG+NLU)資料大全(持續更新....)
GitHub: https://github.com/yinizhilian/NLP_Share
相關論文集(持續更新....)
GitHub: https://github.com/yinizhilian/ACL_Paper

