BERT模型學習與分析

前段時間Google推出了重磅的模型BERT(Bidirectional Encoder Representations from Transformers),刷新的多項記錄,因為前面分析了一下Transformer模型,構建了基礎,然后現在總結學習一下Bert模型。

1、什么是BERT模型?

BERT=基于Transformer 的雙向編碼器表征,顧名思義,BERT模型的根基就是Transformer,來源于attention is all you need。其中雙向的意思表示它在處理一個詞的時候,能考慮到該詞前面和后面單詞的信息,從而獲取上下文的語義。

BERT、GPT、ELMo三者的對比

它們三者與Word2Vec、單向LSTM之間的對比

Model 獲取長距離語義信息程度 能否左右上下文語義 是否可以并行
Word2Vec 1
單向LSTM 2 不能 不能
ELMo 2 不能
GPT 3 不能
BERT 3

ELMo采用的是雙向的LSTM的架構,所以能夠抓取到左右上下文的語義
由于GPT和BERT都采用了Transformer,所有它們都是能夠完成并行計算,但是由于GPT采用的是單向的,導致了每個token只能關注左側的語境,在文獻中被稱為了“Transformer解碼器”,而BERT采用了雙向的雙向的自注意機制,所以被稱為了“Transformer編碼器”。


預訓練語言表征

2、BERT模型核心點

1、BERT的架構

BERT的模型架構基于了Transformer,實現了多層雙向的Transformer編碼器。文中有兩個模型,一個是1.1億參數的base模型,一個是3.4億參數的large模型。里面所設置的參數如下:

Model Transformer層數(L) Hidden units(H) self-attention heads(A) 總參數
BERT(base) 12 768 12 1.1億
BERT(large) 24 1024 16 3.4億

其中base模型的參數和OpenAI的GPT的參數一致。目的就是為了同GPT的效果進行一個比較。


2、BERT的輸入表征

下圖表示了BERT的輸入表征


下面的思維導圖說明了各個部分的作用是什么:
3、BERT中最核心的部分

(1)Masked Language Model(MLM)
為了實現深度的雙向表示,使得雙向的作用讓每個單詞能夠在多層上下文中間接的看到自己。文中就采用了一種簡單的策略,也就是MLM。
MLM:隨機屏蔽掉部分輸入token,然后再去預測這些被屏蔽掉的token。
這里實現的時候有兩個缺點
缺點1:預訓練與微調之間的不匹配,因為微調期間是沒有看到[Mask]token。

  • Solution:不是總用實際的[Mask]token替換被“masked”的詞匯,而是采用訓練數據生成器隨機去選擇15%的token。
  • 例子:句子= my dog is hairy, 選擇的token是hairy。執行的流程為:

Transformer不知道它將被要求預測哪些單詞或哪些單詞已被隨機單詞替換,因此它被迫保持每個輸入詞塊的分布式語境表征。此外,因為隨機替換只發生在所有詞塊的1.5%(即15%的10%),這似乎不會損害模型的語言理解能力。
缺點2:每個batch只預測了15%的token,這說明了模型可能需要更多的預訓練步驟才能收斂。
(2)Next Sentence Prediction
現在從句子的角度來考慮問題,預訓練了一個二值化下一句預測任務,該任務可以從任何單語語料庫中輕松生成。具體來說,選擇句子A和B作為預訓練樣本:A的下一句有50%的可能是B,另外50%的可能是來自語料庫的。
例子:

  • 輸入=[CLS]男子去[MASK]商店[SEP]他買了一加侖[MASK]牛奶[SEP]
    Label= IsNext
  • 輸入=[CLS]男人[面具]到商店[SEP]企鵝[面具]是飛行##少鳥[SEP]
    Label= NotNext
4、預訓練過程

訓練批量大小為256個序列(256個序列*512個詞塊=128,000個詞塊/批次),持續1,000,000個步驟,這比33億個單詞語料庫大約40個周期

Item 值或名稱
學習率 {10}^{-4}
Adam β1 0.9
Adam β2 0.999
L2權重衰減 0.01
dropout 0.1
激活函數 gelu
Model TPU個數 TPU芯片個數 每次預訓練天數
BERT(Base) 4 16 4
BERT(Large) 16 64 4
5、微調過程

微調過程中,大多數模型超參數與預訓練相同。批量大小、學習率和訓練周期數量會有區別。最佳超參數值是特定于任務的,但我們發現以下范圍的可能值可以在所有任務中很好地工作:

參數
Batch 16,32
學習率Adam 5e-5,3e-5,2e-5
周期 3,4

4、實驗部分

BERT應用到了11項NLP的任務上面
(1)GLUE數據集




上圖中,(a)和(b)是序列級任務,(c)和(d)是詞塊級任務。圖中E代表其輸入嵌入,Ti代表詞塊i的語境表征,[CLS]是分類輸出的特殊符號,[SEP]是分割非連續詞塊序列的特殊符號。

結果:

(2)斯坦福問答數據集SQuAD v1.1
斯坦福問答數據集SQuAD v1.1:一種100k眾包問答對的集合
任務:給出一個問題和包含答案的來自維基百科的一個段落,任務是預測該段落中的其答案文本的跨度
(3)命名實體識別(NER)

數據集:CoNLL 2003命名實體識別(NER)數據集,由200k個訓練單詞組成,這些單詞已注釋為人員、組織、位置、雜項或其他(非命名實體)。

5、實踐部分

嘗試用github上面的bert-ner中文的項目,跑了一下ner,具體操作如下:

git clone https://github.com/ProHiryu/bert-chinese-ner

然后需要將Google寫的bert的源碼給放到當前的文件夾下,可以采用git clone的方式

git clone https://github.com/google-research/bert

同時需要下載Google遇訓練好了模型,然后放到了checkpoint文件夾里面。下載地址是:https://github.com/ProHiryu/bert-chinese-ner
最后的文件目錄樹是


準好了之后,就可以進行訓練了:

python BERT_NER.py --data_dir=data/ --bert_config_file=checkpoint/bert_config.json --init_checkpoint=checkpoint/bert_model.ckpt --vocab_file=vocab.txt --output_dir=./output/result_dir/

最后寫在output文件下面,可以找到eval_results.txt文件,然后我們可以看到本次訓練的結果如下:


image.png

持續更新中...

參考資料
1、BERT
2、https://www.cnblogs.com/huangyc/p/9898852.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容