BERT簡要介紹

BERT(Bidirectional Encoder Representation from Transformers) 網絡架構由 Jacob Devlin 等人提出用於預訓練,學習在給定上下文下給出詞的 Embedding 表示。BERT 採用了 Transformer 架構的編碼器部分用於學習詞在給定上下文下詞的 Embedding 表示。考慮到語言模型任務爲從左往右或從右往左預測下一個詞的自迴歸任務,因此若採用該模式每個詞無法依賴於當前上下文下後續詞進行詞向量表示。爲了解決該問題,BERT 提出了兩類預訓練任務:

  • 掩碼語言模型任務
  • 下一句預測任務

下面我們分別來看這兩類任務。<!—more—>

1.掩碼語言模型任務

若採用 self-attention 並直接用於語言模型任務,則每次預測下一個詞時由於 self-attention
機制會將下一個詞的信息引入到當前詞的表徵中,當使用該詞的表徵用於預測下一個詞
時,相當於將標註引入到了特徵中,因此出現學習失效問題。爲了解決該問題,BERT 提
出了如下解決方案:
從待預測序列中隨機選擇 15% 的位置用於預測任務

  • 80% 的概率下將選取出的 15% 的位置對應的詞替換爲 [MASK]
  • 10% 的概率下將選取出的 15% 的位置對應的詞替換爲隨機詞
  • 10% 的情況下不對選取出的 15% 的位置對應的詞進行詞替換

引入 1.5% 的隨機詞,相當於對數據增加部分噪音,提升模型的魯棒性。1.5% 的情況下保留原詞是因爲 fine-tuning 階段並沒有 [MASK] 詞。

2.編碼器自注意力

下一句預測任務
考慮到重要的下游任務譬如問答 (Question Answering) 任務,自然語言推理 (Natural Language Inference) 任務依賴於對兩個句子的關係的理解,該信息在語言模型中沒有直接體
現。因此 BERT 中同時設計了下一句預測任務,該任務的構建如下:

  • 每個預訓練序列由句子 A 和句子 B 構成
  • 50% 的概率下句子 B 爲句子 A 的下一個句子
  • 50% 的概率下句子 B 不是句子 A 的下一個句子

實際構建預訓練任務時是是首選設計好" 下一句預測任務",生成該任務的標註信息,在此基礎上構建" 掩碼語言模型任務",生成掩碼語言模型的標註信息。考慮到預訓練涉及兩個句子,BERT 採用如下的輸入信息表徵方案:

BERT_input_representation)

預訓練階段損失函數通過線性加權方法,同時進行上述兩類任務訓練。預訓練階段結束後將學習到每個詞在特定上下文中 BERT 的表徵信息,該表徵信息即可用於下游的任務,如下是 BERT 表徵用於不同類型的下游任務的 fine-tuning 方案:
BERT_task.png

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