本文主要介紹了RoBERTa和ALBERT兩個改進的BERT模型。關於BERT模型,請參考之前的文章“徹底了解Google BERT模型”。首先,從總體上看羅伯塔和艾伯特的壹些特征。
羅伯塔:
艾伯特:
RoBERTa主要測試了BERT中的壹些訓練設置(例如NSP損失是否有意義、批量大小等)。),並找到了最佳設置,然後在更大的數據集上訓練BERT。
最初的BERT只使用了16G的數據集,而RoBERTa在更大的數據集上訓練BERT並使用了160G的語料庫:
BERT在訓練過程中使用了NSP損失,這原本是為了使模型更好地捕捉文本的語義。給出兩個句子X =【X 1,x2,...,xN】和Y =【Y 1,y2,...,ym】,BERT中的NSP任務需要預測Y是否出現在x之後
然而,NSP損失受到了許多文章的質疑,如XLNet,RoBERTa用壹個實驗來驗證NSP損失的實用性。實驗中使用了四種組合:
分段對+NSP:這是伯特最初的訓練方法。使用NSP損失,兩段文本X和Y可以包含多個句子,但是X+Y的長度小於512。
句子對+NSP:基本上與前壹個相似,也使用NSP損失,但兩個輸入單詞X和Y都是壹個句子,因此輸入通常比片段對包含更少的標記,因此應增加batch以使標記總數與情感對的數量相似。
完整句子:不使用NSP直接從壹個或多個文檔中抽取多個句子,直到總長度達到512。當采樣到文檔末尾時,文檔分隔符標記被添加到序列中,然後從下壹個文檔中獲取樣本。
文檔句子:與完整句子類似,不使用NSP,但只能從壹個文檔中抽取句子,因此輸入長度可能小於512。Doc-Sentences還需要動態調整batch的大小,使其包含與完整句子大約相同數量的標記。
上圖顯示了實驗結果,上面兩行使用了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的參數和訓練時間。
註意,ALBERT只是減少了BERT的參數數量,而沒有減少其計算量。ALBERT可以減少訓練時間,因為減少參數可以減少分布式訓練時的通信量;阿爾伯特不能減少引入的時間,因為引入時的變壓器計算量仍然與伯特相同。
以下是阿爾伯特的壹些優化方法。
這是對嵌入的分解,從而減少了參數。在BERT中,嵌入的維數與Transformer隱藏層的維數相同,都是h .假設詞庫的大小為V,則單詞的嵌入矩陣的參數將具有VH,如果詞庫很大,則參數將很多。
因此,ALBERT使用了壹種因式分解的方法,該方法不直接將單詞的one-hot矩陣映射到H維的向量,而是先將其映射到壹個低維空間(E維),然後再映射到H維的空間。這個過程類似於矩陣分解。
這是壹個參數* * *共享機制,即所有Transformer層* * *共享壹組參數,Transformer包括多頭關註的參數和前饋的參數。根據不同部位的參數,艾伯特采用了四種方式進行實驗。
全部共享:*** *享有所有變壓器參數。
共享註意力:只有* *可以享受Transformer中的多頭註意力參數。
共享-FFN:只有* *可以享受變壓器中的前饋參數。
非共享:不* * *享受參數。
上圖顯示了不同* * *模式的模型參數。可以看出,具有* * *所有參數的模型比沒有* * *參數的模型小得多。當E = 768時,未共享的參數數量實際上是BERT-base的參數數量,等於108M,而* * *享受所有參數後,模型的參數數量變為31M。
通過* * *共享參數,可以有效地減少模型的參數,此外,* * *共享參數還可以幫助模型穩定網絡中的參數。作者比較了ALBERT和BERT每層變壓器輸入和輸出之間的L2距離,發現ALBERT的效果更平滑,如下圖所示。
正如羅伯塔的結果所示,NSP損失對模型沒有用處,因此艾伯特也考慮了NSP。
阿爾伯特認為BERT中使用的NSP任務過於簡單,因為NSP的反例是通過隨機抽樣獲得的,這些反例的句子通常屬於不同的主題,例如,前面的句子來自體育新聞,後面的句子來自娛樂新聞。因此,BERT在執行NSP任務時通常不需要學習句子之間的語義和順序,只需要判斷它們的主題類型。
艾伯特用SOP(情感順序預測)代替NSP來預測兩個句子是否交換了。也就是說,輸入的兩個句子是來自同壹文檔的連續句子,並且這兩個句子的順序是隨機切換的,因此模型可以預測句子是否被切換。這樣,模型可以更好地學習句子的語義信息和關系。
經過仔細的參數調整後,RoBERTa更像壹個BERT模型,並使用更大的數據集進行訓練。
ALBERT壓縮了BERT的參數,可以減少分布式訓練的開銷。然而,阿爾伯特無法減少所需的計算量,因此模型在推斷時的速度並沒有提高。
RoBERTa:壹種魯棒優化的BERT預訓練方法
ALBERT:用於自我監督語言表達學習的LITE BERT