一姊扔、寫在前面的話
BERT模型其實一直想寫筆記,但一直沒寫梅誓,主要原因就是在研究完Transformer之后恰梢,BERT幾乎一讀就懂佛南,沒有在額外加入太多的東西,但另一方法嵌言,BERT在實踐上可以說是結(jié)合很多深度學習領(lǐng)域有效的方法的一個大禮包嗅回,仔細研究BERT模型可以發(fā)現(xiàn)很多目前最前沿有效的方法。故這次蹭著論文學習小組需要寫筆記摧茴,記錄了一下自己關(guān)于BERT的理解绵载,后續(xù)會在這個的基礎上加入代碼分解。
二苛白、BERT的整體結(jié)構(gòu)
BERT 的模型結(jié)構(gòu)是一個多層雙向Transformer 編碼器娃豹,整體的模型結(jié)構(gòu)其實就是Transformer,但BERT的創(chuàng)新點在于:
- 引入了掩碼使得Transformer編碼器能夠使用雙向信息
- 加入兩個預訓練任務购裙,實現(xiàn)NLP領(lǐng)域的遷移學習
三懂版、輸入表示
BERT在預訓練階段輸入基本和Transformer結(jié)構(gòu)是相同的,主要的區(qū)別是加入了CLS和SEP兩個特殊字符躏率,每個序列的第一個標記始終是特殊分類嵌入CLS定续,該特殊標記對應的最終隱藏狀態(tài)(即Transformer 的輸出)被用作分類任務中該序列的總表示。對于非分類任務禾锤,這個最終隱藏狀態(tài)將被忽略私股,SEP則是用來區(qū)別被打包到一起的句子對輸入。
1. WordPiece
BERT在處理輸入時恩掷,會采用WordPiece方法對輸入進行分割倡鲸。WordPiece字面理解是把word拆成piece一片一片,其主要使用雙字節(jié)編碼(BPE黄娘,Byte-Pair Encoding)的方式來實現(xiàn)的峭状。BPE的過程可以理解為把一個單詞再拆分,使得我們的此表會變得精簡逼争,并且寓意更加清晰优床。比如"loved","loving","loves"這三個單詞。其實本身的語義都是“愛”的意思誓焦,但是如果我們以單詞為單位胆敞,那它們就算不一樣的詞,在英語中不同后綴的詞非常的多杂伟,就會使得詞表變的很大移层,訓練速度變慢,訓練的效果也不是太好赫粥。BPE算法通過訓練观话,能夠把上面的3個單詞拆分成"lov","ed","ing","es"幾部分,這樣可以把詞的本身的意思和時態(tài)分開越平,有效的減少了詞表的數(shù)量频蛔。
2. Segment Embeddings
為了對被打包在一起輸入的句子對灵迫,除了使用上面的SEP標示之外,BERT會給第一個句子的每個標記添加一個可訓練的句子 A嵌入晦溪,給第二個句子的每個標記添加一個可訓練的句子 B 嵌入龟再,例如A嵌入都是0,B嵌入都是1尼变。
3. Position Embeddings
位置嵌入其實就是對輸入的每個位置訓練一個向量利凑,在原論文中使用如下公式得到位置嵌入:
但現(xiàn)在的BERT代碼中似乎換成和隨機生成詞向量一樣,通過訓練得到位置嵌入嫌术,這也是一般獲得位置嵌入的方法哀澈。
四、Transformer編碼器
基本上就是從原論文照搬結(jié)構(gòu)度气,參考之前的筆記:《Attention is All You Need》論文筆記
五割按、預訓練任務
1. 遮蔽語言模型
BERT為了訓練擁有雙向句子信息的模型采用了一種隨機遮蔽一定比例的輸入標記,然后預測那些被遮蔽的標記的預訓練任務磷籍。BERT在每個序列中隨機遮蔽 15% 的標記适荣,然后通過最后使用softmax去預測被遮蔽的字,但直接使用這樣的預訓練任務會有兩個問題:
- 預訓練和微調(diào)之間造成了不匹配院领,因為 [MASK] 標記在微調(diào)期間從未出現(xiàn)過
- 使用 Transformer 的每批次數(shù)據(jù)中只有 15% 的標記被預測弛矛,這意味著模型可能需要更多的預訓練步驟來收斂
為了解決問題一(問題二還有待優(yōu)化),BERT采用了以下的操作:
- 80% 的情況下:用 [MASK] 替換被選擇的單詞比然,例如丈氓,my dog is hairy → my dog is [MASK]
- 10% 的情況下:用一個隨機單詞替換被選擇的單詞,例如强法,my dog is hairy → my dog is apple
- 10% 的情況下:保持被選擇的單詞不變万俗,例如,my dog is hairy → my dog is hairy
2. 句子預測
BERT為了訓練一個理解句子關(guān)系的模型饮怯,預訓練了一個下一句預測的二元分類任務:例如對每一個輸入的句子對(句子A和句子B)闰歪,50% 的情況下 B 是真的在 A 后面的下一個句子,50% 的情況下是來自語料庫的隨機句子蓖墅。
六库倘、微調(diào)
可以看到,BERT的微調(diào)非常簡單置媳,通過對最后一層的簡單改造即可遷移到自己的NLP任務中于樟。