這篇文章介紹Bert季希,但是暫時(shí)還沒(méi)研究完,所以只能分兩部分寫(xiě)幽纷。
這篇文章主要介紹bert的思想和創(chuàng)新點(diǎn)式塌,下一篇文章主要介紹bert的結(jié)構(gòu)。
一定要看論文原文:BERT中文翻譯PDF版
BERT的新語(yǔ)言表示模型友浸,它代表Transformer的雙向編碼器表示峰尝。與最近的其他語(yǔ)言表示模型不同,BERT旨在通過(guò)聯(lián)合調(diào)節(jié)所有層中的上下文來(lái)預(yù)先訓(xùn)練深度雙向表示尾菇。因此境析,預(yù)訓(xùn)練的BERT表示可以通過(guò)一個(gè)額外的輸出層進(jìn)行微調(diào)囚枪,適用于廣泛任務(wù)的最先進(jìn)模型的構(gòu)建,比如問(wèn)答任務(wù)和語(yǔ)言推理劳淆,無(wú)需針對(duì)具體任務(wù)做大幅架構(gòu)修改链沼。谷歌團(tuán)隊(duì)認(rèn)為現(xiàn)有的技術(shù)嚴(yán)重制約了預(yù)訓(xùn)練表示的能力。其主要局限在于標(biāo)準(zhǔn)語(yǔ)言模型是單向的沛鸵,這使得在模型的預(yù)訓(xùn)練中可以使用的架構(gòu)類(lèi)型很有限括勺。
通過(guò)提出BERT:即Transformer的雙向編碼表示來(lái)改進(jìn)基于架構(gòu)微調(diào)的方法。BERT 提出一種新的預(yù)訓(xùn)練目標(biāo):遮蔽語(yǔ)言模型(masked language model曲掰,MLM)疾捍,來(lái)克服上文提到的單向性局限。MLM 隨機(jī)遮蔽模型輸入中的一些 token栏妖,目標(biāo)在于僅基于遮蔽詞的語(yǔ)境來(lái)預(yù)測(cè)其原始詞匯 id乱豆。與從左到右的語(yǔ)言模型預(yù)訓(xùn)練不同,MLM 目標(biāo)允許表征融合左右兩側(cè)的語(yǔ)境吊趾,從而預(yù)訓(xùn)練一個(gè)深度雙向 Transformer宛裕。除了遮蔽語(yǔ)言模型之外,還引入了一個(gè)“下一句預(yù)測(cè)”(next sentence prediction)任務(wù)论泛,可以和MLM共同預(yù)訓(xùn)練文本對(duì)的表示揩尸。
BERT模型具有以下兩個(gè)特點(diǎn):
- 是這個(gè)模型非常的深,12層屁奏,并不寬(wide)岩榆,中間層只有1024,而之前的Transformer模型中間層有2048坟瓢。這似乎又印證了計(jì)算機(jī)圖像處理的一個(gè)觀點(diǎn)——深而窄 比 淺而寬 的模型更好勇边。
- MLM(Masked Language Model),同時(shí)利用左側(cè)和右側(cè)的詞語(yǔ)载绿,這個(gè)在ELMo上已經(jīng)出現(xiàn)了粥诫,絕對(duì)不是原創(chuàng)油航。
輸入表示
bert的輸入表示(input representation)能夠在一個(gè)token序列中明確地表示單個(gè)文本句子或一對(duì)文本句子(例如崭庸, [Question, Answer])。對(duì)于給定token谊囚,其輸入表示通過(guò)對(duì)相應(yīng)的token怕享、segment和position embeddings進(jìn)行求和來(lái)構(gòu)造。下圖是輸入表示的直觀表示:
具體如下:
- 使用WordPiece嵌入(Wu et al., 2016)和30,000個(gè)token的詞匯表镰踏。用##表示分詞函筋。
- 使用學(xué)習(xí)的positional embeddings,支持的序列長(zhǎng)度最多為512個(gè)token奠伪。每個(gè)序列的第一個(gè)token始終是特殊分類(lèi)嵌入([CLS])跌帐。對(duì)應(yīng)于該token的最終隱藏狀態(tài)(即首懈,Transformer的輸出)被用作分類(lèi)任務(wù)的聚合序列表示。對(duì)于非分類(lèi)任務(wù)谨敛,將忽略此向量究履。
- 句子對(duì)被打包成一個(gè)序列。以?xún)煞N方式區(qū)分句子脸狸。首先最仑,用特殊標(biāo)記([SEP])將它們分開(kāi)。其次炊甲,添加一個(gè)learned sentence A嵌入到第一個(gè)句子的每個(gè)token中泥彤,一個(gè)sentence B嵌入到第二個(gè)句子的每個(gè)token中。
- 對(duì)于單個(gè)句子輸入卿啡,只使用 sentence A嵌入吟吝。
Masked LM
從直覺(jué)上看,深度雙向模型比left-to-right 模型或left-to-right and right-to-left模型的淺層連接更強(qiáng)大颈娜。遺憾的是盔憨,標(biāo)準(zhǔn)條件語(yǔ)言模型只能從左到右或從右到左進(jìn)行訓(xùn)練,因?yàn)殡p向條件作用將允許每個(gè)單詞在多層上下文中間接地“see itself”腺阳。
為了訓(xùn)練一個(gè)深度雙向表示(deep bidirectional representation)缘圈,谷歌采用了一種簡(jiǎn)單的方法,即隨機(jī)屏蔽(masking)部分輸入token野崇,然后只預(yù)測(cè)那些被屏蔽的token称开。他們將這個(gè)過(guò)程稱(chēng)為“masked LM”(MLM),盡管在文獻(xiàn)中它經(jīng)常被稱(chēng)為Cloze任務(wù)(Taylor, 1953)乓梨。
在這個(gè)例子中鳖轰,與masked token對(duì)應(yīng)的最終隱藏向量被輸入到詞匯表上的輸出softmax中,就像在標(biāo)準(zhǔn)LM中一樣扶镀。在谷歌所有實(shí)驗(yàn)中蕴侣,隨機(jī)地屏蔽了每個(gè)序列中15%的WordPiece token。與去噪的自動(dòng)編碼器(Vincent et al.臭觉, 2008)相反昆雀,只預(yù)測(cè)masked words而不是重建整個(gè)輸入。
雖然這確實(shí)能獲得雙向預(yù)訓(xùn)練模型蝠筑,但這種方法有兩個(gè)缺點(diǎn)狞膘。
首先,預(yù)訓(xùn)練和finetuning之間不匹配什乙,因?yàn)樵趂inetuning期間從未看到[MASK]token挽封。為了解決這個(gè)問(wèn)題,并不總是用實(shí)際的[MASK]token替換被“masked”的詞匯臣镣。相反辅愿,訓(xùn)練數(shù)據(jù)生成器隨機(jī)選擇15%的token智亮。例如在這個(gè)句子“my dog is hairy”中,它選擇的token是“hairy”点待。
然后鸽素,執(zhí)行以下過(guò)程:數(shù)據(jù)生成器將執(zhí)行以下操作,而不是始終用[MASK]替換所選單詞:
80%的時(shí)間:用[MASK]標(biāo)記替換單詞亦鳞,例如馍忽,my dog is hairy → my dog is [MASK]
10%的時(shí)間:用一個(gè)隨機(jī)的單詞替換該單詞,例如燕差,my dog is hairy → my dog is apple
10%的時(shí)間:保持單詞不變遭笋,例如,my dog is hairy → my dog is hairy.
這樣做的目的是將表示偏向于實(shí)際觀察到的單詞徒探。Transformer encoder不知道它將被要求預(yù)測(cè)哪些單詞或哪些單詞已被隨機(jī)單詞替換瓦呼,因此它被迫保持每個(gè)輸入token的分布式上下文表示。此外测暗,因?yàn)殡S機(jī)替換只發(fā)生在所有token的1.5%(即15%的10%)央串,這似乎不會(huì)損害模型的語(yǔ)言理解能力。使用MLM的第二個(gè)缺點(diǎn)是每個(gè)batch只預(yù)測(cè)了15%的token碗啄,這表明模型可能需要更多的預(yù)訓(xùn)練步驟才能收斂质和。谷歌證明MLM的收斂速度略慢于 left-to-right的模型(預(yù)測(cè)每個(gè)token),但MLM模型在實(shí)驗(yàn)上獲得的提升遠(yuǎn)遠(yuǎn)超過(guò)增加的訓(xùn)練成本稚字。
下一句預(yù)測(cè)
許多重要的下游任務(wù)饲宿,如問(wèn)答(QA)和自然語(yǔ)言推理(NLI)都是基于理解兩個(gè)句子之間的關(guān)系,這并沒(méi)有通過(guò)語(yǔ)言建模直接獲得胆描。
在為了訓(xùn)練一個(gè)理解句子的模型關(guān)系瘫想,預(yù)先訓(xùn)練一個(gè)二進(jìn)制化的下一句測(cè)任務(wù),這一任務(wù)可以從任何單語(yǔ)語(yǔ)料庫(kù)中生成昌讲。
具體地說(shuō)国夜,當(dāng)選擇句子A和B作為預(yù)訓(xùn)練樣本時(shí),B有50%的可能是A的下一個(gè)句子短绸,也有50%的可能是來(lái)自語(yǔ)料庫(kù)的隨機(jī)句子车吹。例如:
Input = [CLS] the man went to [MASK] store [SEP]
he bought a gallon [MASK] milk [SEP]
Label = IsNext
Input = [CLS] the man [MASK] to the store [SEP]
penguin [MASK] are flight ##less birds [SEP]
Label = NotNext
這里完全隨機(jī)地選擇了NotNext語(yǔ)句,最終的預(yù)訓(xùn)練模型在此任務(wù)上實(shí)現(xiàn)了97%-98%的準(zhǔn)確率鸠按。
可以說(shuō)MLM和下一句預(yù)測(cè)是bert最大的創(chuàng)新方法礼搁,但是,bert之所以能大規(guī)模屠榜目尖,和其超大訓(xùn)練集是分不開(kāi)的,而這種大規(guī)模訓(xùn)練方法扎运,一般公司和團(tuán)體也玩不起瑟曲。所以饮戳,有錢(qián)才是爸爸。
下篇我們繼續(xù)磕BERT洞拨。