乾貨丨Bert演算法:語言模型-BERT詳細介紹

今天,要跟大家分享的內容是,

解析著名的語言模型-BERT

,全文將分4個部分由淺入深的依次講解,NLP愛好者們不要錯過哦!

01 Bert簡介

BERT是2018年10月

由Google AI研究院提出的一種預訓練模型

。BERT的全稱是Bidirectional Encoder Representation from Transformers。BERT在機器閱讀理解頂級水平測試SQuAD1。1中表現出驚人的成績:

全部兩個衡量指標上全面超越人類,並且在11種不同NLP測試中創出SOTA表現

,包括將GLUE基準推高至80。4% (絕對改進7。6%),MultiNLI準確度達到86。7% (絕對改進5。6%),成為NLP發展史上的里程碑式的模型成就。

02 關於Bert的模型架構

總體架構:

如下圖所示, 最左邊的就是BERT的架構圖,可以很清楚的看到BERT採用了Transformer Encoder block進行連線, 因為是一個典型的雙向編碼模型。

乾貨丨Bert演算法:語言模型-BERT詳細介紹

乾貨丨Bert演算法:語言模型-BERT詳細介紹

3.1 關於Bert訓練過程中的關鍵點

1)四大關鍵詞:

Pre-trained, Deep, Bidirectional Transformer, Language Understanding

a。 Pre-trained: 首先明確這是個預訓練的語言模型,未來所有的開發者可以直接繼承!

整個Bert模型最大的兩個亮點都集中在Pre-trained的任務部分。

b。 Deep

Bert_BASE:Layer = 12, Hidden = 768, Head = 12, Total Parameters = 110M

Bert_LARGE:Layer = 24, Hidden = 1024, Head = 16, Total Parameters = 340M

對比於Transformer: Layer = 6, Hidden = 2048, Head = 8,是個淺而寬,說明Bert這樣深而窄的模型效果更好(和CV領域的總體結論基本一致)。

C。 Bidirectional Transformer: Bert的個創新點,它是個雙向的Transformer網路。

Bert直接引用了Transformer架構中的Encoder模組,並捨棄了Decoder模組, 這樣便自動擁有了雙向編碼能力和強大的特徵提取能力。

D。 Language Understanding: 更加側重語言的理解,而不僅僅是生成(Language Generation)

3.2 Bert的語言輸入表示包含了3個組成部分: (見上面第二張圖)

詞嵌入張量: word embeddings

語句分塊張量: segmentation embeddings

位置編碼張量: position embeddings

最終的embedding向量是將上述的3個向量直接做加和的結果。

3.3: Bert的預訓練中引入兩大核心任務 (這兩個任務也是Bert原始論文的兩個最大的創新點)

a 引入Masked LM(帶mask的語言模型訓練)

a。1 在原始訓練文字中,隨機的抽取15%的token作為即將參與mask的物件。

a。2 在這些被選中的token中,資料生成器並不是把他們全部變成[MASK],而是有下列3個選擇:

a。2。1 在80%的機率下,用[MASK]標記替換該token, 比如my dog is hairy -> my dog is [MASK]

a。2。2 在10%的機率下, 個隨機的單詞替換該token, 比如my dog is hairy -> my dog is apple

a。2。3 在10%的機率下, 保持該token變, 比如my dog is hairy -> my dog is hairy

a。3 Transformer Encoder在訓練的過程中, 並不知道它將要預測哪些單詞? 哪些單詞是原始的樣? 哪些單詞被遮掩成了[MASK]? 哪些單詞被替換成了其他單詞? 正是在這樣一種高度確定的情況下, 反倒逼著模型快速學習該token的分散式上下文的語義, 盡最大努學習原始語言說話的樣子!!! 同時因為原始文字中只有15%的token參與了MASK操作, 並會破壞原語言的表達能和語言規則!!!

b 引入Next Sentence Prediction (下句話的預測任務)

b。1 目的是為了服務問答,推理,句主題關係等NLP任務。

b。2 所有的參與任務訓練的語句都被選中參加。

·50%的B是原始本中實際跟隨A的下句話。(標記為IsNext,代表正樣本)

·50%的B是原始本中隨機抽取的句話。(標記為NotNext,代表負樣本)

b。3 在該任務中,Bert模型可以在測試集上取得97-98%的準確率。

3.4 關於基於Bert的模型微調(fine-tuning)

只需要將特定任務的輸入,輸出插入到Bert中,利用Transformer強大的注意力機制就可以模擬很多下游任務。(句子對關係判斷,單文字主題分類,問答任務(QA),單句貼標籤(命名實體識別))

微調的若干經驗:

batch size:16,32

epochs:3,4

learning rate:2e-5,5e-5

全連線層新增:layers:1-3,hidden_size:64,128

乾貨丨Bert演算法:語言模型-BERT詳細介紹

04 Bert模型本身的優點和缺點

優點:

Bert的基礎建立在transformer之上,擁有強大的語言表徵能力和特徵提取能力。在11項 NLP基準測試任務中達到state of the art。同時再次證明了雙向語言模型的能力更加強大。

缺點:

1)可復現性差,基本沒法做,只能拿來主義直接用!

2)訓練過程中因為每個batch_size中的資料只有15%參與預測,模型收斂較慢,需要強大的算力支撐!