BERT模型


BERT模型是什么

BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder,因為decoder是不能獲要預測的信息的。模型的主要創新點都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的representation。

1.1 模型結構

由於模型的構成元素Transformer已經解析過,就不多說了,BERT模型的結構如下圖最左:

img

對比OpenAI GPT(Generative pre-trained transformer),BERT是雙向的Transformer block連接;就像單向rnn和雙向rnn的區別,直覺上來講效果會好一些。

對比ELMo,雖然都是“雙向”,但目標函數其實是不同的。ELMo是分別以[公式][公式] 作為目標函數,獨立訓練處兩個representation然后拼接,而BERT則是以 [公式] 作為目標函數訓練LM。

1.2 Embedding

這里的Embedding由三種Embedding求和而成:

img

其中:

  • Token Embeddings是詞向量,第一個單詞是CLS標志,可以用於之后的分類任務
  • Segment Embeddings用來區別兩種句子,因為預訓練不光做LM還要做以兩個句子為輸入的分類任務
  • Position Embeddings和之前文章中的Transformer不一樣,不是三角函數而是學習出來的

1.3 Pre-training Task 1#: Masked LM

第一步預訓練的目標就是做語言模型,從上文模型結構中看到了這個模型的不同,即bidirectional。關於為什么要如此的bidirectional,作者在reddit上做了解釋,意思就是如果使用預訓練模型處理其他任務,那人們想要的肯定不止某個詞左邊的信息,而是左右兩邊的信息。而考慮到這點的模型ELMo只是將left-to-right和right-to-left分別訓練拼接起來。直覺上來講我們其實想要一個deeply bidirectional的模型,但是普通的LM又無法做到,因為在訓練時可能會“穿越”(關於這點我不是很認同,之后會發文章講一下如何做bidirectional LM)。所以作者用了一個加mask的trick。

在訓練過程中作者隨機mask 15%的token,而不是把像cbow一樣把每個詞都預測一遍。最終的損失函數只計算被mask掉那個token。

Mask如何做也是有技巧的,如果一直用標記[MASK]代替(在實際預測時是碰不到這個標記的)會影響模型,所以隨機mask的時候10%的單詞會被替代成其他單詞,10%的單詞不替換,剩下80%才被替換為[MASK]。具體為什么這么分配,作者沒有說。。。要注意的是Masked LM預訓練階段模型是不知道真正被mask的是哪個詞,所以模型每個詞都要關注。

1.4 Pre-training Task 2#: Next Sentence Prediction

因為涉及到QA和NLI之類的任務,增加了第二個預訓練任務,目的是讓模型理解兩個句子之間的聯系。訓練的輸入是句子A和B,B有一半的幾率是A的下一句,輸入這兩個句子,模型預測B是不是A的下一句。預訓練的時候可以達到97-98%的准確度。

注意:作者特意說了語料的選取很關鍵,要選用document-level的而不是sentence-level的,這樣可以具備抽象連續長序列特征的能力。

1.5 Fine-tunning

分類:對於sequence-level的分類任務,BERT直接取第一個[CLS]token的final hidden state [公式] ,加一層權重 [公式] 后softmax預測label proba: [公式]

其他預測任務需要進行一些調整,如圖:

img

可以調整的參數和取值范圍有:

  • Batch size: 16, 32
  • Learning rate (Adam): 5e-5, 3e-5, 2e-5
  • Number of epochs: 3, 4

因為大部分參數都和預訓練時一樣,精調會快一些,所以作者推薦多試一些參數。

2. 優缺點

2.1 優點

BERT是截至2018年10月的最新state of the art模型,通過預訓練和精調橫掃了11項NLP任務,這首先就是最大的優點了。而且它還用的是Transformer,也就是相對rnn更加高效、能捕捉更長距離的依賴。對比起之前的預訓練模型,它捕捉到的是真正意義上的bidirectional context信息。

2.2 缺點

作者在文中主要提到的就是MLM預訓練時的mask問題:

  1. [MASK]標記在實際預測中不會出現,訓練時用過多[MASK]影響模型表現
  2. 每個batch只有15%的token被預測,所以BERT收斂得比left-to-right模型要慢(它們會預測每個token)

3. 總結

一遍讀下來,感覺用到的都是現有的東西,可沒想到效果會這么好,而別人又沒想到。不過文章中沒有具體解釋的很多點可以看出這樣出色的結果也是通過不斷地實驗得出的,而且訓練的數據也比差不多結構的OpenAI GPT多,所以數據、模型結構,都是不可或缺的東西。

以上。
轉載自:Google BERT詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM