論文選自arXiv
作者:Mike Lewis等機器之心編譯參與:魔王、一鳴
FaceBook 近日提出了一個名為BART的預訓練語言模型。該模型結合雙向和自迴歸 Transformer 進行模型預訓練,在一些自然語言處理任務上取得了SOTA性能表現。
近日,Facebook 發表論文,提出一種為預訓練序列到序列模型而設計的去噪自編碼器 BART。BART 通過以下步驟訓練得到:1)使用任意噪聲函數破壞文本;2)學習模型來重建原始文本。BART 使用基於 Transformer 的標準神經機器翻譯架構,可泛化 BERT(具備雙向編碼器)、GPT(具備從左至右的解碼器)等近期出現的預訓練模型,儘管它非常簡潔。Facebook 研究人員評估了多種噪聲方法,最終通過隨機打亂原始句子的順序,再使用新型文本填充方法(即用單個 mask token 替換文本段)找出最優性能。
BART 尤其擅長處理文本生成任務,不過它在理解任務中的性能也不錯。在提供同等的訓練資源時,BART 可在 GLUE 和 SQuAD 數據集上實現與 RoBERTa 相當的性能,並在抽象對話、問答和文本摘要等任務中獲得新的當前最優結果,在 XSum 數據集上的性能比之前研究提升了 6 ROUGE。在機器翻譯任務中,BART 在僅使用目標語言預訓練的情況下,獲得了比回譯系統高出 1.1 個 BLEU 值的結果。研究人員還使用控制變量實驗複製了 BART 框架內的其他預訓練機制,從而更好地評估影響終端任務性能的最大因素。
論文鏈接:https://arxiv.org/pdf/1910.13461.pdf
引言
自監督方法在大量 NLP 任務中取得了卓越的成績。近期研究通過改進 masked token 的分佈(即 masked token 被預測的順序)和替換 masked token 的可用語境,性能獲得提升。然而,這些方法通常聚焦於特定類型和任務(如 span prediction、生成等),應用較為有限。
Facebook 的這項研究提出了新架構 BART,它結合雙向和自迴歸 Transformer 對模型進行預訓練。BART 是一個適用於序列到序列模型的去噪自編碼器,可應用於大量終端任務。預訓練包括兩個階段:1)使用任意噪聲函數破壞文本;2)學得序列到序列模型來重建原始文本。BART 使用基於 Tranformer 的標準神經機器翻譯架構,可泛化 BERT、GPT 等近期提出的預訓練模型。
圖 1a:BERT:用掩碼替換隨機 token,雙向編碼文檔。由於缺失 token 被單獨預測,因此 BERT 較難用於生成任務。
圖 1b:GPT:使用自迴歸方式預測 token,這意味著 GPT 可用於生成任務。但是,該模型僅基於左側上下文預測單詞,無法學習雙向交互。
圖 1c:BART:編碼器輸入與解碼器輸出無需對齊,即允許任意噪聲變換。使用掩碼符號替換文本段,從而破壞文本。使用雙向模型編碼被破壞的文本(左),然後使用自迴歸解碼器計算原始文檔的似然(右)。至於微調,未被破壞的文檔是編碼器和解碼器的輸入,研究者使用來自解碼器最終隱藏狀態的表徵。
模型
去噪自編碼器 BART 可將被破壞文檔映射至原始文檔。它是一個具備雙向編碼器(對被破壞文本使用)和從左至右自迴歸解碼器的序列到序列模型。至於預訓練,研究人員優化了原始文檔的負 log 似然。
架構
BART 使用 (Vaswani et al., 2017) 提出的標準序列到序列 Transformer 架構,不過做了少許改動:按照 GPT 模型,將 ReLU 激活函數更改為 GeLU,從 N (0, 0.02) 初始化參數。BART base 模型的編碼器和解碼器各有 6 層,large 模型中層數各增加到了 12。BART 架構與 BERT 所用架構類似,區別如下:1)解碼器的每個層對編碼器最終隱藏層額外執行 cross-attention(和 Transformer 序列到序列模型一樣);2)BERT 在詞預測之前使用了額外的前饋網絡,而 BART 沒有。總之,BART 相比同等規模的 BERT 模型大約多出 10% 的參數。
預訓練 BART
BART 是通過破壞文檔再優化重建損失(即解碼器輸出和原始文檔之間的交叉熵)訓練得到的。與目前僅適合特定噪聲機制的去噪自編碼器不同,BART 可應用於任意類型的文檔破壞。極端情況下,當源文本信息全部缺失時,BART 也等同於語言模型。
- token 掩碼:按照 BERT 模型,BART 採樣隨機 token,並用掩碼替換它們。
- token 刪除:從輸入中隨機刪除 token。與 token 掩碼不同,模型必須確定缺失輸入的位置。
圖 2:向輸入添加不同的噪聲變換。這些變換是可組合的。
- 文本填充:採樣多個文本段,文本段長度取決於泊松分佈 (λ = 3)。用單個掩碼 token 替換每個文本段。長度為 0 的文本段對應掩碼 token 的插入。
- 句子排列變換:按句號將文檔分割成多個句子,然後以隨機順序打亂這些句子。
- 文檔旋轉:隨機均勻地選擇 token,旋轉文檔使文檔從該 token 開始。該任務的目的是訓練模型識別文檔開頭。
BART 模型微調
序列分類任務
序列分類任務中,編碼器和解碼器的輸入相同,最終解碼器 token 的最終隱藏狀態被輸入到新的多類別線性分類器中。該方法與 BERT 中的 CLS token 類似,不過 BART 在解碼器最後額外添加了一個 token,這樣該 token 的表徵可以處理來自完整輸入的解碼器狀態(見圖 3a)。
token 分類任務
對於 token 分類任務,研究人員將完整文檔輸入到編碼器和解碼器中,使用解碼器最上方的隱藏狀態作為每個單詞的表徵。該表徵的用途是分類 token。
序列生成任務
由於 BART 具備自迴歸解碼器,因此它可以針對序列生成任務進行直接微調,如抽象問答和摘要。在這兩項任務中,信息複製自輸入但是經過了處理,這與去噪預訓練目標緊密相關。這裡,編碼器的輸入是輸入序列,解碼器以自迴歸的方式生成輸出。
機器翻譯
研究人員用新的隨機初始化編碼器替換 BART 的編碼器嵌入層。該模型以端到端的方式接受訓練,即訓練一個新的編碼器將外來詞映射到輸入(BART 可將其去噪為英文)。新的編碼器可以使用不同於原始 BART 模型的詞彙。
源編碼器的訓練分兩步,均需要將來自 BART 模型輸出的交叉熵損失進行反向傳播。第一步中,研究人員凍結 BART 的大部分參數,僅更新隨機初始化的源編碼器、BART 位置嵌入和 BART 編碼器第一層的自注意力輸入投影矩陣。第二步中,研究人員將所有模型參數進行少量迭代訓練。
圖 3:a:要想使用 BART 解決分類問題,編碼器和解碼器的輸入要相同,使用最終輸出的表徵。b:對於機器翻譯任務,研究人員訓練一個額外的小型編碼器來替換 BART 中的詞嵌入。新編碼器可使用不同的詞彙。
結果
表 1:預訓練目標對比。所有模型的訓練數據都是書籍和維基百科數據。
表 2:大模型在 SQuAD 和 GLUE 任務上的結果。BART 的性能堪比 RoBERTa 和 XLNet,這表明 BART 的單向解碼器層不會降低模型在判別任務上的性能。
表 3:在兩個標準摘要數據集上的結果。在這兩個摘要任務上,BART 在所有度量指標上的性能均優於之前的研究,在更抽象的 XSum 數據集上的性能較之前模型提升了 6 個百分點。
表 4:BART 在對話回答生成任務上的性能優於之前研究。困惑度基於 ConvAI2 官方 tokenizer 進行了重新歸一化。
表 5:BART 在難度較高的 ELI5 抽象問答數據集上取得了當前最優結果。
表 6:BART 和基線模型在機器翻譯任務上(使用數據集包括 WMT‘16 RO-EN 和回譯數據)的性能對比情況。BART 使用單語英文預訓練,性能優於強大的回譯基線模型。
閱讀更多 機器之心Pro 的文章