BERT 通過改變 NLP 模型的訓(xùn)練方式迎來了 NLP 領(lǐng)域的 ImageNet 時(shí)刻。自此之后的預(yù)訓(xùn)練模型分別嘗試從mask 范圍,多語言,下文預(yù)測(cè),模型輕量化,預(yù)訓(xùn)練方式,模型大小,多任務(wù)等方向謀求新突破,有的效果明顯,有的只是大成本小收益。
自 2018 年 BERT 提出之后,各種預(yù)訓(xùn)練模型層出不窮,模型背后的著眼點(diǎn)也各有不同,難免讓人迷糊。本文旨在從以下幾個(gè)方面探討系列 Transformers 研究方向:
擴(kuò)大遮罩范圍(MaskedLM)
下文預(yù)測(cè)(NextSentencePrediction)
其他預(yù)訓(xùn)練方式
輕量化
多語言
越大越好?
多任務(wù)
要說 BERT 為什么性能卓越,主要是它改變了 NLP 模型的訓(xùn)練方式。先在大規(guī)模語料上訓(xùn)練出一個(gè)語言模型,然后將這個(gè)模型用在閱讀理解/情感分析/命名實(shí)體識(shí)別等下游任務(wù)上
Yann LeCun 將 BERT 的學(xué)習(xí)方式稱為“自監(jiān)督學(xué)習(xí)”,強(qiáng)調(diào)模型從輸入內(nèi)容中學(xué)習(xí),又對(duì)其中部分內(nèi)容進(jìn)行預(yù)測(cè)的特點(diǎn)。而 BERT 本身實(shí)際算是是基于 Transformer 編碼器部分改進(jìn)而來的多任務(wù)模型,會(huì)同時(shí)執(zhí)行遮罩語言模型學(xué)習(xí)以及下文預(yù)測(cè)任務(wù),以此習(xí)得潛藏語義。
擴(kuò)大遮罩范圍改進(jìn) MaskedLM
遮罩語言模型里的“遮罩”,通常是分詞后一小段連續(xù)的 MASK 標(biāo)記
相比于從上下文中猜整個(gè)詞,給出 ##eni 和 ##zation 猜到 tok 顯然更容易些。
也正因單詞自身標(biāo)識(shí)間的聯(lián)系和詞與詞間的聯(lián)系不同,所以 BERT 可能學(xué)不到詞語詞間的相關(guān)關(guān)系。而只是預(yù)測(cè)出詞的一部分也沒什么意義,預(yù)測(cè)出整個(gè)詞才能學(xué)到更多語義內(nèi)容。所以拓展遮罩范圍就顯得十分重要了:
字詞級(jí)遮罩——WWM
短語級(jí)遮罩——ERNIE
縮放到特定長(zhǎng)度——N-gram 遮罩/ Span 遮罩
短語級(jí)遮罩使用時(shí)得額外提供短語列表,但加上這樣的人工信息可能會(huì)干擾模型導(dǎo)致偏差。T5 嘗試了不同跨度的遮罩,似乎長(zhǎng)一些的會(huì)好點(diǎn)
可以看到初期擴(kuò)大跨度是有效的,但不是越長(zhǎng)越好。SpanBERT 有一個(gè)更好的解決方案,通過概率采樣降低對(duì)過長(zhǎng)遮罩的采納數(shù)量。
從 SpanBERT 的實(shí)驗(yàn)結(jié)果來看隨機(jī)跨度效果不錯(cuò)
此外,也有模型嘗試改進(jìn)遮罩比例。Google 的 T5 嘗試了不同的遮罩比例,意外的是替代項(xiàng)都不如原始設(shè)置表現(xiàn)好
下文預(yù)測(cè)
準(zhǔn)確地講應(yīng)該是下一句預(yù)測(cè)(NextSentencePrediction,NSP),通過判斷兩個(gè)句子間是否是上下文相關(guān)的來學(xué)習(xí)句子級(jí)知識(shí)。從實(shí)驗(yàn)結(jié)果來看,BERT 并沒有帶來明顯改進(jìn)
BERT 的欠佳表現(xiàn)給了后來者機(jī)會(huì),幾乎成了兵家必爭(zhēng)之地。XLNET / RoBERTa / ALBERT 等模型都在這方面進(jìn)行了嘗試
RoBERTa
ALBERT
XLNet
可以看出 NSP 帶來的更多的是消極影響。這可能是 NSP 任務(wù)設(shè)計(jì)不合理導(dǎo)致的——負(fù)樣本是從容易辨析的其他文檔中抽出來的,這導(dǎo)致不僅沒學(xué)到知識(shí)反而引入了噪聲。同時(shí),NSP 將輸入分成兩個(gè)不同的句子,缺少長(zhǎng)語句樣本則導(dǎo)致 BERT 在長(zhǎng)句子上表現(xiàn)不好。
其他預(yù)訓(xùn)練方式
NSP 表現(xiàn)不夠好,是不是有更好的預(yù)訓(xùn)練方式呢?各家都進(jìn)行了各種各樣的嘗試,私以為對(duì)多種預(yù)訓(xùn)練任務(wù)總結(jié)的最好的是 Google 的 T5 和 FaceBook 的 BART
T5 的嘗試
BART 的嘗試
各家一般都選語言模型作為基線,而主要的嘗試方向有
擋住部分標(biāo)識(shí),預(yù)測(cè)遮擋內(nèi)容
打亂句子順序,預(yù)測(cè)正確順序
刪掉部分標(biāo)識(shí),預(yù)測(cè)哪里被刪除了
隨機(jī)挑選些標(biāo)識(shí),之后將所有內(nèi)容前置,預(yù)測(cè)哪里是正確的開頭
加上一些標(biāo)識(shí),預(yù)測(cè)哪里要?jiǎng)h
替換掉一些標(biāo)識(shí),預(yù)測(cè)哪里是被替換過的
試驗(yàn)結(jié)果如下
實(shí)驗(yàn)表明遮罩模型就是最好的預(yù)訓(xùn)練方法。要想效果更好點(diǎn),更長(zhǎng)的遮罩和更長(zhǎng)的輸入語句似乎是個(gè)不錯(cuò)的選擇。而為了避免泄露具體擋住了多少個(gè)詞,每次只能標(biāo)記一個(gè)遮罩,對(duì)一個(gè)或多個(gè)詞做預(yù)測(cè)
輕量化
BERT 模型本身非常大,所以為了運(yùn)行更快,模型輕量化也是一大研究方向。一網(wǎng)打盡所有 BERT 壓縮方法[1]對(duì)此有細(xì)致描述,主要分幾個(gè)方向:
修剪——?jiǎng)h除部分模型,刪掉一些層 / heads 等
矩陣分解——對(duì)詞表 / 參數(shù)矩陣進(jìn)行分解
知識(shí)蒸餾——師生結(jié)構(gòu),在其他小模型上學(xué)習(xí)
參數(shù)共享——層與層間共享權(quán)重
多語言
數(shù)據(jù)集在不同語言間分布的非常不均勻,通常是英語數(shù)據(jù)集很多,其他語言的相對(duì)少些,繁體中文的話問題就更嚴(yán)重了。而 BERT 的預(yù)訓(xùn)練方法并沒有語言限制,所以就有許多研究試圖喂給預(yù)訓(xùn)練模型更多語言數(shù)據(jù),期望能在下游任務(wù)上取得更好的成績(jī)。
谷歌的 BERT-Multilingual 就是一例,在不添加中文數(shù)據(jù)的情況下,該模型在下游任務(wù)上的表現(xiàn)已經(jīng)接近中文模型
有研究[2]對(duì)多語言版 BERT 在 SQuAD(英語閱讀理解任務(wù))和 DRCD(中文閱讀理解任務(wù))上進(jìn)行了測(cè)試。最終證明可以取得接近 QANet 的效果,同時(shí)多語言模型不用將數(shù)據(jù)翻譯成統(tǒng)一語言,這當(dāng)然要比多一步翻譯過程的版本要好。
從上面的結(jié)果可以看出無論是用 Embedding 還是 Transformer 編碼器,BERT 都學(xué)到了不同語言間的內(nèi)在聯(lián)系。另有研究[3]專門針對(duì) BERT 聯(lián)通不同語言的方式進(jìn)行了分析。
首先,在相同的 TLM 預(yù)訓(xùn)練模型中對(duì)不同語言建立關(guān)聯(lián)
然后,通過控制是否共享組件來分析哪個(gè)部分對(duì)結(jié)果影響最大
結(jié)果是模型間共享參數(shù)是關(guān)鍵
這是因?yàn)?BERT 是在學(xué)習(xí)詞和相應(yīng)上下文環(huán)境的分布,不同語言間含義相同的詞,其上下文分布應(yīng)該很接近
而 BERT 的參數(shù)就是在學(xué)習(xí)期間的分布,所以也就不難理解模型在多語言間遷移時(shí)的驚人表現(xiàn)了
越大越好?
盡管 BERT 采用了大模型,但直覺上數(shù)據(jù)越多,模型越大,效果也就應(yīng)該更好。所以很多模型以此為改進(jìn)方向
T5 更是憑借 TPU 和金錢的魔力攀上頂峰
然而更大的模型似乎并沒有帶來太多的回報(bào)
所以,簡(jiǎn)單增大模型規(guī)模并不是最高效的方法。
此外,選用不同的訓(xùn)練方法和目標(biāo)也是一條出路。比如,ELECTRA 采用新型訓(xùn)練方法保證每個(gè)詞都能參與其中,從而使得模型能更有效地學(xué)習(xí)表示(representation)
ALBERT 使用參數(shù)共享降低參數(shù)量,但對(duì)性能沒有顯著影響
多任務(wù)
BERT 是在預(yù)訓(xùn)練時(shí)使用多任務(wù),我們同樣可以在微調(diào)時(shí)使用多任務(wù)。微軟的用于自然語言理解的多任務(wù)深度神經(jīng)網(wǎng)絡(luò)[4](MTDNN)就是這么做的
相交于 MTDNN,GPT-2 更加激進(jìn):不經(jīng)微調(diào)直接用模型學(xué)習(xí)一切,只用給一個(gè)任務(wù)標(biāo)識(shí),其余的交給模型。效果出眾但仍稱不上成功
T5 對(duì)此做了平衡
谷歌的 T5 類似于 GPT-2,訓(xùn)練一個(gè)生成模型來回答一切問題。同時(shí)又有點(diǎn)像 MTDNN,訓(xùn)練時(shí)模型知道它是在同時(shí)解決不同問題,它是一個(gè)訓(xùn)練/微調(diào)模型
同時(shí),大體量預(yù)訓(xùn)練模型都面臨相同的兩個(gè)難題:數(shù)據(jù)不均衡和訓(xùn)練策略選定
不均衡數(shù)據(jù)
不同任務(wù)可供使用的數(shù)據(jù)量是不一致的,這導(dǎo)致數(shù)據(jù)量小的任務(wù)表現(xiàn)會(huì)很差。數(shù)據(jù)多的少采樣,數(shù)據(jù)少的多采樣是一種解決思路。BERT 對(duì)多語言訓(xùn)練采用的做法就是一例
為平衡這兩個(gè)因素,訓(xùn)練數(shù)據(jù)生成(以及 WordPiece 詞表生成)過程中,對(duì)數(shù)據(jù)進(jìn)行指數(shù)平滑加權(quán)。換句話說,假如一門語言的概率是
,比如 意味著在混合了所有維基百科數(shù)據(jù)后, 21% 的數(shù)據(jù)是英文的。我們通過因子 S 對(duì)每個(gè)概率進(jìn)行指數(shù)運(yùn)算并重新歸一化,之后從中采樣。我們的實(shí)驗(yàn)中, ,所以像英語這樣的富文本語言會(huì)被降采樣,而冰島語這樣的貧文本語言會(huì)過采樣。比如,原始分布中英語可能是冰島語的 1000 倍,平滑處理后只有 100 倍
訓(xùn)練策略
無監(jiān)督預(yù)訓(xùn)練+微調(diào):在 T5 預(yù)訓(xùn)練后對(duì)各任務(wù)進(jìn)行微調(diào)
多任務(wù)訓(xùn)練:所有任務(wù)和 T5 預(yù)訓(xùn)練一同訓(xùn)練學(xué)習(xí),并直接在各任務(wù)上驗(yàn)證結(jié)果
多任務(wù)預(yù)訓(xùn)練+微調(diào):所有任務(wù)和 T5 預(yù)訓(xùn)練一同訓(xùn)練學(xué)習(xí),然后對(duì)各任務(wù)微調(diào)訓(xùn)練數(shù)據(jù),再驗(yàn)證結(jié)果
留一法多任務(wù)訓(xùn)練:T5 預(yù)訓(xùn)練和目標(biāo)任務(wù)外的所有任務(wù)一同進(jìn)行多任務(wù)學(xué)習(xí),然后微調(diào)目標(biāo)任務(wù)數(shù)據(jù)集,再驗(yàn)證結(jié)果
有監(jiān)督多任務(wù)預(yù)訓(xùn)練:在全量數(shù)據(jù)上進(jìn)行多任務(wù)訓(xùn)練,然后對(duì)各任務(wù)微調(diào)結(jié)果
可以看到先在海量數(shù)據(jù)上進(jìn)行訓(xùn)練,然后對(duì)特定任務(wù)數(shù)據(jù)進(jìn)行微調(diào)可以緩解數(shù)據(jù)不平衡問題。
審核編輯 :李倩
-
編碼器
+關(guān)注
關(guān)注
44文章
3529瀏覽量
133312 -
模型
+關(guān)注
關(guān)注
1文章
3032瀏覽量
48366 -
nlp
+關(guān)注
關(guān)注
1文章
481瀏覽量
21935
原文標(biāo)題:BERT 之后的故事
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論