0、引言
BERT(Bidirectional Encoder Representations from Transformers)自從谷歌提出就一直大熱。首先,它在自然語言處理(NLP)的11個任務中均有較大程度性能提升;其次,BERT在無監督場景下結合預訓練能夠最大化地利用文本數據,同時對不同場景的下游任務均有提升和幫助。個人覺得BERT的設計進一步利用了語言的特性,其在NLP領域的影響絕對算是個里程碑了。
1、BERT介紹
1.1 思想及由來
BERT的網絡結構使用了雙向Transformer的堆疊(Transformer詳解見文末參考資料),Encoder和Decoder分別12層(但也要看是base還是large版)。其思想出於ELMo和GPT(Generative Pre-trained Transformer,出自OpenAI)但同時又高於二者。ELMo採用了雙向LSTM來訓練詞Embedding,雖然使用了雙向LSTM,但其實是使用2個單向LSTM對學到的句子語義信息做拼接,和BERT完全雙向不同,對句子間不同詞的語義依賴關係也不如BERT捕捉的充分。 GPT只有單向,其假設句子間語義依賴關係只有從左到右,而沒有從右到左,該假設在實際中並不完全滿足。上述三種模型架構圖如下圖,BERT、GPT、ELMo分別從左到右:
1.2 BERT特點
BERT加入了Masked Language Model(MLM) 和 Next Sentences Prediction(NSP),使得模型能夠在無監督的場景下學習到句子間特徵和語義特徵。個人理解LM(語言模型)能學習到一個句子的語義特徵,而使用MLM更能有效促使模型學到句子更好的語義表示。 在無監督學習場景訓練,能最大化的使用訓練語料。而Pre-train和Fine-tune能夠方便地將已訓練好的BERT模型遷移到不同的應用場景,在工業界大有益處。
-
(1) Masked LM
原文表示,在模型預訓練階段使用Masked LM來訓練BERT會有更好的效果。具體做法是對文中所有WordPiece token(不包括特殊標記字符)隨機抽樣15%並進行mask遮掩,並對被Masked的詞依概率進行如下操作: -
80% 表示爲 mask
-
10% 替換爲任意其他詞
-
10% 不做替換
文中也沒有說爲什麼以這樣的概率做上述操作,只是提到不能對所有詞進行mask,否則在fine-tune時,會有部分詞從來沒見過而影響效果,爲了緩解這一情況,採用了對被masked詞進行上述概率來做不同處理。
使用了Mask操作後,用基於mask的語言模型的loss來訓練。 -
(2)Next Sentences Prediction
在智能問答(QA)和自然預研推理(NLI)任務中,句子間的關係顯得尤爲重要。在Transformer或GPT中,沒有對句子間的關係進行學習,BERT中提出的NSP來涵蓋這一空白,具體做法是:將句子A與B合併爲一句來進行訓練,使用50%的概率來選擇A句後緊接着的句子,其餘50%用隨機一個句子,在此構建針對該2句是否是連接關係的二分類模型。 -
對於待訓練句子,使用詞embedding、segment embedding、position embedding相加來訓練,如下圖所示:
-
(3)不同下游任務的fine-tune
BERT還有一個優勢就是可以在不同的下游任務中進行微調,利於工業界的快速落地。不論是在pre-train還是fine-tune的訓練階段,都會開啓MLM訓練,而在驗證測試階段關閉MLM。但基於不同的下游任務在fine-tune時有些許不同,具體如下圖所示:
2、實驗結果
各種實驗結果表示BERT的強力,這裏貼出部分結果
2.1 GLUE(General Language Understanding Evaluation)
2.2 SQuAD 1.0 2.0
3、個人總結
- 2019年google祭出了大殺器BERT,其性能不說了,關鍵的無監督場景和fine-tune有助於各種下游落地。
- 參數量感覺可以大幅優化降低,而訓練過程也有提升空間。
4、參考資料
- [1] The Illustrated Transformer
- [2] The Annotated Transformer
- [3] GLUE數據集介紹
- [4] GLUE榜單
- [5] WordPiece原理及BPE算法