BERT 論文筆記

BERT:Pre-training of Deep Bidirectional Transformer for Language Understanding

谷歌AI團(tuán)隊發(fā)布,在機(jī)器閱讀理解SQuAD1.1跑出的成績,在兩個指標(biāo)上全面超越人類。

GLUE基準(zhǔn)80.04%(7.6%絕對提升),MultiNLI準(zhǔn)確率86.7%(5.6%絕對提升)

BERT= Bidirectional Encoder Representation from Transformers

Pre-training Objective : MLM(Masked Language Model), 隨機(jī)mask input中一些tokens,目標(biāo)就是根據(jù)context去預(yù)測mask位置原始的詞匯id

除了MLM,引入next sentence prediction 任務(wù)聯(lián)合訓(xùn)練pair級別的特征表示

貢獻(xiàn)點(diǎn):

1、證明了bidirectional對文本特征表示的重要性

2、證明了預(yù)訓(xùn)練的特征表示能夠消除很多繁重的任務(wù)相關(guān)的網(wǎng)絡(luò)結(jié)構(gòu)

3、11個NLP任務(wù)上,提升了state of art水平

應(yīng)用預(yù)訓(xùn)練模型的兩個方案:

1、Feature based

ELMo方法希望通過語言模型提取上下文敏感的表示特征,把任務(wù)相關(guān)的結(jié)構(gòu)和上下文word embedding結(jié)合起來.

2、Fine-tuning

在有監(jiān)督的fine-tune指定任務(wù)前,先通過語言模型LM的目標(biāo),預(yù)訓(xùn)練模型

BERT核心

模型架構(gòu)

雙向的叫Transfer Encoder

單向的叫Transfer Decoder

BERT vs OpenAI GPT vs ELMo

image.png
輸入表示Input Representation

多個Sentence可以拼成一個sentence

token Representation = token embedding + segment(句) + position embedding

1)tokens embedding用WordPiece embedding(Wu et al., 2016),3w token詞匯

2)positional embedding支持序列長度到512個tokens

3)Segment embedding,第一句所有token都用A代替,第二句都用B代替

Pre-training 任務(wù)

不用傳統(tǒng)的左向右或者右向左的LM來預(yù)訓(xùn)練 BERT,采用兩個新的無監(jiān)督的預(yù)測任務(wù)來實現(xiàn)預(yù)訓(xùn)練。

1)任務(wù)一:Masked LM

15%的比例,在每個sequence中,隨機(jī)的mask掉 WordPiece中的tokens;同時也只predict被mask掉的位置上的words

這個方法有2個缺點(diǎn)downsides:
A:因為[MASK]字符在fine-tuning階段根本不會存在,所以在pre-training階段用[MASK]代替原來的word參與訓(xùn)練,會到只pre-training和fine-tuning階段mismatch。
解決辦法是:在整體15%的隨機(jī)中,有80%用[MASK]替換選中的word,10%用一個隨機(jī)的word代替選中的word,剩下10%的比例保持選中的word不變

B:因為在每一輪訓(xùn)練(each batch)只有15%的tokens會被預(yù)測,pre-training階段的模型收斂就需要迭代更多的steps(相比于單向的模型,預(yù)測所有的word被預(yù)測)

2)任務(wù)二:Next Sentence Prediction

理解2個text sentence之間的relationship,這個relation是不能直接用LM模型學(xué)習(xí)到的。

構(gòu)建有一個2分類任務(wù)binarized next sentence prediction task,訓(xùn)練數(shù)據(jù)可以從任何一個單語種的語料庫中生成:對于AB兩個sentence,50%的概率B就是實際在A后面的sentence,另外50%的概率B是從語料中隨機(jī)選擇的一個sentence。

最終這個任務(wù)的Accuracy達(dá)到97%~98%

Pre-training過程

數(shù)據(jù):BooksCorpus(800M words) + English Wikipedia(2500M words)

Wikipedia的數(shù)據(jù)只取text段落,忽略列表、表格等

從語料中,抽樣2個spans作為sentence,第一個sentence作為A Embeding,第二個作為B Embeding;50%的概率B是實際的sentence,另外50% B是隨機(jī)sentence.

抽樣時保證A+B的長度<512 tokens

LM masking:在用wordpiece 分詞(tokenization)后,均勻按15%的比例(rate)mask掉其中的tokens。沒有任何特殊的操作。

batchsize = 256 sequence(256*512tokens = 128,000 tokens/batch)

steps=1,000,000 (40 epochs / 3.3 billion word corpus)

Adam lr=1e-4, beta1=0.9 beta2=0.999

L2 weight decay = 0.01

lr adj step = 10,000 steps, linear decay

dropout p=0.1 all layers

activation = gelu (不是relu)

Loss = mean masked LM Likelihood + mean next sentence prediction likelihood

Fine-tuning過程
image.png
A:sequence Level的分類任務(wù)

為了得到一個固定維度的整句特征表示,直接取第一個token([CLS])的final hidden state(Transformer output),記作C。后面唯一需要加一個分類層W

P= softmax(CW)

BERT 和 W的所有參數(shù),一起finetune

B:span-level 和 token-level的預(yù)測任務(wù)

需要針對任務(wù)做微小的調(diào)整

batch size、lr和 epochs不同,其他超參大部分相同

C:SQuAD v1.1——StandFord Question Answering Dataset

100K QA pairs

給定一個問題Q,以及一段包含答案A的文字段落paragraph,任務(wù)的目標(biāo)是預(yù)測在段落中,是答案文本段span

做法:

a)將question和paragraph合并成一個sequence的特征表示,Q用A Embeding,P用B Embeding。

b)需要學(xué)習(xí)的新參數(shù)是一個起始向量S,以及一個結(jié)束向量E。每個token對應(yīng)的Ti代表最后的hidden vector。

i是Answer起始位置的概率是P = softmax(S·T),對Ti和S的dot product做softmax

對結(jié)束位置的計算也用同樣的公式

fine-tune 3 epochs, lr = 5e-5, batchsize = 32

在Inference階段,因為end predict并不依賴start predict,所以需要加一個約束:end要在start之后。除了這個,再沒有其他啟發(fā)式heuristic的規(guī)則。

D:命名實體識別 CoNLL數(shù)據(jù)集

200k words,標(biāo)記為5個entity類別:Person、Organization、Location、Miscellaneous、Other

每個Ti單獨(dú)input進(jìn)一個分類layer,預(yù)測時不依賴兩邊其他詞的預(yù)測。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容