【NLP】 深入浅出解析BERT原理及其表征的内容
本篇介紹目前NLP領(lǐng)域里影響力最大的預(yù)訓(xùn)練模型BERT。首先,大致介紹了BERT里有什么;接著,介紹了BERT的結(jié)構(gòu)和其預(yù)訓(xùn)練的方式;最后,再總結(jié)BERT的表征的內(nèi)容和分布。
作者&編輯 | 小Dream哥
1 BERT是什么?
了解自然語(yǔ)言處理的同學(xué),應(yīng)該沒(méi)有不知道BERT的;甚至連很多自然語(yǔ)言處理圈外的開(kāi)發(fā)的同學(xué),都知道這個(gè)模型的厲害。不得不佩服谷歌的影響力和營(yíng)銷水平,當(dāng)然,也確實(shí)是它的效果有這么棒。
這里就不再說(shuō)BERT當(dāng)年是怎么樣橫掃各大NLP任務(wù)榜單的故事了。畢竟現(xiàn)在出了個(gè)XLnet,各方面都比他強(qiáng)了一點(diǎn)點(diǎn);而且,也開(kāi)始有一些論文開(kāi)始接BERT的短了。
那我們言歸正傳,現(xiàn)在來(lái)看看BERT究竟是什么,有什么樣的結(jié)構(gòu),如何進(jìn)行預(yù)訓(xùn)練等。
BERT,全稱是Pre-training of Deep Bidirectional Transformers for Language Understanding。注意其中的每一個(gè)詞都說(shuō)明了BERT的一個(gè)特征。
Pre-training說(shuō)明BERT是一個(gè)預(yù)訓(xùn)練模型,通過(guò)前期的大量語(yǔ)料的無(wú)監(jiān)督訓(xùn)練,為下游任務(wù)學(xué)習(xí)大量的先驗(yàn)的語(yǔ)言、句法、詞義等信息。
Bidirectional說(shuō)明BERT采用的是雙向語(yǔ)言模型的方式,能夠更好的融合前后文的知識(shí)。
Transformers說(shuō)明BERT采用Transformers作為特征抽取器。
Deep說(shuō)明模型很深,base版本有12層,large版本有24層。
總的來(lái)說(shuō),BERT是一個(gè)用Transformers作為特征抽取器的深度雙向預(yù)訓(xùn)練語(yǔ)言理解模型。
2 BERT的結(jié)構(gòu)
上圖是BERT的模型結(jié)構(gòu),它由多層的雙向Transformer連接而成,有12層和24層兩個(gè)版本。BERT中Transformer的實(shí)現(xiàn)與上一期講的Transformer實(shí)現(xiàn)別無(wú)二致。
要理解BERT,最主要在于它預(yù)訓(xùn)練時(shí)采取的方法,下面我們做一個(gè)詳細(xì)的講解。
3 BERT預(yù)訓(xùn)練模式
(1) Input Representation
我們先看看,BERT網(wǎng)絡(luò)接受的輸入是什么,如上圖所示,BERT接受的輸入包括三個(gè)部分:
1) 詞嵌入后的Token Embedding,每次輸入總以符號(hào)[CLS]的embedding開(kāi)始,如果是兩個(gè)句子,則句之間用[SEP]隔開(kāi)。
2) 句子類別的符號(hào)
3) Position Embedding,這個(gè)與Transformer中的一致。
上述三個(gè)向量相加,組成BERT的輸入。
(2) Masked Language Model
那么,BERT是通過(guò)什么樣的任務(wù)進(jìn)行訓(xùn)練呢?其中一個(gè)是Masked Language Model。BERT會(huì)在訓(xùn)練時(shí)遮住訓(xùn)練語(yǔ)料中15%的詞(實(shí)際的MASK機(jī)制還有一些調(diào)整),用符號(hào)[MASK]代替,通過(guò)預(yù)測(cè)這部分被遮住的內(nèi)容,來(lái)讓網(wǎng)絡(luò)學(xué)習(xí)通用的詞義、句法和語(yǔ)義信息。
那么,該怎么理解Masked Language Model呢?我們不妨回想一下高中階段都做過(guò)的英語(yǔ)完形填空,我們?cè)谧鐾晷翁羁疹}目的時(shí)候,為了填上空格中的詞,常常需要不斷的看空格詞的上下文,甚至要了解整個(gè)段落的信息。有時(shí)候,有些空甚至要通過(guò)一些英語(yǔ)常識(shí)才能得到答案。通過(guò)做完形填空,我們能夠?qū)W習(xí)到英語(yǔ)中很多的詞義、句法和語(yǔ)義信息。BERT的訓(xùn)練過(guò)程也類似,Masked Language Model通過(guò)預(yù)測(cè)[MASK]代替的詞,不斷的“對(duì)比”上下文的語(yǔ)義,句法和詞義信息,從而學(xué)到了大量相關(guān)的知識(shí)。
哈哈,不知道BERT的提出者們是不是受中國(guó)英語(yǔ)試卷里完形填空題目的啟發(fā)呢?
(3) Next Sentence Prediction
BERT的預(yù)訓(xùn)練過(guò)程,還有一個(gè)預(yù)測(cè)下一句的任務(wù)。就是輸入兩個(gè)句子,判斷第二個(gè)句子是不是第一個(gè)句子的下一句的任務(wù)。這個(gè)任務(wù)是為像QA和NLI這樣需要考慮句子間關(guān)系的下游任務(wù)準(zhǔn)備的。
通過(guò)這個(gè)任務(wù),BERT獲得了句子級(jí)表征的能力。通常,BERT的第一個(gè)輸出,即[CLS]對(duì)應(yīng)的輸出,就可以用來(lái)當(dāng)作輸入句子的句向量來(lái)使用。
4 BERT到底學(xué)到了什么?
(1) 在BERT在預(yù)訓(xùn)練過(guò)程中,學(xué)習(xí)到了豐富的語(yǔ)言學(xué)方面的信息。
短語(yǔ)句法的信息在低層網(wǎng)絡(luò)結(jié)構(gòu)中學(xué)習(xí)到;BERT的中層網(wǎng)絡(luò)就學(xué)習(xí)到了豐富的語(yǔ)言學(xué)特征;BERT的高層網(wǎng)絡(luò)則學(xué)習(xí)到了豐富的語(yǔ)義信息特征。
上述觀點(diǎn)來(lái)自如下的論文,該團(tuán)隊(duì)用一系列的探針實(shí)驗(yàn),佐證了上述的觀點(diǎn),對(duì)我們進(jìn)一步了解BERT和更有效的使用BERT有一定的指導(dǎo)意義。
Ganesh Jawahar Beno??t Sagot Djam′e Seddah (2019). What does BERT learn about the structure of language?.
(2)?BERT其實(shí)并沒(méi)有學(xué)習(xí)到深層的語(yǔ)義信息,只是學(xué)習(xí)到了一些淺層語(yǔ)義和語(yǔ)言概率的線索?
最近有一篇論文"Probing Neural Network Comprehension of Natural Language Arguments",討論BERT在Argument Reasoning Comprehension Task(ARCT)任務(wù)中是不是其實(shí)只是學(xué)習(xí)到了數(shù)據(jù)集中一些虛假的統(tǒng)計(jì)線索,并沒(méi)有真正理解語(yǔ)言中的推理和常識(shí)。
事情大概是這樣子,論文作者為了殺殺BERT的威風(fēng),挑了自然語(yǔ)言處理中比較難的任務(wù)ARCT,并且在測(cè)試數(shù)據(jù)中做了一些“手腳”,想試一試BERT的身手。所謂的ARCT,是一個(gè)推理理解的任務(wù)。如下圖所示,展示了一個(gè)ARCT數(shù)據(jù)集中的例子。ARCT數(shù)據(jù)中有一個(gè)結(jié)論Claim,一個(gè)原因Reason,一個(gè)論據(jù)Warrant,還有一個(gè)錯(cuò)誤論據(jù)Alternative。
如上圖所示,是ARCT任務(wù)的通用模型結(jié)構(gòu),就是同時(shí)輸入,Claim,Reason和兩個(gè)Warrant,預(yù)測(cè)哪個(gè)Warrant是正確的。
論文作者首先在ARCT原始數(shù)據(jù)集上用BERT進(jìn)行ARCT任務(wù)的預(yù)測(cè),發(fā)現(xiàn)BERT的效果確實(shí)很好,達(dá)到71.6±0.04,跟沒(méi)有接受過(guò)訓(xùn)練的人員成績(jī)接近。
然后,研究人員研究測(cè)試數(shù)據(jù)集發(fā)現(xiàn)數(shù)據(jù)集里面其實(shí)隱藏了一些統(tǒng)計(jì)線索。簡(jiǎn)單的說(shuō)就是,數(shù)據(jù)集里正確的Warrant里包含某些詞的概率比錯(cuò)誤的Warrant要高。例如,只要看到Warrant中包含not就預(yù)測(cè)其為正確的Warrant就能夠達(dá)到60的正確率。
同時(shí),研究人員還做了只把warrant和claim、warrant和reason作為輸入來(lái)訓(xùn)練模型的實(shí)驗(yàn)。實(shí)驗(yàn)發(fā)現(xiàn),BERT的效果也能達(dá)到70+。這就好像老師題目都還沒(méi)有說(shuō)完,學(xué)生就把答案寫(xiě)出來(lái),這顯然不太合理的,要么是學(xué)生作弊,要么是學(xué)生提前把答案背下來(lái)了。
最后,研究人員來(lái)了一招狠的,就是將數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行反轉(zhuǎn)和一些詞概率上的平均處理,如下所示:
實(shí)驗(yàn)結(jié)果令人驚訝,BERT最好的效果只有53%,只比瞎猜好一點(diǎn)點(diǎn)。
所以,BERT的預(yù)訓(xùn)練過(guò)程到底學(xué)到了什么呢?
要準(zhǔn)確回答這個(gè)問(wèn)題并不容易。但通過(guò)上述兩篇論文在兩個(gè)維度上對(duì)BERT的解析,我們心里應(yīng)該能夠給BERT一個(gè)清晰的定位。BERT是一個(gè)強(qiáng)大的預(yù)訓(xùn)練,因其超大的參數(shù)量和較強(qiáng)的特征提取能力,能夠從海量的語(yǔ)料中學(xué)習(xí)到一些語(yǔ)言學(xué)和一定程度的語(yǔ)義信息。但是,筆者認(rèn)為,跟此前的所有NLP模型一樣,它還遠(yuǎn)沒(méi)有學(xué)習(xí)到語(yǔ)言中蘊(yùn)含的大量的常識(shí)和推理。例如,利用BERT或許能夠從"天下雨了",推斷出“要帶傘”。但是更深層次的,“要帶傘是因?yàn)榕铝軡?#xff0c;淋濕了會(huì)感冒”這些BERT是很難學(xué)到的。
NLP的難處就在于,語(yǔ)言是高度精煉和情境化的。一句簡(jiǎn)單的話,可能需要豐富的知識(shí)才能理解。現(xiàn)在來(lái)看,預(yù)訓(xùn)練模型是一條有希望但漫長(zhǎng)的道路。
總結(jié)
BERT是目前最火爆的NLP預(yù)訓(xùn)練模型,其基于MLM和雙向語(yǔ)言模型和以Transformer作為特征抽取器,是其成功最主要的兩個(gè)原因。我們先想想,BERT還有哪些地方可以改進(jìn)的,下周我們介紹XLnet的時(shí)候,就可以更好的理解了。
讀者們可以留言,或者加入我們的NLP群進(jìn)行討論。感興趣的同學(xué)可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預(yù)告:XLnet:BERT和GPT的結(jié)合
知識(shí)星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長(zhǎng)為一名合格的自然語(yǔ)言處理算法工程師。
知識(shí)星球主要有以下內(nèi)容:
(1) 聊天機(jī)器人。考慮到聊天機(jī)器人是一個(gè)非常復(fù)雜的NLP應(yīng)用場(chǎng)景,幾乎涵蓋了所有的NLP任務(wù)及應(yīng)用。所以小Dream哥計(jì)劃以聊天機(jī)器人作為切入點(diǎn),通過(guò)介紹聊天機(jī)器人的原理和實(shí)踐,逐步系統(tǒng)的更新到大部分NLP的知識(shí),會(huì)包括語(yǔ)義匹配,文本分類,意圖識(shí)別,語(yǔ)義匹配命名實(shí)體識(shí)別、對(duì)話管理以及分詞等。
(2) 知識(shí)圖譜。知識(shí)圖譜對(duì)于NLP各項(xiàng)任務(wù)效果好壞的重要性,就好比基礎(chǔ)知識(shí)對(duì)于一個(gè)學(xué)生成績(jī)好壞的重要性。他是NLP最重要的基礎(chǔ)設(shè)施,目前各大公司都在著力打造知識(shí)圖譜,作為一個(gè)NLP工程師,必須要熟悉和了解他。
(3) NLP預(yù)訓(xùn)練模型。基于海量數(shù)據(jù),進(jìn)行超大規(guī)模網(wǎng)絡(luò)的無(wú)監(jiān)督預(yù)訓(xùn)練。具體的任務(wù)再通過(guò)少量的樣本進(jìn)行Fine-Tune。這樣模式是目前NLP領(lǐng)域最火熱的模式,很有可能引領(lǐng)NLP進(jìn)入一個(gè)全新發(fā)展高度。你怎么不深入的了解?
轉(zhuǎn)載文章請(qǐng)后臺(tái)聯(lián)系
侵權(quán)必究
往期精選
【NLP】自然語(yǔ)言處理專欄上線,帶你一步一步走進(jìn)“人工智能技術(shù)皇冠上的明珠”。
【NLP】用于語(yǔ)音識(shí)別、分詞的隱馬爾科夫模型HMM
【NLP】用于序列標(biāo)注問(wèn)題的條件隨機(jī)場(chǎng)(Conditional Random Field, CRF)
【NLP】經(jīng)典分類模型樸素貝葉斯解讀
【NLP】 NLP專欄欄主自述,說(shuō)不出口的話就交給AI說(shuō)吧
【NLP】 深度學(xué)習(xí)NLP開(kāi)篇-循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
【NLP】 NLP中應(yīng)用最廣泛的特征抽取模型-LSTM
【NLP】 聊聊NLP中的attention機(jī)制
【NLP】 理解NLP中網(wǎng)紅特征抽取器Tranformer
【每周NLP論文推薦】從預(yù)訓(xùn)練模型掌握NLP的基本發(fā)展脈絡(luò)
【技術(shù)綜述】深度學(xué)習(xí)在自然語(yǔ)言處理中的應(yīng)用發(fā)展
總結(jié)
以上是生活随笔為你收集整理的【NLP】 深入浅出解析BERT原理及其表征的内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【知识星球】颜值,自拍,美学三大任务简介
- 下一篇: 如何系统性掌握深度学习模型设计和优化