BERT筆記

BERT是在OpenAI GPT基礎(chǔ)上發(fā)展起來的噪矛,是一種動(dòng)態(tài)詞向量技術(shù)量蕊。與傳統(tǒng)靜態(tài)詞向量不同,動(dòng)態(tài)詞向量可以根據(jù)具體的上下文信息艇挨,動(dòng)態(tài)生成詞向量危融。對(duì)于一詞多義等現(xiàn)象較為友好。BERT的牛逼之處在于對(duì)于許多具體的下游任務(wù)雷袋,預(yù)訓(xùn)練的BERT表示可以通過僅僅一個(gè)額外的輸出層的微調(diào)便可以取得state-of-the-art的結(jié)果吉殃,而不需要為特定的任務(wù)在結(jié)構(gòu)上做很大的改動(dòng)。

作者認(rèn)為當(dāng)前的技術(shù)手段嚴(yán)重的限制了預(yù)訓(xùn)練表示的力量楷怒,特別是fine-tuning蛋勺。最主要的限制是標(biāo)準(zhǔn)的語言模型是單向的,這限制了可以被用來做預(yù)訓(xùn)練的結(jié)構(gòu)的選擇鸠删。比如抱完,在OpenAI GPT中,作者使用了從左至右的結(jié)構(gòu)刃泡,其中每一個(gè)字詞在Transformer中的self-attention中只能關(guān)注前一個(gè)字詞巧娱,這種約束對(duì)于句子級(jí)的任務(wù)是一種次優(yōu)的解決方案。并且當(dāng)把fine-tuning應(yīng)用到諸如SQuAD這樣的問答系統(tǒng)中會(huì)造成很嚴(yán)重的錯(cuò)誤烘贴。因?yàn)殡p向的相關(guān)上下文對(duì)這種系統(tǒng)至關(guān)重要禁添。

這篇文章的貢獻(xiàn)主要在于以下幾點(diǎn):

  • 闡述了語言表示雙向與訓(xùn)練的重要性,BERT使用Masked LM (Language Model)來做深度雙向表示預(yù)訓(xùn)練
  • 展示了預(yù)訓(xùn)練表示(BERT)可以消除為任務(wù)設(shè)計(jì)的特定網(wǎng)絡(luò)結(jié)構(gòu)桨踪。BERT是第一個(gè)在大量句子級(jí)和字詞級(jí)任務(wù)中都達(dá)到state-of-the-art結(jié)果的基于微調(diào)的表示模型老翘,比很多任務(wù)特定結(jié)構(gòu)的系統(tǒng)表現(xiàn)得更好
  • BERT在11個(gè)自然語言處理任務(wù)上都得到state-of-the-art結(jié)果。并且闡述了BERT的擴(kuò)展能力

Background

BERT

Model Architecture

BERT的模型結(jié)構(gòu)是一個(gè)多層雙向Transformer锻离。與OpenAI GPT和ELMo的對(duì)比如下圖所示铺峭,它與OpenAI GPT的區(qū)別就在于采用了Transformer Encoder,也就是每個(gè)時(shí)刻的Attention計(jì)算都能夠得到全部時(shí)刻的輸入汽纠,而OpenAI GPT采用了Transformer Decoder卫键,每個(gè)時(shí)刻的Attention計(jì)算只能依賴于該時(shí)刻前的所有時(shí)刻的輸入,因?yàn)镺penAI GPT是采用了單向語言模型虱朵。

image.png
image.png

Input Representation

BERT的輸入為如圖所示三個(gè)部分的求和:

  • token embedding:文章采用的是WordPiece embedding莉炉。
  • segment embedding:在做兩個(gè)序列任務(wù)(比如Q&A)的時(shí)候?qū)Σ煌蛄凶鰳?biāo)識(shí)
  • position embedding:文章對(duì)512長(zhǎng)度的序列都做了position embedding啤呼。由于預(yù)訓(xùn)練的時(shí)候,position embedding的長(zhǎng)度已經(jīng)固定死了呢袱,因此這樣設(shè)定實(shí)際上阻礙了BERT的擴(kuò)展性
image.png
image.png

為了一個(gè)輸入能夠針對(duì)兩個(gè)任務(wù)官扣,輸入構(gòu)造規(guī)則如下:

  1. 為了能夠同時(shí)表示單句子和句子對(duì),多句子(例如QA中的Q/A)需要進(jìn)行拼接作為單個(gè)句子羞福,用segment embedding和[SEG]來進(jìn)行區(qū)分
  2. 句子第一個(gè)token總是有特殊含義惕蹄,例如分類問題中是類別,如果不是分類問題那么就忽略
  3. 三個(gè)embedding進(jìn)行sum得到輸入的向量

Pre-training Tasks

Task #1: Masked LM

現(xiàn)有的語言模型的問題在于治专,沒有同時(shí)利用到Bidirectional信息卖陵,現(xiàn)有的語言模型例如ELMo號(hào)稱是雙向LM(BiLM),但是實(shí)際上是兩個(gè)單向RNN構(gòu)成的語言模型的拼接张峰。

因?yàn)檎Z言模型本身的定義是計(jì)算句子的概率:

p(S)=p\left(w_{1}, w_{2}, w_{3}, \dots, w_{m}\right)
前向RNN構(gòu)成的語言模型計(jì)算的是:
p\left(w_{1}, w_{2}, w_{3}, \dots, w_{m}\right)=\prod_{i=1}^{m} p\left(w_{i} | w_{1}, w_{2}, \ldots, w_{i-1}\right)
而后向RNN構(gòu)成的語言模型計(jì)算的是:
p\left(w_{1}, w_{2}, w_{3}, \ldots, w_{m}\right)=\prod_{i=1}^{m} p\left(w_{i} | w_{i+1}, w_{i+2}, \ldots, w_{m}\right)
也就是當(dāng)前詞的概率只依賴后面出現(xiàn)的詞的概率泪蔫。

那么如何才能同時(shí)利用好前面詞和后面詞的概率呢?BERT提出了Masked Language Model喘批,也就是隨機(jī)去掉句子中的部分token撩荣,然后模型來預(yù)測(cè)被去掉的token是什么。這樣實(shí)際上已經(jīng)不是傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)語言模型(類似于生成模型)了饶深,而是單純作為分類問題餐曹,根據(jù)這個(gè)時(shí)刻的hidden state來預(yù)測(cè)這個(gè)時(shí)刻的token應(yīng)該是什么,而不是預(yù)測(cè)下一個(gè)時(shí)刻的詞的概率分布了敌厘。

這里的操作是隨機(jī)mask語料中15%的token台猴,然后預(yù)測(cè)masked token,那么masked token 位置輸出的final hidden vectors喂給softmax網(wǎng)絡(luò)即可得到masked token的預(yù)測(cè)結(jié)果俱两。

這樣操作存在一個(gè)問題饱狂,fine-tuning的時(shí)候沒有[MASK] token,因此存在pre-training和fine-tuning之間的mismatch宪彩,為了解決這個(gè)問題休讳,采用了下面的策略:

  • 80%的時(shí)間中:將選中的詞用[MASK]token來代替,例如
    my dog is hairy → my dog is [MASK]
    
  • 10%的時(shí)間中:將選中的詞用任意的詞來進(jìn)行代替毯焕,例如
    my dog is hairy → my dog is apple
    
  • 10%的時(shí)間中:選中的詞不發(fā)生變化衍腥,例如
    my dog is hairy → my dog is hairy
    

這樣存在另一個(gè)問題在于在訓(xùn)練過程中只有15%的token被預(yù)測(cè),正常的語言模型實(shí)際上是預(yù)測(cè)每個(gè)token的纳猫,因此Masked LM相比正常LM會(huì)收斂地慢一些,后面的實(shí)驗(yàn)也的確證實(shí)了這一點(diǎn)竹捉。

Task #2: Next Sentence Prediction

很多需要解決的NLP tasks依賴于句子間的關(guān)系芜辕,例如問答任務(wù)等,這個(gè)關(guān)系語言模型是獲取不到的块差,因此將下一句話預(yù)測(cè)作為了第二個(gè)預(yù)訓(xùn)練任務(wù)侵续。該任務(wù)的訓(xùn)練語料是兩句話倔丈,來預(yù)測(cè)第二句話是否是第一句話的下一句話,如下所示

image.png
image.png

fine-tuning

這里fine-tuning之前對(duì)模型的修改非常簡(jiǎn)單状蜗,例如針對(duì)sequence-level classification problem(例如情感分析)需五,取第一個(gè)token的輸出表示,喂給一個(gè)softmax層得到分類結(jié)果輸出轧坎;對(duì)于token-level classification(例如NER)宏邮,取所有token的最后層transformer輸出,喂給softmax層做分類缸血。

總之不同類型的任務(wù)需要對(duì)模型做不同的修改蜜氨,但是修改都是非常簡(jiǎn)單的,最多加一層神經(jīng)網(wǎng)絡(luò)即可捎泻。如下圖所示

image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飒炎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笆豁,更是在濱河造成了極大的恐慌郎汪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闯狱,死亡現(xiàn)場(chǎng)離奇詭異怒竿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扩氢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門耕驰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人录豺,你說我怎么就攤上這事朦肘。” “怎么了双饥?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵媒抠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我咏花,道長(zhǎng)趴生,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任昏翰,我火速辦了婚禮苍匆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棚菊。我一直安慰自己浸踩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布统求。 她就那樣靜靜地躺著检碗,像睡著了一般据块。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上折剃,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天另假,我揣著相機(jī)與錄音,去河邊找鬼怕犁。 笑死边篮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的因苹。 我是一名探鬼主播苟耻,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扶檐!你這毒婦竟也來了凶杖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤款筑,失蹤者是張志新(化名)和其女友劉穎智蝠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奈梳,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杈湾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攘须。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漆撞。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖于宙,靈堂內(nèi)的尸體忽然破棺而出浮驳,到底是詐尸還是另有隱情,我是刑警寧澤捞魁,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布至会,位于F島的核電站,受9級(jí)特大地震影響谱俭,放射性物質(zhì)發(fā)生泄漏奉件。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一昆著、第九天 我趴在偏房一處隱蔽的房頂上張望县貌。 院中可真熱鬧,春花似錦宣吱、人聲如沸窃这。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杭攻。三九已至,卻和暖如春疤坝,著一層夾襖步出監(jiān)牢的瞬間兆解,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工跑揉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锅睛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓历谍,卻偏偏與公主長(zhǎng)得像现拒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子望侈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容