「NLP」BERT詳解,論文筆記

來源 | 紙魚AI

作者 | linhw

bert模型以及其演化的模型在NLP的各個比賽中都有異常重要的表現,所以先寫一篇bert的論文筆記來記錄一下這個模型。本文發表於2018年,作者提出了一種基於雙向Transformer的預訓練深度語言模型BERT。基於預訓練的BERT模型,可以更好地完成分類,標註等下游任務。文章在11個自然語言處理的任務上用BERT模型刷新了記錄。

文章背景:預訓練模型ElMo[1](2018),GPT[2](2018)等在許多自然語言處理的任務上取得了SOTA的效果。不同於GPT,作者使用雙向Transformer進行語言模型的預訓練。並使用了不同的預訓練任務,提出了BERT,並在多項任務中刷新紀錄。

文章貢獻:

1.證明了雙向預訓練對語言表示的重要性。與之前使用的單向語言模型進行預訓練不同,BERT使用遮蔽語言模型來實現預訓練的深度雙向表示。
2.論文表明,預先訓練的表示免去了許多工程任務需要針對特定任務修改體系架構的需求。BERT是第一個基於微調的表示模型,它在大量的句子級和token級任務上實現了最先進的性能,強於許多面向特定任務體系架構的系統。
3. BERT刷新了11項NLP任務的性能記錄。

文章細節:

BERT的使用包括pre-training和fine-tuning兩個部分。在pre-training部分,BERT使用無label數據訓練模型中的參數;在fine-tuning部分,BERT使用有label數據對參數進行調整,更好地用於下游任務。

BERT的結構如下圖所示,不同於GPT的單向transformer,BERT使用雙向transformer來進行堆疊。文章中給出了兩個規格的BERT網絡。BERTBASE (L=12, H=768, A=12, Total Parameters=110M)和BERTLARGE (L=24, H=1024, A=16, Total Parameters=340M)。

「NLP」BERT詳解,論文筆記

BERT的輸入可以是單個句子也可以是一對句子,句子由多個token組成。Token為WordPiece方式(將一個單詞分成幾個部分,比如lover,loving分為lov,ing,這樣做可以有效地捕捉單詞詞根的信息,減小詞表容量,也可以解決OOV問題,常用的方法有BPE方法)。對於輸入的序列,每一個token的embedding都由三部分求和而成,分別是token的embedding,句子分割的embedding(如果是兩個句子前一個句子segment embedding為0,後一個句子為1),以及位置編碼的embedding(該embedding通過訓練學習)。Segment embedding提供了句子間的上下文信息,position embedding提供了句子單詞位置的信息。Embedding如下圖所示。

「NLP」BERT詳解,論文筆記

BERT預訓練共有兩種不同的任務,第一種是Masked LM任務,在該任務下,輸入的句子會有15%的token被修改,修改的方式如下:在80%的情況下該單詞會變成[mask] token,在10%的情況下;該單詞會被修改為另外一個單詞;在10%的情況下,該單詞不會改變。(之所以不完全使用mask是因為具體輸入時沒有mask token,修改為另一個單詞總體發生的概率只有1.5%,所以不會影響BERT的語法知識學習)BERT需要對該被修改的單詞進行預測,預測其原來的單詞是什麼。預測的過程如下,在mask單詞的輸出端會連接一個全連接層,連接層的輸出維度為token的詞庫大小、然後通過softmax層後使用交叉熵損失函數學習即可。

「NLP」BERT詳解,論文筆記

第二個預訓練任務是對句子是否是上下連續的兩句進行預測,[sep] token兩側的句子有50%的概率是前後句,有50%的概率不是前後句,預測的方法如下,在輸入句子時第一個token是[cls] token,其對應的輸出的token上會連接一個二分類層,同樣通過損失函數對其進行訓練。上述兩個任務在預訓練中會同時進行,如上圖所示。

BERT訓練完成後,就可以將BERT應用到下游任務中,BERT可應用的任務主要包括下述四類。

1. 句子對分類問題,輸入句子對,輸出分類標籤。

對於該任務,只需在cls token對應輸出端連接一個全連接層,便可以進行預測,在具體的任務中,需要用有label的數據對該全連接層進行訓練,與此同時BERT的參數也會進行微調,這就是fine-tune。訓練完成後就可以用BERT完成該分類任務。

2. 單句子分類問題,輸入一個句子,輸出句子類別。

與雙句子分類的結構的方法完全一致。

3. SQuAD問題,從一個段落中找出一個問題所對應的幾個詞。

對於該任務,會新建兩個可學習的向量vs和ve,對於paragraph輸出端的向量,vs會與之每一個相乘,然後計算softmax,最大的值則為預測的答案的起始位置,同理ve為結束的位置。

4. 序列標註問題,對一個句子中的每一個單詞進行標註。

對於該任務,每一個句子中的輸出單詞都會連接一個全連接層,輸出維度為標註的標籤種類數,然後同樣用上述方法進行訓練即可。

其對應結構如下圖所示。

「NLP」BERT詳解,論文筆記

[1] Peters, M. E. et al. Deep contextualized word representations. naacl (2018).

[2] Radford, A. & Salimans, T. Improving Language Understanding by Generative Pre-Training. (2018).

The End


分享到:


相關文章: