在XLNet全面超越Bert后沒多久,F(xiàn)acebook提出了RoBERTa(a Robustly Optimized BERT Pretraining Approach)姜盈。再度在多個(gè)任務(wù)上達(dá)到SOTA低千。那么它到底改進(jìn)了什么?它在模型層面沒有改變Google的Bert馏颂,改變的只是預(yù)訓(xùn)練的方法示血。
1. 靜態(tài)Masking vs 動(dòng)態(tài)Masking
原來Bert對(duì)每一個(gè)序列隨機(jī)選擇15%的Tokens替換成[MASK],為了消除與下游任務(wù)的不匹配救拉,還對(duì)這15%的Tokens進(jìn)行(1)80%的時(shí)間替換成[MASK]难审;(2)10%的時(shí)間不變;(3)10%的時(shí)間替換成其他詞亿絮。但整個(gè)訓(xùn)練過程告喊,這15%的Tokens一旦被選擇就不再改變,也就是說從一開始隨機(jī)選擇了這15%的Tokens派昧,之后的N個(gè)epoch里都不再改變了黔姜。這就叫做靜態(tài)Masking。
而RoBERTa一開始把預(yù)訓(xùn)練的數(shù)據(jù)復(fù)制10份蒂萎,每一份都隨機(jī)選擇15%的Tokens進(jìn)行Masking秆吵,也就是說,同樣的一句話有10種不同的mask方式五慈。然后每份數(shù)據(jù)都訓(xùn)練N/10個(gè)epoch纳寂。這就相當(dāng)于在這N個(gè)epoch的訓(xùn)練中,每個(gè)序列的被mask的tokens是會(huì)變化的泻拦。這就叫做動(dòng)態(tài)Masking烈疚。
那么這樣改變是否真的有效果?作者在只將靜態(tài)Masking改成動(dòng)態(tài)Masking聪轿,其他參數(shù)不變的情況下做了實(shí)驗(yàn),動(dòng)態(tài)Masking確實(shí)能提高性能猾浦。
2. with NSP vs without NSP
原本的Bert為了捕捉句子之間的關(guān)系陆错,使用了NSP任務(wù)進(jìn)行預(yù)訓(xùn)練,就是輸入一對(duì)句子A和B金赦,判斷這兩個(gè)句子是否是連續(xù)的音瓷。在訓(xùn)練的數(shù)據(jù)中,50%的B是A的下一個(gè)句子夹抗,50%的B是隨機(jī)抽取的绳慎。
而RoBERTa去除了NSP,而是每次輸入連續(xù)的多個(gè)句子,直到最大長度512(可以跨文章)杏愤。這種訓(xùn)練方式叫做(FULL - SENTENCES)靡砌,而原來的Bert每次只輸入兩個(gè)句子。實(shí)驗(yàn)表明在MNLI這種推斷句子關(guān)系的任務(wù)上RoBERTa也能有更好性能珊楼。
3. 更大的mini-batch
原本的BERTbase 的batch size是256通殃,訓(xùn)練1M個(gè)steps。RoBERTa的batch size為8k厕宗。為什么要用更大的batch size呢画舌?(除了因?yàn)樗麄冇绣X玩得起外)作者借鑒了在機(jī)器翻譯中,用更大的batch size配合更大學(xué)習(xí)率能提升模型優(yōu)化速率和模型性能的現(xiàn)象已慢,并且也用實(shí)驗(yàn)證明了確實(shí)Bert還能用更大的batch size曲聂。直接看圖吧,不細(xì)說了佑惠。
4. 更多的數(shù)據(jù)朋腋,更長時(shí)間的訓(xùn)練
借鑒XLNet用了比Bert多10倍的數(shù)據(jù),RoBERTa也用了更多的數(shù)據(jù)兢仰。性能確實(shí)再次彪升乍丈。當(dāng)然,也需要配合更長時(shí)間的訓(xùn)練把将。
這一套下來轻专,最終在GLUE, RACE, SQuAD上都達(dá)到了SOTA的性能。