BERT-Google Code
Pre-training of Deep Bidirectional Transformers for Language Understanding
? ? ? ?EMLo的熱度還沒降下來(涼了)淋纲,緊接著OpenAI GPT和ELMo的Google BERT,在很多個NLP任務(wù)中都獲得了大幅度的提升院究,又成了NLP的一個牛逼瘋了大熱點 洽瞬。
? ? ? ?下面記錄一下對論文的理解和筆記。
1业汰、相關(guān)知識
? ? ? ?預(yù)訓(xùn)練模型伙窃,BERT是一個預(yù)訓(xùn)練模型。簡單的來說就是一個模型通過大數(shù)據(jù)集A來訓(xùn)練样漆,學(xué)習(xí)到一個關(guān)于數(shù)據(jù)集A的參數(shù)为障。當進行數(shù)據(jù)集B的任務(wù)時,先調(diào)用關(guān)于A的參數(shù)作為初始參數(shù)放祟,然后再通過數(shù)據(jù)集B進行再訓(xùn)練鳍怨,并調(diào)整參數(shù),逐漸調(diào)整成為適合數(shù)據(jù)集B的模型跪妥,也就是“fine-tuning(微調(diào))”鞋喇。
? ? ? ?這個特性的特點就是可以用很少的數(shù)據(jù)集B就能訓(xùn)練得到很好的訓(xùn)練參數(shù),即眉撵,一定程度上的繼承了在數(shù)據(jù)集A訓(xùn)練好的參數(shù)侦香,通過微調(diào)使之快速適應(yīng)數(shù)據(jù)集B落塑。而且通常這樣做,會得到比只用數(shù)據(jù)B訓(xùn)練得到的模型參數(shù)更好罐韩。
2憾赁、BERT
? ? ? ?主要貢獻:雙向預(yù)訓(xùn)練對語言表示的重要性,使用MLM(Masked Language Model散吵,遮蔽語言模型)龙考,語句級訓(xùn)練NextSentence任務(wù)
? ? ? ?論文提出了兩種不同Size的BERT模型:
? ? ? ?? ? ? ?BERTbase:L=12,H=768错蝴,A=12洲愤,TotalParams = 110M(Base版本的提出意在與GPT模型有相同的模型size,用以對比參照)
? ? ? ?? ? ? ?BERTlarge:L=24顷锰,H=1024柬赐,A=16,TotalParams = 340M
L:指網(wǎng)絡(luò)的層數(shù)
H:指隱層的單元數(shù)
A:指使用的自注意力的頭數(shù)(Attention Is All You Need)
? ? ? ? 兩者的差別就是大小不同官紫,在后面的實驗結(jié)果部分肛宋,BERTlarge版本大概比base版本要再高約1% ~ 2%左右,在CoLA數(shù)據(jù)集差8%左右束世,RTE在4%左右酝陈。
? ? ? ?模型結(jié)構(gòu)對比
? ? ? ?OpenAI GPT就是只用到了從左往右的上下文信息來做訓(xùn)練。
? ? ? ?而ELMo使用的是兩個獨立的單向LSTM來做訓(xùn)練毁涉。據(jù)說ELMo使用時效率比較低沉帮,而且很快又被提出的BERT強勢壓在頭上,所以ELMo小火之后贫堰,就沒然后了穆壕。
? ? ? ?BERT的結(jié)構(gòu)主要是基于多層多個雙向Transformer(從左到右和從右到左)。Transformer在Attention論文中應(yīng)用MT(機器翻譯)任務(wù)時用了6層的Transformer其屏。從結(jié)構(gòu)上來講喇勋,Transformer之間用的是Residual Connection,并且有batch normarlization這種“常規(guī)操作”偎行,所以得以實現(xiàn)多層網(wǎng)絡(luò)川背。而疑問在于多層的網(wǎng)絡(luò)結(jié)構(gòu)可以在NLP任務(wù)中學(xué)習(xí)到什么特征?有論點認為低層網(wǎng)絡(luò)偏向于語法特征學(xué)習(xí)蛤袒,高層網(wǎng)絡(luò)偏向于語義特征學(xué)習(xí)熄云,但這還沒有得到論證。
? ? ? ?Task1:MLM(遮蔽語言模型)
? ? ? ?BERT創(chuàng)新性的一個亮點就是對輸入數(shù)據(jù)的處理汗盘,“MLM”皱碘,即遮蔽語言模型。BERT通過對輸入句子15%的token進行隨機遮蔽(隨機遮蔽的原因是為了減少未來fine-tuning時遇到未見詞的可能性)隐孽,然后將masked token的位置輸出的最終隱層向量送到softmax癌椿,來預(yù)測masked token。而對于遮蓋住的token在NLP下游任務(wù)中不存在這種Mask標記菱阵,因此為了解決這個問題踢俄,作者按照一定的比例來進行輸入原詞或者輸入某個隨機詞。
文中例如:My dog is hairy
- 80%概率:用[mask] 標記替換:My dog is hairy -->My dog is [mask]
- 10%概率:隨機詞替換要標記位置:My dog is hairy -->My dog is pig.
- 10%概率:不做替換操作:My dog is hairy -->My dog is hairy. (無替換)
? ? ? ?Transformer
? ? ? ?Transformer已經(jīng)提到晴及,是來自于同是Google提出的《Attention Is All You Need》都办,是一種可以替代CNN和RNN的新架構(gòu),用來實現(xiàn)MT任務(wù)虑稼。CNN處理文本的缺陷是琳钉,卷積操作先天不適合用于文本序列操作故响,RNN沒有并行化挎扰,很容易超出內(nèi)存限制沮明。
Transformer 結(jié)構(gòu)
? ? ? ?上圖就是Transformer的結(jié)構(gòu)圖绒净,分成左邊Nx的encoder部分和右邊Nx的decoder部分吓懈,相比較于RNN+Attention常見的encoder-decoder之間的Attention冗恨,還多出encoder和decoder內(nèi)部的self-attention棺妓。每個Attention都有Multi-Head特征价涝,最后通過Position encoding加入沒有考慮過的位置信息且改。
? ? ? ?Multi - Head Attention
? ? ? ?將一個詞的vector验烧,切分成h個維度,求attention相似度(點積又跛、cosine碍拆、MLP)時每個h維度計算。由于單詞映射在高維空間作為向量形式慨蓝,每一維空間都可以學(xué)習(xí)到不同的特征感混,相鄰空間所學(xué)到的結(jié)果更相似,相較于全體空間放到一起更具合理性菌仁。比如對于vector-size = 512的詞向量浩习,取h=8,每64個空間做一個Attention济丘,學(xué)到的結(jié)果更細化谱秽,更合理(即高維空間中的相鄰維度具有的聯(lián)系更緊密,我猜)摹迷。
? ? ? ?Self - Attention
? ? ? ?每個詞位置的詞都可以無視距離和方向疟赊,有機會和句子詞序列中的每個詞進行encoding。兩個詞的聯(lián)系越強峡碉,self-attention的值越大近哟。
? ? ? ?Position Encoding
? ? ? ?因為Transformer既沒有RNN的循環(huán)單元也沒有CNN的卷積操作,但序列順序信息是非常重要的特征鲫寄。
? ? ? ?Transformer計算token的位置信息(這里使用正弦波)吉执,類似信號的周期性變化疯淫。這樣的循環(huán)函數(shù)可以一定程度上增加模型的泛化能力。
? ? ? ?? ? ? ?PE (pos,2i) = sin(pos/10000 2i/d model )
? ? ? ?? ? ? ?PE (pos,2i+1) = cos(pos/10000 2i/d model )
? ? ? ?但BERT直接訓(xùn)練一個Position Embedding 來保留位置信息戳玫,每個位置隨機初始化一個向量熙掺,加入模型訓(xùn)練,最后就得到一個包含位置信息的embedding(emmmm)咕宿。BERT最后這個Position Embedding 和 Word Embedding選擇使用 直接拼接币绩。
? ? ? ?Task2:Next Sentence Prediction
? ? ? ?句子級別的連續(xù)性預(yù)測任務(wù),即預(yù)測輸入BERT的兩端文本是否為連續(xù)的文本府阀。訓(xùn)練時缆镣,輸入模型的第二句以50%的概率從全部文本中隨機抽取,剩下50%的概率選取第一個句子的后續(xù)一個句子作為輸入试浙。(其實就是做句子級匹配的二分類)
即如下:
? ? ? ?[Input]:[CLS]太陽天[mask]照[SEP]我[mask]去學(xué)校[SEP]
? ? ? ?[Label]:IsNext
? ? ? ?[Input]:[CLS]太陽天[mask]照[SEP]交給警察[mask]叔手里面[SEP]
? ? ? ?[Label]:NotNext
(雖然這個訓(xùn)練任務(wù)非常的簡單董瞻,但是后來證明這項訓(xùn)練任務(wù)對QA和NLI都極有幫助)
? ? ? ?Segment Embedding
BERT Input Representation
? ? ? ?The input embeddings is the sum of the token embeddings, the segmentation embeddings and position embeddings.
? ? ? ?即直接拼接各個Embedding組合。
3川队、遷移策略
下游NLP任務(wù)分類:
a). 序列標注:分詞力细、NER、語義標注…
b).分類任務(wù):文本分類固额、情感識別…
c).句子關(guān)系判斷:QA眠蚂、自然語言推理、文本蘊含…
d).生成式任務(wù):機器翻譯斗躏、文本摘要逝慧、文本生成…
? ? ? ?BERT 將傳統(tǒng)大量在下游具體的NLP任務(wù)中做的操作轉(zhuǎn)移到預(yù)訓(xùn)練詞向量中,在獲得BERT詞向量后啄糙,最終只需要在詞向量上加簡單的MLP或線性分類器即可笛臣。
4、GLUE語料集
實驗數(shù)據(jù)以及對應(yīng)的NLP任務(wù)
- MNLI:蘊含關(guān)系推斷
- QQP:問題對是否等價
- QNLI:句子是都回答問句
- SST-2:情感分析
- CoLA:句子語言性判斷
- STS-B:語義相似
- MRPC:句子對是都語義等價
- RTE:蘊含關(guān)系推斷
- WNLI:蘊含關(guān)系推斷
References:
? ? ? ?BERT Paper
? ? ? ?Attention Paper
? ? ? ?Attention Is All You Need 閱讀筆記
? ? ? ?BERT的理解
? ? ? ?徹底搞懂BERT
? ? ? ?BERT介紹