1.BERT模型
BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder,因為decoder是不能獲要預測的信息的。模型的主要創新點都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的representation。
1.1 模型結構
由於模型的構成元素Transformer已經解析過,就不多說了,BERT模型的結構如下圖最左:
對比OpenAI GPT(Generative pre-trained transformer),BERT是雙向的Transformer block連接;就像單向rnn和雙向rnn的區別,直覺上來講效果會好一些。
對比ELMo,雖然都是“雙向”,但目標函數其實是不同的。ELMo是分別以 和
作為目標函數,獨立訓練處兩個representation然后拼接,而BERT則是以
作為目標函數訓練LM。
1.2 Embedding
這里的Embedding由三種Embedding求和而成:
其中:
- Token Embeddings是詞向量,第一個單詞是CLS標志,可以用於之后的分類任務
- Segment Embeddings用來區別兩種句子,因為預訓練不光做LM還要做以兩個句子為輸入的分類任務
- Position Embeddings和之前文章中的Transformer不一樣,不是三角函數而是學習出來的
總結:
1. BERT的特征提取,是在捕捉詞的(前后)位置關系。bidirectional決定了能獲得前后的關系,position embedding決定了能學到更長的順序關系。
2.訓練,分為pre-train和fine-tune。pre-train中用到了MLM, Masked LM.
3. trick: MLM. 在訓練過程中作者隨機mask 15%的token,而不是把像cbow一樣把每個詞都預測一遍。最終的損失函數只計算被mask掉那個token。
4. 缺點: (1)[MASK]標記在實際預測中不會出現,訓練時用過多[MASK]影響模型表現
(2)每個batch只有15%的token被預測,所以BERT收斂得比left-to-right模型要慢(它們會預測每個token)
https://zhuanlan.zhihu.com/p/46652512