BERT 模型是 2018 年提出的惠拭,并在很多自然語言處理任務有前所未有的提升费什。因此 2019 年就有很多工作是圍繞著 BERT 展開的镀迂,其中出現(xiàn)了兩個 BERT 的改進版模型,RoBERTa 和 ALBERT泪幌。RoBERTa 在更大的數(shù)據(jù)集和最優(yōu)的參數(shù)中訓練 BERT毯欣,使 BERT 的性能再次提升馒过;ALBERT 主要是對 BERT 進行壓縮臭脓,通過共享所有層的參數(shù)以及 Embedding 分解減少 BERT 的參數(shù)量酗钞。
1. 前言
本文主要介紹 BERT 的兩種改進模型 RoBERTa 和 ALBERT娇澎,關于 BERT 模型可以參考之前的文章 《徹底理解 Google BERT 模型》,首先總體看一下 RoBERTa 和 ALBERT 的一些特點重绷。
RoBERTa:
- 更大的訓練集尘执,更大的 batch辆毡。
- 不需要使用 NSP Loss厅篓。
- 使用更長的訓練 Sequence膜赃。
- 動態(tài) Mask剧董。
ALBERT:
- 分解 Embedding 矩陣赶熟,減少維度领猾。
- 所有 Transformer 層共享參數(shù)米同。
- 使用 SOP (Sentence Order Prediction) 替代 NSP。
2. RoBERTa
RoBERTa 主要試驗了 BERT 中的一些訓練設置 (例如 NSP Loss 是否有意義摔竿,batch 的大小等)面粮,并找出最好的設置,然后再更大的數(shù)據(jù)集上訓練 BERT继低。
2.1 更大的數(shù)據(jù)集
原來的 BERT 只使用了 16G 的數(shù)據(jù)集熬苍,而 RoBERTa 在更大的數(shù)據(jù)集上訓練 BERT,使用了 160G 的語料:
- BOOKCORPUS,16G柴底,原來 BERT 的訓練數(shù)據(jù)集
- CC-NEWS婿脸,76G
- OPENWEBTEXT,38G
- STORIES柄驻,31G
2.2 去掉 NSP Loss
BERT 在訓練的過程中采用了 NSP Loss狐树,原本用意是為了讓模型能夠更好地捕捉到文本的語義,給定兩段語句 X = [x1, x2, ..., xN] 和 Y = [y1, y2, ...., yM]鸿脓,BERT 中的 NSP 任務需要預測 Y 是不是 出現(xiàn)在 X 的后面褪迟。
但是 NSP Loss 受到不少文章的質(zhì)疑 ,例如 XLNet答憔,RoBERTa 采用了一個實驗驗證 NSP Loss 的實用性味赃。實驗中采用了四種組合:
Segment-Pair + NSP:這個是原來 BERT 的訓練方法,使用 NSP Loss虐拓,輸入的兩段文字 X 和 Y 可以包含多個句子心俗,但是 X + Y 的長度要小于 512。
Sentence-Pair + NSP:與上一個基本類似蓉驹,也使用 NSP Loss城榛,但是輸入的兩段文字 X 和 Y 都分別是一個句子,因此一個輸入包含的 token 通常比 Segment-Pair 少态兴,所以要增大 batch狠持,使總的 token 數(shù)量和 Sentence-Pair 差不多。
Full-Sentences:不使用 NSP瞻润,直接從一個或者多個文檔中采樣多個句子喘垂,直到總長度到達 512。當采樣到一個文檔末尾時绍撞,會在序列中添加一個文檔分隔符 token正勒,然后再從下一個文檔采樣。
Doc-Sentences:與 Full-Sentences 類似傻铣,不使用 NSP章贞,但是只能從一個文檔中采樣句子,所以輸入的長度可能會少于 512非洲。Doc-Sentences 也需要動態(tài)調(diào)整 batch 大小鸭限,使其包含的 token 數(shù)量和 Full-Sentences 差不多。
上圖是實驗結果两踏,最上面的兩行是使用 NSP 的败京,可以看到使用 Segment-Pair (多個句子) 要好于 Sentence-Pair (單個句子),實驗結果顯示使用單個句子會使 BERT 在下游任務的性能下降缆瓣,主要原因可能是使用單個句子導致模型不能很好地學習長期的依賴關系喧枷。
中間兩行是不使用 NSP Loss 的結果,可以看到兩種方式都是比使用 NSP 效果要好的,這說明了 NSP Loss 實際上沒什么作用隧甚,因此在 RoBERTa 中丟棄了 NSP Loss车荔。
2.3 動態(tài) Mask
原始的 BERT 在訓練之前就把數(shù)據(jù) Mask 了,然后在整個訓練過程中都是保持數(shù)據(jù)不變的戚扳,稱為 Static Mask忧便。即同一個句子在整個訓練過程中,Mask 掉的單詞都是一樣的帽借。
RoBERTa 使用了一種 Dynamic Mask 的策略珠增,將整個數(shù)據(jù)集復制 10 次,然后在 10 個數(shù)據(jù)集上都 Mask 一次砍艾,也就是每一個句子都會有 10 種 Mask 結果蒂教。使用 10 個數(shù)據(jù)集訓練 BERT。
下圖是實驗結果脆荷,可以看到使用 Dynamic Mask 的結果會比原來的 Static Mask 稍微好一點凝垛,所以 RoBERTa 也使用了 Dynamic Mask。
2.4 更大的 batch
之前的一些關于神經(jīng)網(wǎng)絡翻譯的研究顯示了使用一個大的 batch 并相應地增大學習率蜓谋,可以加速優(yōu)化并且提升性能梦皮。RoBERTa 也對 batch 大小進行了實驗,原始的 BERT 使用的 batch = 256桃焕,訓練步數(shù)為 1M剑肯,這與 batch = 2K,訓練步數(shù) 125K 的計算量是一樣的观堂,與 batch = 8K 和訓練步數(shù)為 31K 也是一樣的让网。下圖是使用不同 batch 的實驗結果,不同 batch 學習率是不同的型将,可以看到使用 batch = 2K 時的效果最好寂祥。
3. ALBERT
BERT 的預訓練模型參數(shù)量很多,訓練時候的時間也比較久七兜。ALBERT 是一個對 BERT 進行壓縮后的模型,降低了 BERT 的參數(shù)量福扬,減少了訓練所需的時間腕铸。
注意 ALBERT 只是減少 BERT 的參數(shù)量,而不減少其計算量铛碑。ALBERT 能減少訓練時間狠裹,這是因為減少了參數(shù)之后可以降低分布式訓練時候的通訊量;ALBERT 不能減少 inference 的時間汽烦,因為 inference 的時候經(jīng)過的 Transformer 計算量和 BERT 還是一樣的涛菠。
下面介紹 ALBERT 的一些優(yōu)化方法。
3.1 Factorized embedding parameterization
這是對 Embedding 進行分解,從而減少參數(shù)俗冻。在 BERT 中礁叔,Embedding 的維度和 Transformer 隱藏層維度是一樣的,都是 H迄薄。假設詞庫的大小為 V琅关,則單詞的 Embedding 矩陣參數(shù)量就有 VH,如果詞庫很大讥蔽,則參數(shù)量會很多涣易。
因此,ALBERT 使用了一種基于 Factorized 的方法冶伞,不是直接把單詞的 one-hot 矩陣映射到 H 維的向量新症,而是先映射到一個低維空間 (E 維),再映射到 H 維的空間响禽,這個過程類似于做了一次矩陣分解账劲。
3.2 Cross-layer parameter sharing
這個是參數(shù)共享機制,即所有 Transformer 層共享一套參數(shù)金抡,Transformer 包括 Multi-Head Attention 的參數(shù)和 Feed-Forward 的參數(shù)瀑焦。針對不同部分的參數(shù),ALBERT 采用了四種方式實驗梗肝。
all-shared:共享所有的 Transformer 參數(shù)榛瓮。
shared-attention:只共享 Transformer 中 Multi-Head Attention 的參數(shù)。
shared-FFN:只共享 Transformer 中 Feed-Forward 的參數(shù)巫击。
not-shared:不共享參數(shù)禀晓。
上圖顯示了不同共享方式模型的參數(shù)量,可以看到共享所有參數(shù)之后的模型要遠遠小于不共享參數(shù)的模型坝锰。當 E = 768 時粹懒,not-shared 的參數(shù)量其實就是 BERT-base 的參數(shù)量,等于 108M顷级,而共享所有參數(shù)后凫乖,模型的參數(shù)量變?yōu)?31M。
通過共享參數(shù)可以有效地減少模型的參數(shù)量弓颈,另外共享參數(shù)還可以幫助模型穩(wěn)定網(wǎng)絡中的參數(shù)帽芽。作者對比了 ALBERT 和 BERT 每一層 Transformer 的輸入和輸出的 L2 距離,發(fā)現(xiàn) ALBERT 的效果更加平滑翔冀,如下圖所示导街。
3.3 使用 SOP 替換 NSP
如 RoBERTa 結果顯示的,NSP Loss 對于模型并沒有什么用處纤子,因此 ALBERT 也對 NSP 進行了一些思考搬瑰。
ALBERT 認為 BERT 中使用的 NSP 任務過于簡單了款票,因為 NSP 的反例是隨機采樣得到的,這些反例的句子通常屬于不同的主題泽论,例如前面的句子是來自體育新聞艾少,而后面的句子來自于娛樂新聞。因此 BERT 在進行 NSP 任務時佩厚,通常是不需要真正學習句子之間的語義以及順序的姆钉,只需要判斷它們的主題類型。
ALBERT 將 NSP 替換成了 SOP (sentence order prediction)抄瓦,預測兩個句子是否被交換了順序潮瓶。即輸入的兩個句子是來自同一文檔的連續(xù)句子,并隨機對這兩個句子的順序進行調(diào)換钙姊,讓模型預測句子是否被調(diào)換過毯辅。這樣可以讓模型更好地學習句子語義信息和相互關系。
4. 總結
RoBERTa 更像是一個經(jīng)過仔細調(diào)參后得到的 BERT 模型煞额,并且使用了更大的數(shù)據(jù)集進行訓練思恐。
ALBERT 對 BERT 的參數(shù)量進行了壓縮,并且能夠減少分布式訓練的開銷膊毁。但是 ALBERT 并不能減少需要的計算量胀莹,因此模型在 inference 時的速度沒有提升。
參考文獻
RoBERTa: A Robustly Optimized BERT Pretraining Approach
ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS