BERT相關模型匯總梳理

2021-02-15 PaperWeekly

©PaperWeekly 原創 · 作者|熊志偉

學校|清華大學

研究方向|自然語言處理

BERT 自 2018 年被提出以來,獲得了很大的成功和關注。基於此,學術界陸續提出了各類相關模型,以期對 BERT 進行改進。本文嘗試對此進行匯總和梳理。


MT-DNN
MT-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 設計更複雜)。


XLNet
XLNet 在 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 對長文檔不友好的問題

採用更優質更大規模的語料



RoBERTa
RoBERTa 在華盛頓大學 +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:


SpanBERT
SpanBERT 在華盛頓大學+普林斯頓大學於 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 任務,用一個長句替代原來的兩個句子。


ALBERT
ALBERT 在 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 的優化點主要在於降低參數量,這可以加速訓練,但是模型層數並沒有變化,所以推理時間不受影響。


MASS
MASS 在 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 的特例:


UNILM
UNILM 在 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 任務,比如抽象式摘要和問答


BART
BART在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 的交流群裡。

相關焦點

  • 8 篇論文梳理 BERT 相關模型
    本文通過8篇論文梳理了BERT相關論文,並分析了BERT在各種任務中的效用。 BERT 自從在 arXiv 上發表以來獲得了很大的成功和關注,打開了 NLP 中 2-Stage 的潘多拉魔盒。
  • 帶你讀論文丨 8 篇論文梳理 BERT 相關模型
    ensemble 模型的表現,感興趣的讀者可以自行了解相關內容。  他們還在 SemEval-2018 中指出,這個任務不僅需要模型理解推理的結構,還需要一定的外部知識。在本例中,這個外部知識可以是 「Sport Leagues 是一個和 Sport 相關的某組織」。  該任務中表現最好的模型是 GIST,這裡不詳細展開,有興趣的讀者可以關注該論文。
  • BERT模型超酷炫,上手又太難?請查收這份BERT快速入門指南!
    除了這篇博文,我還準備了一份對應的 notebook 代碼,連結如下:https://github.com/jalammar/jalammar.github.io/blob/master/notebooks/bert/A_Visual_Notebook_to_Using_BERT_for_the_First_Time.ipynb。
  • 谷歌開源 BERT 模型原始碼
    驚鴻一瞥後,人們都在期待谷歌何時會放出 BERT 模型原始碼。直至今日,谷歌終於一鼓作氣發布了包括 BERT 模型 TensorFlow 代碼、BERT-Base 與 BERT-Large 模型的預訓練檢查點、微調實驗結果的自動化復現 TensorFlow 代碼、預訓練數據生成和數據訓練的代碼在內的「BERT 模型大禮包」。
  • bert之我見-attention
    bert的已經少之又少了,而bert的講解文章也已經有了很多,這裡我談一下我最近學習得到的理解。(風格依舊,不會重複別人寫過的東西)今天給大家談的是bert中的attention,通篇可能不會有太多篇幅對著bert講,而是把attention講懂,然後再去看bert中的attention幹了什麼,這樣大家能對bert中的attention,甚至整個注意力機制有更加深刻的理解。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    然而,由於全詞覆蓋的 BERT 模型的研究測試集中於國外公開數據集,缺乏一種中文語言的相關模型。昨天,哈工大訊飛聯合實驗室發布了全詞覆蓋的中文 BERT 預訓練模型。模型在多個中文數據集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。
  • 從 one-hot 到 BERT,帶你一步步理解 BERT
    這也是神經網絡語言模型的一個好處。我們通過神經網絡語言模型得到一個詞向量。當然我們也可以用其他的任務來做,一樣得到詞向量,比如句法分析,但是那些任務大部分是有監督的學習,需要大量的標註信息。語言模型是非監督的,資料獲取不需要很大的成本。word2vec和神經網絡語言模型不同,直接來學習這個詞向量,使用的基本假設是分布式假設,如果兩個詞的上下文時相似的,那麼他們語義也是相似的。
  • [預訓練語言模型專題] BERT,開啟NLP新時代的王者
    前期回顧:[萌芽時代]、[風起雲湧]、[文本分類通用技巧] 、[GPT家族]感謝清華大學自然語言處理實驗室對預訓練語言模型架構的梳理,我們將沿此脈絡前行,探索預訓練語言模型的前沿技術,紅色框為前期腳印,綠色框為本期介紹,歡迎大家留言討論交流。
  • 【BERT】如何訓練並使用Bert【持續更新】
    Fine-tuning這個主要是偏工程化以及task相關的任務。推薦去看看他的git。另一個是中文的相關工作。英文請直接看google.因為BERT就不是一個正常的語言模型(從左往右或者反過來)mp.weixin.qq.com/s/CUVW這裡有給出比較簡單但是很好理解的介紹。因為 bi-rnn、bi-lstm 的『雙向』,並不是像 bert 一樣,將上下文用同一套模型參數進行編碼,而是用兩個分開的單向rnn去處理,只不過共享了輸入,以及輸出時進行拼接。
  • 乾貨| BERT fine-tune 終極實踐教程
    對下載的壓縮文件進行解壓,可以看到文件裡有五個文件,其中bert_model.ckpt開頭的文件是負責模型變量載入的,而vocab.txt是訓練時中文文本採用的字典,最後bert_config.json是BERT在訓練時,可選調整的一些參數。
  • XLM —— 基於BERT的跨語言模型
    可以看這篇我們對BERT的總結:https://www.lyrn.ai/2018/11/07/explained-bert-state-of-the-art-language-model-for-nlp/2018年Lample et al.提出了將Transformer 和基於短語的統計機器翻譯技術(PBSMT)相結合的模型。後者給出了不同語言中短語的概率表。
  • 推薦系統rerank模型梳理&論文推薦
    【Point-wise 模型】和經典的 CTR 模型基本結構類似,如 DNN [8], WDL [9] 和 DeepFM [10]。和排序相比優勢主要在於實時更新的模型、特徵和調控權重。隨著工程能力的升級,ODL [11] 和實時特徵逐漸合併到排序階段並且取得了較大提升。2.
  • 所有你要知道的 BERT 模型壓縮方法,都在這裡!
    模型壓縮可減少受訓神經網絡的冗餘,由於幾乎沒有 BERT 或者 BERT-Large 模型可直接在 GPU 及智慧型手機上應用,因此模型壓縮方法對於 BERT 的未來的應用前景而言,非常有價值。軟體工程師 Mitchell A.
  • 剛剛,Google發布24個小型BERT模型,直接通過MLM損失進行預訓練
    Google最新推出24個精簡的BERT模型供下載,趕在白色情人節之前為廣大NLP研究者送上一份厚禮。BERT勝在模型大,也敗在模型大!BERT一出世就帶著「狂破11項記錄」的光環,用壓倒性的參數量暴力突圍。可以說,BERT的成功,成就成在模型大。但大,一方面成就了BERT,另一方面也成了它無法被更廣泛應用的障礙,這體現在三個方面。
  • BERT詳解:開創性自然語言處理框架的全面指南
    在大型無標號文本語料庫(可以是未監督或半監督)中訓練語言模型。2. 根據具體的自然語言處理任務對此大型模型進行微調,以利用此模型獲得的大型知識庫(有監督)。在這樣的背景下,來理解一下BERT是如何開始構建一個模型的,這個模型將在很長一段時間內成為自然語言處理的優秀基準。
  • transformer預訓練模型
    體系架構 名稱模型的細節 BERTbert-base-uncased12個層,768個隱藏節點,12個heads,110M參數量。在小寫英語文本上訓練。bert-large-uncased24個層,1024個隱藏節點,16個heads,340M參數量。在小寫英語文本上訓練。bert-base-cased12個層,768個隱藏節點,12個heads,110M參數量。
  • 三分鐘帶你讀懂 BERT
    翻譯 | 胡瑛皓、stone豪         校對 | 醬番梨        審核 | 詹森·李加薪       整理 | 立魚王原文連結:https://towardsdatascience.com/bert-technology-introduced-in
  • 大神教程乾貨:使用BERT的多類別情感分析!(附代碼)
    (『yelp_review_full_csv\\test.tsv』, sep=』\t』, index=False, header=True)訓練BERT模型我們將加載經過預訓練的基於BERT的Uncased模型權重,並在Yelp審查數據集上訓練模型。
  • 3分鐘看懂史上最強NLP模型BERT
    看完本文相信您會對BERT為什麼被認為是當前最好的NLP模型、實現原理以及適用場景有所了解。目前最好的自然語言預訓練方法無疑是BERT。它的工作流程分為兩步:首先,使用大量未標記的數據,以預訓練、也就是無人監督的方式學習語言表達。然後,使用少量經過標記的訓練數據對模型進行fine-tune,以監督學習的方式,執行多種監督任務。
  • bert之我見-positional encoding
    近期我會一連幾篇談談bert中的關鍵細節,這個position encoding是我看到的bert(實質上是transformer中提出的)中最為驚喜的但是卻被很多人忽略(可以理解為媒體鼓吹最少的)一個細節,這裡給大家談談。什麼是position encoding顧名思義,就是基於位置的一套詞嵌入方法,說得簡單點,就是對於一個句子,都有對應的一個向量。