©PaperWeekly 原創 · 作者|熊志偉
學校|清華大學
研究方向|自然語言處理
BERT 自 2018 年被提出以來,獲得了很大的成功和關注。基於此,學術界陸續提出了各類相關模型,以期對 BERT 進行改進。本文嘗試對此進行匯總和梳理。
MT-DNNMT-DNN(Multi-Task DNN)在 Microsoft 於 2019 年發表的《Multi-Task Deep Neural Networks for Natural Language Understanding》中被提出。模型整體是個 MTL(Multi-Task Learning)框架,底層的 Shared layers 復用了 BERT 的結構,為所有 task 所共有,頂層的 Task specific layers 則為單個 task 所獨有。總體來看,和 BERT 差異不大,區別僅在於 Pre-training 階段,MT-DNN 加入了 multi-task 進行訓練,期望學習到更好的 text representations(圖中的 )。標註數據較少的任務,可以利用其它相似任務的標註數據
降低針對特定任務的過擬合,起到正則化的作用
MT-DNN 引入了 4 中不同類型的 task,並相應設計了不同的 loss function:
Single-Sentence Classification:選用了 [CLS] 在 層對應的輸出,loss function 是交叉熵;
Text Similarity:選用了 [CLS] 在 層對應的輸出,loss function 是 MSE(建模為回歸問題);
Pairwise Text Classification:輸出後接了一個SAN(Stochastic Answer Network),loss function 是交叉熵;
Relevance Ranking:選用了 [CLS] 在 層對應的輸出,loss function 採用 LTR 的訓練範式。MT-DNN 的 Pre-training 部分包括兩個階段:第一階段,採用 BERT 的訓練方式(MLM+NSP),學習 Shared layers 的參數;第二階段,採用 MTL 的方式,學習 Shared layers+Task specific layers 的參數,論文中此處採用的是 9 項 GLUE 的 task。詳細的訓練步驟描述如下:論文中,作者採用了 作為 Shared layers 的初始化,並且證明,即使沒有 fine-tuning 階段,MT-DNN 的效果也要好於 。總的來說,MT-DNN 相對於 BERT 的提升,來自於 MTL 和 special output module(輸出模塊和 loss function 設計更複雜)。
XLNetXLNet 在 CMU+Google 於 2019 年發表的《XLNet: Generalized Autoregressive Pretraining for Language Understanding》中被提出。論文中,作者提到了兩種 Pre-training 的方式:AR(autoregressive language modeling)、AE(denoising autoencoding)。前者的代表如 ELMo、GPT 系列,後者的代表則是 BERT。為了解決 BERT 面臨的問題,XLNet 做了如下改進:Pre-training的訓練目標調整為PLM (Permutation Language Modeling),具體實現時採用了 Two-Stream Self-Attention 機制,並對可能的排列進行了採樣模型結構採用 Transformer-XL,解決 Transformer 對長文檔不友好的問題
採用更優質更大規模的語料
RoBERTaRoBERTa 在華盛頓大學 +Facebook 於 2019 年發表的《RoBERTa: A Robustly Optimized BERT Pretraining Approach》中被提出。1. 訓練時間更長:更大規模的訓練數據(16GB -> 160GB)、更大的 batch_size(256 -> 8K);2. 去除 NSP 任務,輸入格式相應修改為 FULL-SENTENCES;3. 輸入粒度:由 character-level BPE 改為 byte-level BPE;
4. masking 機制:由 static masking改為dynamic masking:
SpanBERTSpanBERT 在華盛頓大學+普林斯頓大學於 2019 年發表的《SpanBERT: Improving Pre-training by Representing and Predicting Spans》中被提出。1. Span Masking:首先根據幾何分布 採樣出 span 的長度(大於 10 則重新採樣),然後根據均勻分布隨機選擇起始點,最後從起始點開始將 span 內的 token 進行 mask;注意,這個過程會進行多次,直到被 mask 的 token 數量達到閾值,如輸入序列的 15%;2. Span Boundary Objective(SBO):對於 span 內的每一個 token,除了原始的 MLM 的 loss,再加 SBO 的 loss,即:3. Single-Sequence Training:去掉 NSP 任務,用一個長句替代原來的兩個句子。
ALBERTALBERT 在 Google於 2019 年發表的《ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS》中被提出。ALBERT 的出發點在於,如果模型參數持續變大,會出現兩類問題:GPU/TPU OOM;模型效果退化。基於此,ALBERT 考慮減少模型的參數。1. Factorized embedding parameterization:之前的模型中,都會使 (E 是 vocabulary embedding size,H 是 hidden size),如此一來,H的提升會導致E的提升,從而使參數量呈平方級的增加。ALBERT 將 E 和 H 解綁,在 embedding 後再接一個 的矩陣,這樣可以保持 E 不變的情況下提升 H。在這種情況下,參數量由 降低至 ,當 時,效果更加顯著;2. Cross-layer parameter sharing:將 Transformer Encoder 中每一個 layer 的參數進行共享,也即,每個 layer 復用同一套參數;3. Inter-sentence coherence loss:將 NSP 替換為 SOP(sentence-order prediction),即從同一個文檔中抽取兩個連續的句子作為正樣本,調換順序後作為負樣本(NSP 的負樣本來自兩個不同的文檔);
4. 採用更大規模的訓練數據並去除 Dropout(因為作者發現模型仍然沒有過擬合)。
ALBERT 和 BERT 在不同配置下的參數量如下:ALBERT 和 BERT 在不同配置下的效果和訓練時間如下:注意,這裡的 Speedup 指的是訓練時間而非推理時間,因為 ALBERT 的優化點主要在於降低參數量,這可以加速訓練,但是模型層數並沒有變化,所以推理時間不受影響。
MASSMASS 在 Microsoft 於 2019 年發表的《MASS: Masked Sequence to Sequence Pre-training for Language Generation》中被提出。像 BERT 這類基於 Pre-training 和 fine-tuning 的模型在 NLU(Natural Language Understanding)任務中取得了很大的成功。與之相對應地,NLG(Natural Language Generation)任務如 neural machine translation(NMT)、text summarization 和 conversational response generation 等,經常面臨著訓練數據(paired data)匱乏的問題。因此,在大量 unpaired data 上做 pre-training 然後在少量 paired data 上做 fine-tuning,對 NLU 任務而言是同樣有益的。然而,直接採用類似 BERT 的預訓練結構(僅用 encoder 或 decoder)是不可取的,因為 NLG 任務通常是基於 encoder-decoder 的框架。基於此,論文提出了一種適用於 NLG 任務的預訓練方式——MASS。區別於單獨對 encoder 或 decoder 進行 pre-training,MASS 可以對二者進行聯合 pre-training,其結構如下:整體基於 Transformer,Encoder 被 mask 的 token 是連續的,Decoder 將 Encoder 中未被 mask 的 token 進行 mask,預測 Encoder 中被 mask 的 token。論文中提到,通過控制 Encoder 中 mask 的 token 長度 k,BERT 和 GPT 可看作是 MASS 的特例:
UNILMUNILM 在 Microsoft 於 2019 發表的《Unified Language Model Pre-training for Natural Language Understanding and Generation》中被提出。UNILM 是一種能同時適用於 NLU 和 NLG 任務的 Pre-training 框架,基於參數共享的 Transformer,對三種類型的無監督語言建模目標進行聯合預訓練:Unidirectional LM(left-to-right && right-to-left)、Bidirectional LM、Sequence-to-Sequence LM。預訓練後的 UNILM 可以進行 Fine-tuning(如有必要可添加 task-specific layers)以適應不同類型的下遊任務。
對於不同類型的 LM 目標,所使用的 segment embedding 不同,以示區分
對於所有類型的 LM 目標,預訓練採用的任務都是 cloze task,有所區分的是,不同的 LM 它們所能利用到的 context 不同:Unidirectional LM,context 是單側的 token(左側 or 右側);Bidirectional LM,context 是兩側的 token;Sequence-to-Sequence LM,context 是源序列的所有 token 以及目標序列的左側 token。不同的 context 是通過相應的 mask 矩陣來實現的
對於 Bidirectional LM,加入了 NSP 任務
對於 Sequence-to-Sequence LM,在 Pre-training 階段,源序列和目標序列都有可能被 mask
在一個 batch 中,1/3 的時間採用 Bidirectional LM,1/3 的時間採用 Sequence-to-Sequence LM,1/6 的時間採用 left-to-right Unidirectional LM,1/6 的時間採用 right-to-left Unidirectional LM
80% 的時間 mask 一個 token,20% 的時間 mask一個bigram 或 trigram
對於 NLU 任務,同 BERT
對於 NLG 任務,若是 Seq2Seq 任務,則只 mask 目標序列中的 token統一的預訓練流程讓單個 Transformer 能為不同類型的語言模型使用共享的參數和架構,從而減輕對分開訓練和管理多個語言模型的需求參數共享使得學習到的文本表徵更通用,因為它們針對不同的語言建模目標(其中利用上下文的方式各不相同)進行了聯合優化,這能緩解在任意單個語言模型任務上的過擬合除了在 NLU 任務上的應用,作為 Sequence-to-Sequence LM 使用的 UNILM 也使其能自然地用於 NLG 任務,比如抽象式摘要和問答
BARTBART在Facebook於2019年發表的《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》中被提出。BART 採用了 Transformer 的 Seq2Seq 框架,和 MASS 類似,只不過它的 Pre-training 任務是:在 Encoder 端輸入被破壞的文本,在 Decoder 端復原原始文本。Sequence Classification Tasks:
[1] https://arxiv.org/pdf/1901.11504.pdf
[2] https://fyubang.com/2019/05/23/mt-dnn/[3] https://zhuanlan.zhihu.com/p/103220246[4] https://zhpmatrix.github.io/2019/08/08/mt-dnn/[5] https://blog.csdn.net/magical_bubble/article/details/89517709[6] https://arxiv.org/pdf/1906.08237.pdf[7] https://medium.com/ai-academy-taiwan/2019-nlp%E6%9C%80%E5%BC%B7%E6%A8%A1%E5%9E%8B-xlnet-ac728b400de3[8] http://fancyerii.github.io/2019/06/30/xlnet-theory/[9] http://fancyerii.github.io/2019/06/30/xlnet-theory/[10] https://arxiv.org/pdf/1907.11692.pdf[11] https://blog.csdn.net/ljp1919/article/details/100666563[12] https://www.jiqizhixin.com/articles/2019-09-05-6[13] https://arxiv.org/pdf/1909.11942.pdf[14] https://cloud.tencent.com/developer/article/1682418[15] https://zhuanlan.zhihu.com/p/85221503[16] https://arxiv.org/pdf/1907.10529.pdf[17] https://zhuanlan.zhihu.com/p/75893972[18] https://zhuanlan.zhihu.com/p/149707811[19] https://arxiv.org/pdf/1905.02450.pdf[20] https://easyai.tech/blog/mass-bert-gpt/[21] https://zhuanlan.zhihu.com/p/67687640[22] https://blog.csdn.net/ljp1919/article/details/90312229[23] https://www.zhihu.com/question/324019899[24] https://arxiv.org/pdf/1905.03197.pdf[25] https://zhuanlan.zhihu.com/p/68327602[26] https://www.jiqizhixin.com/articles/2019-12-09-16[27] https://blog.csdn.net/qq_42189083/article/details/104413886[28] https://cloud.tencent.com/developer/article/1580364[29] https://zhuanlan.zhihu.com/p/113380840[30] https://arxiv.org/pdf/1910.13461.pdf[31] https://www.mdeditor.tw/pl/pLHV[32] https://zhuanlan.zhihu.com/p/90173832
如何才能讓更多的優質內容以更短路逕到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術乾貨。我們的目的只有一個,讓知識真正流動起來。
📝 來稿標準:
• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)
• 如果文章並非首發,請在投稿時提醒並附上所有已發布連結
• PaperWeekly 默認每篇文章都是首發,均會添加「原創」標誌
📬 投稿郵箱:
• 投稿郵箱:hr@paperweekly.site
• 所有文章配圖,請單獨在附件中發送
• 請留下即時聯繫方式(微信或手機),以便我們在編輯發布時和作者溝通
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關於PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。