對 【BERT- Pre-training of Deep Bidirectional Transformers for Language Understanding】 的理解

0、引言

BERTBidirectional 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、個人總結

  1. 2019年google祭出了大殺器BERT,其性能不說了,關鍵的無監督場景和fine-tune有助於各種下游落地。
  2. 參數量感覺可以大幅優化降低,而訓練過程也有提升空間。

4、參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章