曉查 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
幾周前,谷歌發布了新的NLP模型XLNet,它在20項基準測試中均優于BERT。
但是與BERT相比,XLNet模型的訓練數據比BERT大10倍。這讓學術界和工業界對此產生了疑問:XLNet如果只接受與BERT相同規模的訓練數據會如何?XLNet的勝利是否只是數據集的勝利?
今天,XLNet研究團隊在Medium網站上用實際數據解答了眾人的疑惑。他們使用近乎相同的數據集在XLNet和BERT之間進行公平對決,看看前者的性能到底有沒有本質的提升。
參數配置
為了保證公平性,團隊確保BERT和XLNet中幾乎所有可能的超參數盡量相同。在無法保證二者相同的情況下,他們還讓參數的優勢更向BERT傾斜。
超參數用的是原來BERT作者發布的數據。也就是說,這么做更有可能針對BERT而不是XLNet進行優化。
具體的超參數設置如下:
- 相同的batch size:256
- 相同的訓練步數:1M
- 相同的優化器:Adam,學習率1e-4,10K預熱,線性衰減
- 相同的訓練語料庫:Wikipedia + BooksCorpus。XLNet團隊使用與BERT repo中描述相同的工具來處理維基百科。但由于某些未知原因,XLNet維基百科語料庫只有20億單詞,而BERT有25億單詞。因此XLNet訓練集反而更小。
- 相同的模型架構參數:24層,1024個隱藏單元,head數16
- 相同的微調超參數搜索空間
他們修改了一些與數據相關的實現細節,以便與BERT進行一對一的比較:
- 在之前的實現中,未被覆蓋的token在預訓練中看不到CLS和SEP。在現在的實現中,未被覆蓋的token可以看到CLS和SEP,這與BERT一致。
- 在微調中,XLNet使用“BERT格式”[CLS,A,SEP,B,SEP]取代[A,SEP,B,SEP,CLS]。
此外,他們還考慮了BERT的三種變體,并報告每個單獨任務的最佳微調結果。
- 模型-I:作者發布的原始BERT
- 模型-II:具有全詞覆蓋的BERT,也是由作者發布
- 模型-III:由于下一句預測(NSP)可能會影響性能,使用已發布的BERT代碼預訓練一個新的沒有NSP損失的模型。
以上的設置可能會為BERT帶來一些優勢,因為BERT可以通過不同的變體獲得單個任務的最佳性能。
對比結果
二者在SQuAD、RACE等測試集上的結果如下,過程中沒有使用數據擴增、集成學習或多任務學習。
測試結果說明了一些問題:
- 使用幾乎相同的數據和訓練方法,XLNet在所有數據集上均以相當大的優勢超越BERT。
- 10倍數據對訓練效果的提升不如從BERT到XLNet的變化明顯。11個基準測試中,有8個從BERT切換到XLNet的提升更為明顯。
- 在CoLA和MRPC等一些基準測試中,更多數據上訓練的模型得分反而低于在較少數據上訓練的模型。
上述結果中讓我們獲得了一些寶貴的經驗。
- XLNet確實提高了性能。實驗結果1表明,在相同的訓練條件下XLNet相對于BERT具有優勢。
- XLNet-Large可以更好地進行優化。實驗結果2和3似乎表明XLNet-Large(更多訓練數據)沒有充分利用數據規模。
對未來工作的啟發
XLNet團隊表示,將繼續研究如何正確擴展XLNet語言預訓練。根據目前有限的觀察結果,他們推測以下訓練細節可能會發揮重要作用:
數據相關:數據規模、數據來源、數據清洗、數據編碼、數據格式化。
優化相關:學習率、batch size、訓練步數、優化器。
這些超參數之間可能有高階的相互作用。
Facebook AI最近的RoBERTa進入GLUE排行榜第一,似乎也暗示了訓練細節的重要性。
原文鏈接:
https://medium.com/@xlnet.team/a-fair-comparison-study-of-xlnet-and-bert-with-large-models-5a4257f59dc0



