天天看點

預訓練語言模型 | (5) StructBert和RoBerta

原文連結

目錄

1. StructBert

2. RoBerta

3. Bert系列預訓練語言模型總結

1. StructBert

structbert的創新點主要在loss上,除了MLM的loss外,還有一個重構token順序的loss和一個判斷2個segment關系的loss。重構token順序的loss是以一定的機率挑選segment中的token三元組,然後随機打亂順序,最後經過encoder之後能夠糾正被打亂順序的token三元組的順序。判斷2個segment關系的loss是1/3的機率是segment B是segment A的下一句,有1/3的機率是segment A是segment B的下一句,有1/3的機率是segment A和segment B來自2篇不同的文本,通過“[CLS]”對應的最後一層的編碼向量(+全連接配接層)預測樣本屬于這3種的哪一種。

2. RoBerta

在xlnet使用126G的資料登頂GLUE之後不久,roberta使用160G的資料又打敗了xlnet。roberta的創新點主要有4點:第1點是動态mask,之前bert使用的是靜态mask,就是資料預處理的時候完成mask操作,之後訓練的時候同一個樣本都是相同的mask結果,動态mask就是在訓練的時候每輸入一個樣本都要重新mask,動态mask相比靜态mask有更多不同mask結果的資料用于訓練,效果很好。第2點是樣本的構造方式,roberta放棄了NSP的loss,修改了樣本的構造方式,将輸入2個segment修改為從一個文本中連續sample句子直到塞滿512的長度。當到達文本的末尾且未塞滿512的長度時,先增加一個“[SEP]”,再從另一個文本接着sample,直到塞滿512的長度。第3點是增大了batch size,在訓練相同資料量的前提之下,增大batch size能夠提高模型的推理能力。第4點是使用了subword的分詞方法,類比于中文的字,相比于full word的分詞方法,subword的分詞方法使得詞表的大小從30k變成了50k,雖然實驗效果上subword的分詞方法比full word差,但是作者堅信subword具備了理論優越性,今後肯定會比full word好。

3. Bert系列預訓練語言模型總結

nlp和cv的不同點在于nlp是認識學習,而cv是感覺學習,nlp在cv的基礎之上多了一個符号映射的過程,正因如此,nlp領域發展得比cv慢很多,cv領域有很多比較成功的創業公司,有很多能夠達到商用程度的子領域,而nlp領域就比較少。不過nlp領域在17年的transformer釋出之後開始進入快速疊代的時期,bert的發表使得nlp領域的benchmark提高了一大截,産生了不少可以達到商用程度的子領域。到了19年,nlp領域的發展可以說是越來越快了,前幾天谷歌又發表了一篇T5,又把albert打敗了。T5的論文據說有50頁,是nlp預訓練模型的一個綜述,值得花時間一看。

至此,前幾篇部落格介紹的都是Bert(Auto-Encoder)系列預訓練語言模型(包括bert<structbert<roberta<albert).今後有時間還會整理一下XLNet(結合Auto-Encoder和Auto-Regressive)系列預訓練語言模型以及GPT(Auto-Regressive)系列預訓練語言模型。

繼續閱讀