當前位置:成語大全網 - 漢語詞典 - 羅伯塔和艾伯特

羅伯塔和艾伯特

BERT模型是2018提出的,在很多自然語言處理任務中得到了改進。因此,2019年圍繞BERT開展了大量工作,其中出現了RoBERTa和ALBERT兩個改進的BERT模型。RoBERTa在更大的數據集和最佳參數中訓練BERT,再次提高了BERT的性能。ALBERT主要是對BERT進行壓縮,通過* * *共享各層參數和嵌入分解來降低BERT的參數。

本文主要介紹了兩個改進的BERT模型,RoBERTa和ALBERT。關於BERT模型,請參考之前的文章《透徹理解Google BERT模型》。首先,從總體上看壹下羅伯塔和艾伯特的壹些特點。

羅伯塔:

艾伯特:

RoBERTa主要測試了BERT中的壹些訓練設置(比如NSP損失是否有意義,批量大小等。),並找到了最佳設置,然後在更大的數據集上訓練BERT。

最初的BERT只使用了16G的數據集,而RoBERTa在更大的數據集上訓練BERT,使用了160G的語料庫:

BERT在訓練過程中使用了NSP損失,這原本是為了讓模型更好地捕捉文本的語義。給出兩個句子X = [x1,x2,...,xN]和Y = [y1,y2,...,ym],BERT中的NSP任務需要預測Y是否出現在x之後

然而,NSP損失受到了許多文章的質疑,如XLNet,羅伯塔用壹個實驗來驗證NSP損失的實用性。實驗中使用了四種組合:

分段配對+NSP:這是伯特最初的訓練方法。使用NSP損失,兩段文本X和Y可以包含多個句子,但X+Y的長度小於512。

句子對+NSP:基本上和上壹個類似,也使用NSP損失,但是兩個輸入單詞X和Y都是壹個句子,所以壹個輸入通常比片段對包含更少的標記,所以要增加batch,使標記總數和情感對相似。

完整句子:直接從壹個或多個沒有NSP的文檔中抽取多個句子,直到總長度達到512。當采樣到壹個文檔的末尾時,壹個文檔分隔符標記被添加到序列中,然後從下壹個文檔中抽取樣本。

Doc-Sentences:類似於全句,不使用NSP,但只能從壹個文檔中抽取句子,所以輸入長度可能小於512。Doc-Sentences還需要動態調整批處理的大小,使其包含與完整句子大約相同數量的標記。

上圖是實驗結果,上面兩行用的是NSP。可以看出,使用段對(多句)比使用句對(單句)好。實驗結果表明,使用單個句子會降低BERT在下遊任務中的性能,主要原因可能是使用單個句子導致模型不能很好地學習長期依賴關系。

中間兩條線是不使用NSP損耗的結果。可以看出,這兩種方法都優於使用NSP,這表明NSP損失實際上沒有影響,因此NSP損失在羅伯塔被丟棄。

原來的BERT在訓練前對數據進行屏蔽,然後在整個訓練過程中保持數據不變,稱為靜態屏蔽。也就是在同壹句話的整個訓練過程中,Mask掉的字都是壹樣的。

RoBERTa采用動態屏蔽策略,將整個數據集復制10次,然後在10個數據集上屏蔽壹次,即每壹句話會有10種屏蔽結果。使用10數據集訓練BERT。

下圖顯示了實驗結果。可以看出,使用動態掩碼的結果比原來的靜態掩碼略好,所以RoBERTa也使用了動態掩碼。

先前關於神經網絡翻譯的壹些研究表明,使用大批量並相應地增加學習速率可以加速優化並提高性能。羅伯塔還試驗了批量大小。原BERT用batch = 256,訓練步數為1M,與batch = 2K相同,訓練步數為125K,batch = 8K,訓練步數為31K。下圖是使用不同批次的實驗結果,不同批次的學習率不同。可以看出,使用batch = 2K時效果最佳。

BERT的預訓練模型參數很多,訓練時間長。ALBERT是BERT的壓縮模型,減少了BERT的參數和訓練時間。

註意阿爾伯特只是減少了BERT的參數數量,並沒有減少其計算量。艾伯特可以減少訓練時間,因為減少參數可以減少分布式訓練時的通信量;艾伯特不能減少入門的時間,因為入門時的變壓器計算量還是和伯特壹樣的。

下面是艾伯特的壹些優化方法。

這是對嵌入的分解,從而減少了參數。在BERT中,嵌入的維數和Transformer隱層的維數壹樣,都是h,假設詞庫的大小是V,那麽單詞的嵌入矩陣的參數就會有VH,如果詞庫很大,參數就會很多。

所以艾伯特用了壹種因式分解的方法,不直接把單詞的壹熱矩陣映射到H維的向量,而是先映射到壹個低維空間(E維),再映射到H維的空間。這個過程類似於矩陣分解。

這是壹個參數* * *共享機制,即所有變壓器層* * *共享壹組參數,變壓器包括多頭關註的參數和前饋的參數。根據不同部分的參數,艾伯特用了四種方法進行實驗。

全共享:*** *享有所有變壓器參數。

共享註意力:只有* *可以享受《變形金剛》中的多頭註意力參數。

共享-FFN:只有* *才能享受《變形金剛》中前饋的參數。

不共享:不* * *享受參數。

上圖為不同* * *模式的機型參數。可以看出* * *所有參數的模型比沒有* * *參數的模型小很多。當E = 768時,未共享的參數量實際上是BERT-base的參數量,等於108M,而* * *享受所有參數後,模型的參數量就變成了31M。

通過* * *共享參數,可以有效的降低模型的參數,另外,* * *共享參數還可以幫助模型穩定網絡中的參數。作者對比了艾伯特和伯特的每層變壓器輸入輸出的L2距離,發現艾伯特的效果更平滑,如下圖所示。

正如羅伯塔的結果所顯示的,NSP損失對模型沒有用處,所以艾伯特也想到了NSP。

艾伯特認為伯特使用的NSP任務過於簡單,因為NSP的反例是通過隨機抽樣獲得的,而這些反例的句子通常屬於不同的話題,例如,前面的句子來自體育新聞,下面的句子來自娛樂新聞。因此,BERT在執行NSP任務時通常並不真的需要學習句子之間的語義和順序,而只需要判斷它們的題目類型。

艾伯特用SOP(情緒順序預測)代替NSP來預測兩個句子是否互換了。也就是說,兩個輸入句子是來自同壹文檔的連續句子,這兩個句子的順序是隨機切換的,因此模型可以預測句子是否被切換。這樣,模型可以更好地學習句子的語義信息和關系。

RoBERTa更像是經過精心參數調優的BERT模型,使用更大的數據集進行訓練。

ALBERT壓縮了BERT的參數,可以減少分布式訓練的開銷。但是,艾伯特無法減少所需的計算量,所以模型在推理中的速度並沒有提高。

RoBERTa:壹種魯棒優化的BERT預訓練方法

ALBERT:壹個用於語言表達自我監督學習的LITE BERT