BERT再次制霸GLUE排行榜!今天,F(xiàn)acebook公開一個“強力優(yōu)化”版的基于BERT預(yù)訓(xùn)練模型,名為RoBERTa,在GLUE、SQuAD和RACE三個排行榜上全部實現(xiàn)了最先進的結(jié)果。距被XLNet超越?jīng)]過多久,BERT再次回到了最強NLP預(yù)訓(xùn)練模型的王座。
BERT王者歸來了!
前不久,CMU和谷歌大腦提出的XLNet預(yù)訓(xùn)練模型在 20 項任務(wù)上全面碾壓曾有“最強NLP預(yù)訓(xùn)練模型”之稱的BERT,可謂風(fēng)光無限,吸足了眼球。
不過,XLNet的王座沒坐太久。就在今天,F(xiàn)acebook公布一個基于BERT開發(fā)的加強版預(yù)訓(xùn)練模型RoBERTa——在GLUE、SQuAD和RACE三個排行榜上全部實現(xiàn)了最先進的結(jié)果!
GLUE最新排行榜
RACE排行榜
RoBERTa的名稱來"RobustlyoptimizedBERTapproach",強力優(yōu)化的BERT方法,真是相當簡單粗暴呢~
這項研究由Facebook AI和華盛頓大學(xué)的研究團隊共同完成,而且第一作者是華人研究員Yinhan Liu,此外還有Jingfei Du和Danqi Chen。
作者之一的Veselin Stoyanov在推特上公布了該結(jié)果
Facebook AI負責(zé)人Yann LeCun推薦:
要說RoBERTa是如何制霸3個benchmark排行榜的,簡言之,用更多的數(shù)據(jù),采取更精妙的訓(xùn)練技巧,訓(xùn)練更久一些。
作者在論文中寫道:“我們對BERT預(yù)訓(xùn)練(Devlin et al. , 2019)進行了一項復(fù)制研究,仔細衡量了許多關(guān)鍵超參數(shù)和訓(xùn)練數(shù)據(jù)大小對結(jié)果的影響。我們發(fā)現(xiàn)BERT的訓(xùn)練明顯不足,并且可以匹配或超過之后發(fā)布的每個模型的性能。我們最好的模型在GLUE,RACE 和 SQuAD上都實現(xiàn)了最先進的結(jié)果。”
作者表示,超參數(shù)的選擇對最終結(jié)果的影響很大。
他們發(fā)布了模型和代碼:https://github.com/pytorch/fairseq
接下來,新智元帶來對這篇論文的詳細解讀:
只要訓(xùn)練得好,BERT可以超過所有后續(xù)方法的性能
自我訓(xùn)練的方法,比如ELMo, GPT,BERT,XLM 以及XLNet等,帶來了顯著的性能提升,但要想確定這些方法的哪些方面對性能提升貢獻最多是相當有挑戰(zhàn)性的。由于訓(xùn)練在計算上成本很高,限制了可執(zhí)行的調(diào)優(yōu)量,而且常常使用不同大小的私有訓(xùn)練數(shù)據(jù)進行調(diào)優(yōu),限制了對建模進展效果的測量。
我們對BERT預(yù)訓(xùn)練模型(Devlin et al., 2019)進行了一項復(fù)制研究,包括仔細評估了超參數(shù)調(diào)優(yōu)效果和訓(xùn)練集大小的影響。我們發(fā)現(xiàn)BERT明顯訓(xùn)練不足,并提出了一個改進的訓(xùn)練BERT模型的方法,我們稱之為RoBERTa,它可以達到或超過所有BERT后續(xù)方法(post-BERT)的性能。
我們做的修改很簡單,包括:
(1)對模型進行更長時間、更大批量、更多數(shù)據(jù)的訓(xùn)練;
(2)刪除下一句預(yù)測的目標;
(3)對較長序列進行訓(xùn)練;
(4)動態(tài)改變應(yīng)用于訓(xùn)練數(shù)據(jù)的masking模式。
我們還收集了一個與其他私有數(shù)據(jù)集大小相當?shù)男聰?shù)據(jù)集(CC-NEWS),以便更好地控制訓(xùn)練集大小效果。
在對訓(xùn)練數(shù)據(jù)進行控制時,我們的升級版訓(xùn)練程序進一步提升了BERT在GLUE和SQuAD排行榜上公布的結(jié)果。
經(jīng)過長時間的訓(xùn)練,我們的模型在公共 GLUE排行榜上的得分為88.5分,與Yang等人(2019)報告的88.4分相當。我們的模型在GLUE 9個任務(wù)的其中4個上達到了state-of-the-art的水平,分別是:MNLI, QNLI, RTE 和 STS-B。此外,我們還在SQuAD 和 RACE 排行榜上達到了最高分。
總結(jié)而言,本文的貢獻有:
(1)我們提出了一套重要的BERT設(shè)計選擇和訓(xùn)練策略,并引入了能夠提高下游任務(wù)成績的備選方案;
(2)我們使用一個新的數(shù)據(jù)集CCNEWS,并確認使用更多的數(shù)據(jù)進行預(yù)訓(xùn)練可以進一步提高下游任務(wù)的性能;
(3)我們的訓(xùn)練改進表明,在正確的設(shè)計選擇下,預(yù)訓(xùn)練的masked language model與其他所有最近發(fā)表的方法相比都更具有競爭力。我們發(fā)布了在PyTorch中實現(xiàn)的模型、預(yù)訓(xùn)練和微調(diào)代碼。
模型架構(gòu):Transformer
BERT使用了現(xiàn)在已經(jīng)十分流行的transformer架構(gòu),這里我們不會詳細討論它。我們使用的是L層的transformer 架構(gòu),每個block 都使用一個self-attention head和隱藏維度H。
在訓(xùn)練前,BERT使用了兩個目標:masked language modeling和下一句預(yù)測。
Masked Language Mode(MLM)選擇輸入序列中的隨機token樣本,并用特殊的token[MASK]替換。MLM的目標是預(yù)測遮擋token時的交叉熵損失。BERT一致選擇15%的輸入token作為可能的替換。在所選的token中,80%替換為[MASK], 10%保持不變,10%替換為隨機選擇的詞匯表token。
在最初的實現(xiàn)中,隨機遮擋和替換在開始時執(zhí)行一次,并保存到訓(xùn)練期間,但是在實際操作中,由于數(shù)據(jù)是重復(fù)的,所以每個訓(xùn)練語句的mask并不總是相同的。
下一句預(yù)測(NSP)是一種二分類損失,用于預(yù)測兩個片段在原文中是否相互跟隨。通過從文本語料庫中提取連續(xù)的句子來創(chuàng)建積極的例子。反例是通過對來自不同文檔的段進行配對來創(chuàng)建的。正、負樣本的抽樣概率相等。
NSP的目標是為了提高下游任務(wù)的性能,比如自然語言推理,這需要對句子對之間的關(guān)系進行推理。
實驗設(shè)計
在本節(jié)中,我們描述了用于BERT復(fù)制研究的實驗設(shè)置。
我們在FAIRSEQ中重新實現(xiàn)了BERT。我們主要遵循第2節(jié)中給出的原始BERT優(yōu)化超參數(shù),除了峰值學(xué)習(xí)率和warmup步驟的數(shù)量,這兩個參數(shù)分別針對每個設(shè)置進行調(diào)優(yōu)。
此外,我們還發(fā)現(xiàn)訓(xùn)練對Adam epsilon項非常敏感,在某些情況下,在對其進行調(diào)優(yōu)后,我們獲得了更好的性能或更好的穩(wěn)定性。同樣地,我們發(fā)現(xiàn)設(shè)置β2 = 0.98時可以提高大的batch size訓(xùn)練時的穩(wěn)定性。
我們在DGX-1機器上進行混合精度浮點運算的訓(xùn)練,每臺機器上有8個32GB Nvidia V100 GPU,通過Infiniband互連。
哪些選擇對于成功地訓(xùn)練BERT模型至關(guān)重要
本節(jié)探討和量化哪些選擇對于成功地訓(xùn)練BERT模型至關(guān)重要。我們保持模型架構(gòu)不變。具體地說,我們首先以與BERTBASE相同的配置(L = 12, H = 768, A = 12, 110M params)開始訓(xùn)練BERT模型。
靜態(tài)masking vs. 動態(tài)masking
正如在前文討論的,BERT依賴于隨機遮擋和預(yù)測token。原始的BERT實現(xiàn)在數(shù)據(jù)預(yù)處理期間執(zhí)行一次遮擋,從而產(chǎn)生一個靜態(tài)遮擋(static mask)。為了避免在每個epoch中對每個訓(xùn)練實例使用相同的mask,我們將訓(xùn)練數(shù)據(jù)重復(fù)10次,以便在40個訓(xùn)練epoch中以10種不同的方式對每個序列進行遮擋。因此,在訓(xùn)練過程中,每個訓(xùn)練序列都使用相同的mask四次。
我們將此策略與動態(tài)遮擋(dynamic masking)進行比較,在dynamic masking)中,每次向模型提供序列時都會生成masking模式。當對更多步驟或更大的數(shù)據(jù)集進行預(yù)訓(xùn)練時,這一點變得至關(guān)重要。
表1:SEBERTBASE的靜態(tài)和動態(tài)masking的比較。我們報告了SQuAD 的F1分數(shù)和MNLI-m 以及 SST-2的準確性結(jié)果。報告的結(jié)果是超過5個隨機初始化的中值。參考結(jié)果來自Yang et al. (2019).
結(jié)果表1比較了Devlin等人(2019)發(fā)布的BERTBASE結(jié)果與我們使用靜態(tài)或動態(tài)masking重新實現(xiàn)的結(jié)果。我們發(fā)現(xiàn),使用靜態(tài)masking的重新實現(xiàn)的性能與原始的BERT模型相似,而動態(tài)masking可以與靜態(tài)masking的結(jié)果相當,甚至略好于靜態(tài)masking。
考慮到這些結(jié)果和動態(tài)masking的額外效率優(yōu)勢,我們在其余的實驗中使用動態(tài)masking。
模型輸入格式和下一句預(yù)測
在原始的BERT預(yù)訓(xùn)練過程中,模型觀察到兩個連接的文檔片段,它們要么是從相同的文檔連續(xù)采樣(p = 0.5),要么是從不同的文檔采樣。除了masked language modeling 目標外,該模型還通過輔助下一句預(yù)測(NSP)損失訓(xùn)練模型來預(yù)測觀察到的文檔片段是來自相同還是不同的文檔。
NSP損失被認為是訓(xùn)練原始BERT模型的一個重要因素。Devlin等人(2019)觀察到,去除NSP會損害性能,QNLI、MNLI和SQuAD的性能都顯著下降。然而,最近的一些工作對NSP損失的必要性提出了質(zhì)疑。
為了更好地理解這種差異,我們比較了幾種替代訓(xùn)練格式:
表2:在BOOKCORPUS和WIKIPEDIA上預(yù)訓(xùn)練的基本模型的開發(fā)集結(jié)果。
表2顯示了四種不同設(shè)置的結(jié)果。我們發(fā)現(xiàn),使用單獨的句子會影響下游任務(wù)的性能,我們假設(shè)這是因為該模型無法學(xué)習(xí)長期依賴關(guān)系。
接下來,我們將無NSP損失的訓(xùn)練與來自單個文檔(doc - sentence)的文本塊的訓(xùn)練進行比較。我們發(fā)現(xiàn),與Devlin等人(2019)相比,該設(shè)置的性能優(yōu)于最初發(fā)布的BERTBASE結(jié)果,消除NSP損失達到或略微提高了下游任務(wù)性能。
最后,我們發(fā)現(xiàn)將序列限制為來自單個文檔(doc - sentence)的性能略好于打包來自多個文檔(全句)的序列。但是,由于doc - sentence格式會導(dǎo)致不同的batch sizes,所以我們在其余的實驗中使用完整的句子,以便與相關(guān)工作進行比較。
large batches訓(xùn)練
以往的神經(jīng)機器翻譯研究表明,當學(xué)習(xí)率適當提高時,非常大的mini-batches的訓(xùn)練既可以提高優(yōu)化速度,又可以提高最終任務(wù)性能。最近的研究表明,BERT也可以接受 large batch訓(xùn)練。
Devlin等人(2019)最初訓(xùn)練BERTBASE只有100萬步, batch size為256個序列。
在表3中,我們比較了BERTBASE在增大 batch size時的復(fù)雜性和最終任務(wù)性能,控制了通過訓(xùn)練數(shù)據(jù)的次數(shù)。我們觀察到,large batches訓(xùn)練提高了masked language modeling 目標的困惑度,以及最終任務(wù)的準確性。通過分布式數(shù)據(jù)并行訓(xùn)練,large batches也更容易并行化,在后續(xù)實驗中,我們使用8K序列的batches進行并行訓(xùn)練。
表3:不同批大小上訓(xùn)練的基本模型的未完成訓(xùn)練數(shù)據(jù)(ppl)和開發(fā)集準確性的困惑度。
RoBERTa:制霸三大基準數(shù)據(jù)集
在上一節(jié)中,我們建議修改BERT預(yù)訓(xùn)練程序,以改善最終任務(wù)的性能。我們現(xiàn)在匯總這些改進并評估它們的綜合影響。我們將這種配置稱為RoBERTa,即“RobustlyoptimizedBERTapproach”,強力優(yōu)化的BERT方法。
具體來說,RoBERTa采用了dynamic masking、沒有NSP損失的完整句子、large mini-batches和更大的字節(jié)級BPE的訓(xùn)練。
此外,我們還研究了以前工作中未被強調(diào)的另外兩個重要因素:(1)用于預(yù)訓(xùn)練的數(shù)據(jù),以及(2)通過數(shù)據(jù)的訓(xùn)練次數(shù)。例如,最近提出的XLNet架構(gòu)使用的數(shù)據(jù)比原始BERT多近10倍。它還以8倍大的批量進行訓(xùn)練,以獲得一半的優(yōu)化步驟,因此在預(yù)訓(xùn)練中看到的序列數(shù)是BERT的4倍。
為了將這些因素與其他建模選擇(例如,預(yù)訓(xùn)練目標)的重要性區(qū)分開來,我們首先按照BertLarge架構(gòu)(L=24,H=1024,A=16355m)對Roberta進行訓(xùn)練。正如在Devlin et al. 中使用的一樣,我們用BOOKCORPUS和WIKIPEDIA數(shù)據(jù)集進行了100K步預(yù)訓(xùn)練。我們使用1024V100GPU對我們的模型進行了大約一天的預(yù)訓(xùn)練。
結(jié)果如表4所示,當控制訓(xùn)練數(shù)據(jù)時,我們觀察到RoBERTa比最初報告的BERTLARGE結(jié)果有了很大的改進,再次證實我們在第4節(jié)中探討的設(shè)計選擇的重要性。
表4:當我們預(yù)先訓(xùn)練了更多數(shù)據(jù)(16GB→160GB文本)和預(yù)訓(xùn)練更久(100K→300K→500K步),RoBERTa的開發(fā)集(Development set)結(jié)果。每行累積上述行的改進。RoBERTa匹配BERTLARGE的架構(gòu)和訓(xùn)練目標。BERTLARGE和XLNetLARGE的結(jié)果分別來自Devlin et al.和Yang et al. 附錄中有所有GLUE任務(wù)的完整結(jié)果。
接下來,我們將此數(shù)據(jù)與第3.2節(jié)中描述的三個附加數(shù)據(jù)集相結(jié)合。我們用與之前相同數(shù)量的訓(xùn)練步(100K)對RoBERTa進行綜合數(shù)據(jù)訓(xùn)練。我們總共預(yù)處理了超過160GB的文本。我們觀察到所有下游任務(wù)的性能進一步提高,驗證了數(shù)據(jù)大小和多樣性在預(yù)訓(xùn)練中的重要性。
最后,我們預(yù)先訓(xùn)練RoBERTa的時間要長得多,將預(yù)訓(xùn)練步數(shù)從100K增加到300K,再進一步增加到500K。我們再次觀察到下游任務(wù)性能的顯著提升,300K和500K步模型在大多數(shù)任務(wù)中的表現(xiàn)優(yōu)于XLNetLARGE。我們注意到,即使是我們訓(xùn)練時間最長的模型似乎也不會超出我們的數(shù)據(jù)范圍,而且可能會從額外的訓(xùn)練中受益。
在本文的其余部分,我們根據(jù)三個不同的基準評估我們最好的RoBERTa模型:GLUE,SQuaD和RACE。具體來說,我們認為RoBERTa在第3.2節(jié)中介紹的所有五個數(shù)據(jù)集上都進行了500K步的訓(xùn)練。
表5:GLUE的結(jié)果。所有結(jié)果均基于24層架構(gòu)。BERTLARGE和XLNetLARGE結(jié)果分別來自Devlin et al.和Yang et al. 開發(fā)集上的RoBERTa結(jié)果是五次運行的中間數(shù)。測試集上的RoBERTa結(jié)果是單任務(wù)模型的集合。對于RTE,STS和MRPC,我們從MNLI模型而不是基線預(yù)訓(xùn)練模型開始微調(diào)。平均值從GLUE leaderboard獲得。
表6:SQuAD的結(jié)果。+表示依賴于額外外部訓(xùn)練數(shù)據(jù)的結(jié)果。RoBERTa在開發(fā)和測試中僅使用了提供的SQuAD數(shù)據(jù)。BERTLARGE和XLNetLARGE結(jié)果分別來自Devlin et al.和Yang et al.
表7:RACE測試集的結(jié)果。BERTLARGE和XLNetLARGE的結(jié)果來自Yang et al.
-
Facebook
+關(guān)注
關(guān)注
3文章
1429瀏覽量
54648 -
模型
+關(guān)注
關(guān)注
1文章
3172瀏覽量
48713
原文標題:BERT王者歸來!Facebook推出RoBERTa新模型,碾壓XLNet 制霸三大排行榜
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論