簡(jiǎn)介:
BERT,全稱(chēng)Bidirectional?Encoder?Representations from?Transformers,是一個(gè)預(yù)訓(xùn)練的語(yǔ)言模型,可以通過(guò)它得到文本表示,然后用于下游任務(wù),比如文本分類(lèi),問(wèn)答系統(tǒng),情感分析等任務(wù).BERT像是word2vec的加強(qiáng)版,同樣是預(yù)訓(xùn)練得到詞級(jí)別或者句子級(jí)別的向量表示,word2vec是上下文無(wú)關(guān)的(Context-Free),而B(niǎo)ERT是上下問(wèn)有關(guān)的(Contextual).意思就是,word2vec只是具有詞本身的語(yǔ)義信息,而沒(méi)有包含文本(不是特指某個(gè)文本,而是所有跟該詞相關(guān)的文本信息)上下文信息,BERT卻是相反的.目前為止,BERT已經(jīng)取得了所有NLP任務(wù)的最好結(jié)果,所以才稱(chēng)之為最強(qiáng)NLP模型.
以下是BERT的詳細(xì)介紹:
1.Mask-LM
傳統(tǒng)的一般形式語(yǔ)言模型,都是從前向后(從左到右)的得到文本的語(yǔ)義表示.
這樣得到的文本表示句子結(jié)尾處的詞可以包含前面詞的語(yǔ)義信息,但是前面的詞并有包含后面詞的語(yǔ)義信息.為了解決這一問(wèn)題,從而引出了雙向RNN結(jié)構(gòu)的模型(Bi-RNN/Bi-LSTM).但是如果模型加深,那么最后可能會(huì)形成一個(gè)"cycle"(作者原話),這是因?yàn)橐粚覤i-RNN會(huì)使前面的詞包含后面詞的語(yǔ)義,后面的詞包含前面詞的語(yǔ)義,那么一層一層的加深,每個(gè)詞都會(huì)包含整個(gè)句子的語(yǔ)義信息,最后加深就變成了自己包含自己的"cycle".
所以作者在這里并沒(méi)有使用循環(huán)神經(jīng)網(wǎng)絡(luò)架構(gòu),而是使用一種叫做Mask-LM的方法,使用Transformer進(jìn)行訓(xùn)練:
We mask out 15% of the words in the input, run the entire sequence through a deep bidirectional?Transformer?encoder, and then predict only the masked words. For example:
根據(jù)文中的意思很好理解Mask-LM的意思,就是隨機(jī)的去掉部分輸入句子的單詞,讓其作為要預(yù)測(cè)的label(相當(dāng)于完形填空),然后用雙向深度Transformer模型進(jìn)行訓(xùn)練.
2.Next Sentence Prediction
此外,為了學(xué)習(xí)句子之間的關(guān)系链瓦,作者還訓(xùn)練一個(gè)簡(jiǎn)單任務(wù):給出兩個(gè)句子A和B,B是A之后的實(shí)際下一個(gè)句子,或者只是語(yǔ)料庫(kù)中的隨機(jī)句子啦吧?也就是判斷句子B是不是句子A的下一個(gè)句子,是或者不是,這是一個(gè)二分類(lèi)問(wèn)題,稱(chēng)之為Next Sentence Prediction,它是BERT論文新提出的一項(xiàng)NLP任務(wù)奈偏,所以目前應(yīng)該沒(méi)有專(zhuān)門(mén)針對(duì)NSP的語(yǔ)料庫(kù).
3.模型結(jié)構(gòu)
BERT包括兩個(gè)步驟:預(yù)訓(xùn)練Pre-training和微調(diào)fine-tuning.預(yù)訓(xùn)練是要花費(fèi)很長(zhǎng)的時(shí)間,而且硬件要求也很高,作用使用了4到16個(gè)云TPU訓(xùn)練了4天,所以家里沒(méi)有礦的伙伴就直接使用預(yù)訓(xùn)練好的模型參數(shù)進(jìn)行微調(diào)吧.文章開(kāi)頭也說(shuō)了,BERT可以作為預(yù)訓(xùn)練模型,用于其他下游NLP任務(wù),所以只需要使用預(yù)訓(xùn)練好的模型參數(shù),加上微調(diào)就可以在常見(jiàn)的NLP任務(wù)上取得較好的效果.
作者給出了兩個(gè)主要模型:Basic-model,Large-model.分別有12層/768個(gè)神經(jīng)單元/12-heads/110M參數(shù)和24層/1024個(gè)神經(jīng)單元/16heads/340M參數(shù).以下是一些模型的其他release版本,其中uncased是指文本已經(jīng)分詞和小寫(xiě)處理.
作者強(qiáng)調(diào),BERT模型的硬件要求高,參數(shù)量較小的Basic-model也需要在12g-16g的GPU上才可以運(yùn)行(所以我也就只能看看文章--.).
模型更詳細(xì)的其他信息,可參考BERT代碼github:BERT