BERT相关模型汇总梳理
?PaperWeekly 原創(chuàng) ·?作者|熊志偉
學(xué)校|清華大學(xué)
研究方向|自然語言處理
BERT 自 2018 年被提出以來,獲得了很大的成功和關(guān)注。基于此,學(xué)術(shù)界陸續(xù)提出了各類相關(guān)模型,以期對(duì) BERT 進(jìn)行改進(jìn)。本文嘗試對(duì)此進(jìn)行匯總和梳理。
MT-DNN
MT-DNN(Multi-Task DNN)在 Microsoft 于 2019 年發(fā)表的《Multi-Task Deep Neural Networks for Natural Language Understanding》中被提出。
模型結(jié)構(gòu)如下:
模型整體是個(gè) MTL(Multi-Task Learning)框架,底層的 Shared layers 復(fù)用了 BERT 的結(jié)構(gòu),為所有 task 所共有,頂層的 Task specific layers 則為單個(gè) task 所獨(dú)有。總體來看,和 BERT 差異不大,區(qū)別僅在于 Pre-training 階段,MT-DNN 加入了 multi-task 進(jìn)行訓(xùn)練,期望學(xué)習(xí)到更好的 text representations(圖中的??)。
MTL 的優(yōu)點(diǎn):
標(biāo)注數(shù)據(jù)較少的任務(wù),可以利用其它相似任務(wù)的標(biāo)注數(shù)據(jù)
降低針對(duì)特定任務(wù)的過擬合,起到正則化的作用
MT-DNN 引入了 4 中不同類型的 task,并相應(yīng)設(shè)計(jì)了不同的 loss function:
Single-Sentence Classification:選用了 [CLS] 在??層對(duì)應(yīng)的輸出,loss function 是交叉熵;
Text Similarity:選用了 [CLS] 在??層對(duì)應(yīng)的輸出,loss function 是 MSE(建模為回歸問題);
Pairwise Text Classification:輸出后接了一個(gè)SAN(Stochastic Answer Network),loss function 是交叉熵;
Relevance Ranking:選用了 [CLS] 在??層對(duì)應(yīng)的輸出,loss function 采用 LTR 的訓(xùn)練范式。
MT-DNN 的 Pre-training 部分包括兩個(gè)階段:第一階段,采用 BERT 的訓(xùn)練方式(MLM+NSP),學(xué)習(xí) Shared layers 的參數(shù);第二階段,采用 MTL 的方式,學(xué)習(xí) Shared layers+Task specific layers 的參數(shù),論文中此處采用的是 9 項(xiàng) GLUE 的 task。詳細(xì)的訓(xùn)練步驟描述如下:
論文中,作者采用了??作為 Shared layers 的初始化,并且證明,即使沒有 fine-tuning 階段,MT-DNN 的效果也要好于??。
總的來說,MT-DNN 相對(duì)于 BERT 的提升,來自于 MTL 和 special output module(輸出模塊和 loss function 設(shè)計(jì)更復(fù)雜)。
XLNet
XLNet 在 CMU+Google 于 2019 年發(fā)表的《XLNet: Generalized Autoregressive Pretraining for Language Understanding》中被提出。
論文中,作者提到了兩種 Pre-training 的方式:AR(autoregressive language modeling)、AE(denoising autoencoding)。前者的代表如 ELMo、GPT 系列,后者的代表則是 BERT。
兩種方式各有劣勢:
AR:只利用到單向 context 的信息(前向或后向)
AE(這里特指 BERT):Pre-training 階段引入的 [MASK] 占位符在 Fine-tuning 階段并不存在;同一個(gè) sequence 如果有多個(gè)位置 [MASK],BERT 假定它們之間是獨(dú)立的,這與事實(shí)不符
為了解決 BERT 面臨的問題,XLNet 做了如下改進(jìn):
Pre-training的訓(xùn)練目標(biāo)調(diào)整為PLM (Permutation Language Modeling),具體實(shí)現(xiàn)時(shí)采用了 Two-Stream Self-Attention 機(jī)制,并對(duì)可能的排列進(jìn)行了采樣
模型結(jié)構(gòu)采用 Transformer-XL,解決 Transformer 對(duì)長文檔不友好的問題
采用更優(yōu)質(zhì)更大規(guī)模的語料
RoBERTa
RoBERTa 在華盛頓大學(xué) +Facebook 于 2019 年發(fā)表的《RoBERTa: A Robustly Optimized BERT Pretraining Approach》中被提出。
RoBERTa 的改進(jìn)點(diǎn)主要有:
1. 訓(xùn)練時(shí)間更長:更大規(guī)模的訓(xùn)練數(shù)據(jù)(16GB -> 160GB)、更大的 batch_size(256 -> 8K);
2. 去除 NSP 任務(wù),輸入格式相應(yīng)修改為 FULL-SENTENCES;
3. 輸入粒度:由 character-level BPE 改為 byte-level BPE;
4. masking 機(jī)制:由 static masking改為dynamic masking:
static masking:僅在數(shù)據(jù)預(yù)處理階段做一次隨機(jī) mask,每條數(shù)據(jù)在每個(gè) epoch 中的 mask 方式不變;
dynamic masking:每條數(shù)據(jù)在訓(xùn)練時(shí)隨機(jī)mask,每個(gè) epoch 中的 mask 方式不同。
SpanBERT
SpanBERT 在華盛頓大學(xué)+普林斯頓大學(xué)于 2019 年發(fā)表的《SpanBERT: Improving Pre-training by Representing and Predicting Spans》中被提出。
模型結(jié)構(gòu)如下:
SpanBERT 的改進(jìn)點(diǎn)主要有:
1. Span Masking:首先根據(jù)幾何分布??采樣出 span 的長度(大于 10 則重新采樣),然后根據(jù)均勻分布隨機(jī)選擇起始點(diǎn),最后從起始點(diǎn)開始將 span 內(nèi)的 token 進(jìn)行 mask;注意,這個(gè)過程會(huì)進(jìn)行多次,直到被 mask 的 token 數(shù)量達(dá)到閾值,如輸入序列的 15%;
2. Span Boundary Objective(SBO):對(duì)于 span 內(nèi)的每一個(gè) token,除了原始的 MLM 的 loss,再加 SBO 的 loss,即:
3. Single-Sequence Training:去掉 NSP 任務(wù),用一個(gè)長句替代原來的兩個(gè)句子。
ALBERT
ALBERT 在 Google于 2019 年發(fā)表的《ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS》中被提出。
ALBERT 的出發(fā)點(diǎn)在于,如果模型參數(shù)持續(xù)變大,會(huì)出現(xiàn)兩類問題:GPU/TPU OOM;模型效果退化。基于此,ALBERT 考慮減少模型的參數(shù)。
ALBERT 的改進(jìn)點(diǎn)主要有:
1. Factorized embedding parameterization:之前的模型中,都會(huì)使??(E 是 vocabulary embedding size,H 是 hidden size),如此一來,H的提升會(huì)導(dǎo)致E的提升,從而使參數(shù)量呈平方級(jí)的增加。ALBERT 將 E 和 H 解綁,在 embedding 后再接一個(gè)??的矩陣,這樣可以保持 E 不變的情況下提升 H。在這種情況下,參數(shù)量由??降低至??,當(dāng)??時(shí),效果更加顯著;
2. Cross-layer parameter sharing:將 Transformer Encoder 中每一個(gè) layer 的參數(shù)進(jìn)行共享,也即,每個(gè) layer 復(fù)用同一套參數(shù);
3. Inter-sentence coherence loss:將 NSP 替換為 SOP(sentence-order prediction),即從同一個(gè)文檔中抽取兩個(gè)連續(xù)的句子作為正樣本,調(diào)換順序后作為負(fù)樣本(NSP 的負(fù)樣本來自兩個(gè)不同的文檔);
4. 采用更大規(guī)模的訓(xùn)練數(shù)據(jù)并去除 Dropout(因?yàn)樽髡甙l(fā)現(xiàn)模型仍然沒有過擬合)。
ALBERT 和 BERT 在不同配置下的參數(shù)量如下:
ALBERT 和 BERT 在不同配置下的效果和訓(xùn)練時(shí)間如下:
注意,這里的 Speedup 指的是訓(xùn)練時(shí)間而非推理時(shí)間,因?yàn)?ALBERT 的優(yōu)化點(diǎn)主要在于降低參數(shù)量,這可以加速訓(xùn)練,但是模型層數(shù)并沒有變化,所以推理時(shí)間不受影響。
MASS
MASS 在 Microsoft 于 2019 年發(fā)表的《MASS: Masked Sequence to Sequence Pre-training for Language Generation》中被提出。
像 BERT 這類基于 Pre-training 和 fine-tuning 的模型在 NLU(Natural Language Understanding)任務(wù)中取得了很大的成功。與之相對(duì)應(yīng)地,NLG(Natural Language Generation)任務(wù)如 neural machine translation(NMT)、text summarization 和 conversational response generation 等,經(jīng)常面臨著訓(xùn)練數(shù)據(jù)(paired data)匱乏的問題。
因此,在大量 unpaired data 上做 pre-training 然后在少量 paired data 上做 fine-tuning,對(duì) NLU 任務(wù)而言是同樣有益的。然而,直接采用類似 BERT 的預(yù)訓(xùn)練結(jié)構(gòu)(僅用 encoder 或 decoder)是不可取的,因?yàn)?NLG 任務(wù)通常是基于 encoder-decoder 的框架。基于此,論文提出了一種適用于 NLG 任務(wù)的預(yù)訓(xùn)練方式——MASS。
區(qū)別于單獨(dú)對(duì) encoder 或 decoder 進(jìn)行 pre-training,MASS 可以對(duì)二者進(jìn)行聯(lián)合 pre-training,其結(jié)構(gòu)如下:
整體基于 Transformer,Encoder 被 mask 的 token 是連續(xù)的,Decoder 將 Encoder 中未被 mask 的 token 進(jìn)行 mask,預(yù)測 Encoder 中被 mask 的 token。
論文中提到,通過控制 Encoder 中 mask 的 token 長度 k,BERT 和 GPT 可看作是 MASS 的特例:
Pre-training:
由于 NMT 涉及跨語言,因此采用了 4 種語言的數(shù)據(jù),并在 Encoder、Decoder 的 input 中給每個(gè) token 加上了一個(gè) language embedding
Encoder,mask 的 token 數(shù)量為序列長度的 50%,隨機(jī)選擇起點(diǎn),mask 方式同 BERT(80% 替換為 [M],10%替換為其它隨機(jī) token,10% 不變)
Decoder,移除被 mask 的 token,未 mask 的 token 依然保持它們的 positional encoding 不變
Fine-tuning:
同常規(guī) Seq2Seq 任務(wù)
UNILM
UNILM 在 Microsoft 于 2019 發(fā)表的《Unified Language Model Pre-training for Natural Language Understanding and Generation》中被提出。
UNILM 是一種能同時(shí)適用于 NLU 和 NLG 任務(wù)的 Pre-training 框架,基于參數(shù)共享的 Transformer,對(duì)三種類型的無監(jiān)督語言建模目標(biāo)進(jìn)行聯(lián)合預(yù)訓(xùn)練:Unidirectional LM(left-to-right && right-to-left)、Bidirectional LM、Sequence-to-Sequence LM。預(yù)訓(xùn)練后的 UNILM 可以進(jìn)行 Fine-tuning(如有必要可添加 task-specific layers)以適應(yīng)不同類型的下游任務(wù)。
模型結(jié)構(gòu)如下:
Pre-training:
對(duì)于不同類型的 LM 目標(biāo),所使用的 segment embedding 不同,以示區(qū)分
對(duì)于所有類型的 LM 目標(biāo),預(yù)訓(xùn)練采用的任務(wù)都是 cloze task,有所區(qū)分的是,不同的 LM 它們所能利用到的 context 不同:Unidirectional LM,context 是單側(cè)的 token(左側(cè) or 右側(cè));Bidirectional LM,context 是兩側(cè)的 token;Sequence-to-Sequence LM,context 是源序列的所有 token 以及目標(biāo)序列的左側(cè) token。不同的 context 是通過相應(yīng)的 mask 矩陣來實(shí)現(xiàn)的
對(duì)于 Bidirectional LM,加入了 NSP 任務(wù)
對(duì)于 Sequence-to-Sequence LM,在 Pre-training 階段,源序列和目標(biāo)序列都有可能被 mask
在一個(gè) batch 中,1/3 的時(shí)間采用 Bidirectional LM,1/3 的時(shí)間采用 Sequence-to-Sequence LM,1/6 的時(shí)間采用 left-to-right Unidirectional LM,1/6 的時(shí)間采用 right-to-left Unidirectional LM
80% 的時(shí)間 mask 一個(gè) token,20% 的時(shí)間 mask一個(gè)bigram 或 trigram
Fine-tuning:
對(duì)于 NLU 任務(wù),同 BERT
對(duì)于 NLG 任務(wù),若是 Seq2Seq 任務(wù),則只 mask 目標(biāo)序列中的 token
UNILM 的優(yōu)勢:
統(tǒng)一的預(yù)訓(xùn)練流程讓單個(gè) Transformer 能為不同類型的語言模型使用共享的參數(shù)和架構(gòu),從而減輕對(duì)分開訓(xùn)練和管理多個(gè)語言模型的需求
參數(shù)共享使得學(xué)習(xí)到的文本表征更通用,因?yàn)樗鼈冡槍?duì)不同的語言建模目標(biāo)(其中利用上下文的方式各不相同)進(jìn)行了聯(lián)合優(yōu)化,這能緩解在任意單個(gè)語言模型任務(wù)上的過擬合
除了在 NLU 任務(wù)上的應(yīng)用,作為 Sequence-to-Sequence LM 使用的 UNILM 也使其能自然地用于 NLG 任務(wù),比如抽象式摘要和問答
BART
BART在Facebook于2019年發(fā)表的《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》中被提出。
BART 采用了 Transformer 的 Seq2Seq 框架,和 MASS 類似,只不過它的 Pre-training 任務(wù)是:在 Encoder 端輸入被破壞的文本,在 Decoder 端復(fù)原原始文本。
模型結(jié)構(gòu)如下:
破壞文本的方式有如下幾種(可組合使用):
Fine-tuning:
Sequence Classification Tasks:
Token Classification Tasks:將完整文檔輸入到 Encoder 和 Decoder 中,使用 Decoder 最上方的隱藏狀態(tài)作為每個(gè) token 的表征,進(jìn)行分類
Sequence Generation Tasks:同常規(guī) Seq2Seq 任務(wù)
Machine Translation:新增了一個(gè) Encoder 結(jié)構(gòu)(隨機(jī)初始化),視作對(duì)預(yù)訓(xùn)練 Encoder 的 embedding layer 的替換
參考文獻(xiàn)
[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
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識(shí)的人。
總有一些你不認(rèn)識(shí)的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵(lì)高校實(shí)驗(yàn)室或個(gè)人,在我們的平臺(tái)上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)習(xí)心得或技術(shù)干貨。我們的目的只有一個(gè),讓知識(shí)真正流動(dòng)起來。
?????來稿標(biāo)準(zhǔn):
? 稿件確系個(gè)人原創(chuàng)作品,來稿需注明作者個(gè)人信息(姓名+學(xué)校/工作單位+學(xué)歷/職位+研究方向)?
? 如果文章并非首發(fā),請?jiān)谕陡鍟r(shí)提醒并附上所有已發(fā)布鏈接?
? PaperWeekly 默認(rèn)每篇文章都是首發(fā),均會(huì)添加“原創(chuàng)”標(biāo)志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨(dú)在附件中發(fā)送?
? 請留下即時(shí)聯(lián)系方式(微信或手機(jī)),以便我們在編輯發(fā)布時(shí)和作者溝通
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的BERT相关模型汇总梳理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯音乐发布一季度财报 总营收78.
- 下一篇: 沙漠之鹰的坦克怎么画