預(yù)訓(xùn)練模型發(fā)展史

以下根據(jù)車萬翔老師 CCL2019 報告整理涡尘。

目錄:
一、傳統(tǒng)詞向量預(yù)訓(xùn)練:NNLM响迂、SENNA考抄、Word2Vec
二、上下文相關(guān)詞向量:CoVe蔗彤、ELMo
三川梅、NLP中的預(yù)訓(xùn)練模型:GPT、BERT然遏、BERT改進(jìn)(RoBERTa贫途、XLNet、ALBERT等)
四待侵、預(yù)訓(xùn)練模型的應(yīng)用:精調(diào)丢早、多任務(wù)學(xué)習(xí)、小樣本學(xué)習(xí)
五秧倾、預(yù)訓(xùn)練模型的分析:下游任務(wù)怨酝、級聯(lián)任務(wù)、上下文詞向量那先、注意力探針
六农猬、預(yù)訓(xùn)練模型的挑戰(zhàn)

預(yù)訓(xùn)練模型

一、傳統(tǒng)詞向量預(yù)訓(xùn)練

1胃榕、什么是詞向量盛险?

一個詞用一個向量去表示。傳統(tǒng)的方法是用one-hot向量表示勋又,就是給每個詞都給一個編號苦掘,one-hot詞向量就是以編號為下標(biāo)的值為1,其余為0楔壤,導(dǎo)致嚴(yán)重的數(shù)據(jù)稀疏鹤啡、離散、正交等問題蹲嚣。詞袋模型就是每一個詞對應(yīng)的位置递瑰,按照數(shù)量不斷加一,好處是容易獲取和計算隙畜,但是忽略了詞序信息抖部。

2、如何解決傳統(tǒng)詞向量帶來的數(shù)據(jù)稀疏問題议惰?

傳統(tǒng)解決方案

(1)增加額外特征

增加詞性慎颗、前后綴等這些更泛化的屬性。比如提取出tion,知道含有tion的都是名詞俯萎,能夠表示更多的信息傲宜。

(2)語義詞典

樹形結(jié)構(gòu),給每個詞一個編號夫啊,如果兩個詞比較像函卒,其編號在樹上表示的距離就比較近。較符合人的直覺撇眯,但是有兩個問題:一报嵌,無法解決一詞多義。比如Apple指水果叛本,就和香蕉近沪蓬;指手機,就和華為近来候。如果用詞典跷叉,不好解決這個問題。二营搅,更新慢云挟,生成速度慢

(3) Brown Clustering

不是很受重視。上面兩個都是人靠語言習(xí)慣转质,靠直覺想出來的园欣。這個方法是通過文本對詞進(jìn)行自動聚類。給一個詞休蟹,0/1編號沸枯,前面0越多,兩個詞越像赂弓。

3绑榴、除了詞自身表示之外,是否可以用其他信息表示這個詞盈魁?

上面的想法都是想用這個詞本身來表示詞義信息翔怎。典型的例子:一個詞的含義可以由它周圍的詞決定。叫做詞的分布語義假設(shè)杨耙。

詞的分布表示

(1)如何表示赤套?

統(tǒng)計一個大的語料庫,統(tǒng)計共現(xiàn)的所有的詞的信息珊膜。比如moon和shinning共同出現(xiàn)了38容握,那這里表示為38.這樣表示出來的向量可以用余弦計算相似度。但也存在高維车柠、稀疏唯沮、離散的問題脖旱,因為詞表可能很大堪遂,但是真正共現(xiàn)的可能占一小部分介蛉。

(2)如何解決高維、稀疏溶褪、離散的問題币旧?

  • 加權(quán)
    • TF-IDF:把常用的詞,語義信息不太豐富的詞猿妈,如的吹菱、了等,給它權(quán)重很低
    • PMI
  • 降維
    • SVD分解:也可以實現(xiàn)降維彭则。優(yōu)點是可解釋性強鳍刷,比如moon,每一維我們都知道是哪個詞俯抖。但是缺點:更新慢输瓜,更新詞表時,比如新來了語料庫芬萍,必須和原來的語料庫混在一起重新計算尤揣,速度慢;且不容易擴展柬祠,比如要表示一個短語或句子北戏,就不能把這些向量直接加起來。
    • LDA

5漫蛔、更好的解決方法——分布式

用詞的分布式來表示嗜愈,就是常說的word embedding。直接用一個低維的莽龟、稠密的蠕嫁、連續(xù)的向量表示一個詞。如何獲得這樣的表示是研究重點轧房。

分布式詞表示
  • 這個工作最早是在2003年有Bengio等提出的拌阴,叫Nerual Network Language Models.
NNLM

提出了word embedding的概念,但本質(zhì)上還是做語言模型奶镶,估計一個序列的概率迟赃,分解成估計下一個詞的分布,用這個序列之前的信息厂镇。這個模型要干的事情就是根據(jù)前n-1個詞預(yù)測第n個詞纤壁,前面n-1個詞本來每個詞都是離散的,然后把它映射成一個分布式表示的向量捺信,然后把這些向量拼起來酌媒,然后過一個神經(jīng)網(wǎng)絡(luò)欠痴,然后就可以預(yù)測下一個詞是什么(softmax的輸出是一個詞表,每個位置是第i個詞為目標(biāo)詞的概率)秒咨。雖然這個模型是使語言模型估計更準(zhǔn)喇辽,但是有個副產(chǎn)物:word embedding。通過反向傳播的方法雨席,同時能把一個詞的表示學(xué)好菩咨。也就是這個詞的表示越好,這個語言模型的效果就越好陡厘。

  • 另一個典型的工作是SENNA抽米,是2011年提出來的。
SENNA

也是說用一個向量表示一個詞糙置。為什么說這個工作重要呢云茸?是最早將深度學(xué)習(xí)應(yīng)用于自然語言處理的工作。他提出了一個思想是——換詞谤饭,與語言模型不同标捺。就是我把一個正常句子中的一個詞給他隨機替換掉,替換后句子顯然不符合正常語言習(xí)慣网持。這樣的句子構(gòu)成了一個反例宜岛,原來的句子構(gòu)成了一個正例。如果我能夠?qū)@兩個句子進(jìn)行打分功舀,讓正的分比負(fù)的分高萍倡,這就是要學(xué)習(xí)的目標(biāo)。從中辟汰,也會把word embedding學(xué)好列敲,學(xué)好的word embedding也會應(yīng)用于其他任務(wù)。但是由于當(dāng)時條件訓(xùn)練一個月帖汞,且數(shù)據(jù)量不足戴而,沒有引起很大重視。

  • 是否有更有效的方式翩蘸?一種思想是簡化模型所意,增加語料,提升模型訓(xùn)練效率催首。由此產(chǎn)生了Word2Vec.
word2vec

就是把模型做的特別簡單扶踊,就一層的線形模型,用這個模型去做詞的預(yù)測郎任,數(shù)據(jù)量用的很大秧耗,從而彌補了模型的不足。之后這個模型作為了很多NLP任務(wù)的初始化輸入舶治,得到很大的應(yīng)用分井。比如詞義相似度計算车猬、類比關(guān)系計算、知識圖譜補全尺锚、推薦系統(tǒng)等珠闰。

  • 但是還沒有解決一詞多義的問題。

二缩麸、上下文相關(guān)詞向量

上面的工作沒有很好的解決一詞多義的問題铸磅。比如土豆(食物 or 視頻網(wǎng)站)。希望根據(jù)不同上下文來賦予這個詞不同的含義杭朱。我們?nèi)绾沃肋@個詞在當(dāng)前這個環(huán)境下是什么含義?這個比較難吹散。

1弧械、基于雙語的詞義向量表示

基于雙語的詞義向量表示

車?yán)蠋熃M在2014年提出了,在單語上獲得含義比較難空民,因為只看詞本身刃唐,他們長得都一樣。其實可以利用雙語資料界轩。因為有大量的雙語語句對画饥,比如第一個翻譯為potatoes,另一個是TuDou浊猾。他們的工作是把漢語翻譯成英語抖甘,然后在英語中做聚類。然后回過頭來再映射到漢語葫慎,標(biāo)注這個詞到底是什么樣的含義衔彻,然后再學(xué)一個語言模型等,訓(xùn)練出來帶詞意的詞向量偷办。

2艰额、CoVe

Cove

最早提出的基于上下文的詞意表示,直接做一個NMT模型椒涯,從一種語言翻譯到另外一種語言柄沮,用的是encoder部分,把encoder拿出來废岂,每一個詞encoder的結(jié)果祖搓,就是這個詞上下文的表示,然后用上下文的表示結(jié)合以前固定的embedding泪喊,就可以做上游任務(wù)棕硫。

3、ELMo

ELMo

雖然雙語效果不錯袒啼,但是語料很有限哈扮,是否可以基于單語來訓(xùn)練模型纬纪,就有了ELMo。ELMo是“Embedding from Language Models”的簡稱滑肉。它的模型架構(gòu)就是一個雙向LSTM的LM模型包各。ELMo是為了解決一次多意性,對于不同的上下文可以給出不同的詞向量靶庙。

用語言模型來做預(yù)訓(xùn)練的任務(wù)问畅,用語言模型訓(xùn)練出來每個詞的embedding,可以作為上下文相關(guān)的詞的向量六荒。其他幾個貢獻(xiàn):

  • 使用字符級別的CNN表示护姆。由于單詞級別考慮數(shù)據(jù)可能稀疏,出現(xiàn)OOV問題掏击,拆成字符后稀疏性沒有那么強了卵皂,刻畫的會更好。
  • 訓(xùn)練了從左到右或從右到左的語言模型砚亭。用這個語言模型輸出的結(jié)果灯变,直接作為詞的向量。
  • contextualized:這是一個語言模型捅膘,其雙向LSTM產(chǎn)生的詞向量會包含左側(cè)上文信息和右側(cè)下文信息添祸,所以稱之為contextualized
  • deep:句子中每個單詞都能得到對應(yīng)的三個Embedding:最底層是單詞的Word Embedding,往上走是第一層雙向LSTM中對應(yīng)單詞位置的Embedding寻仗,這層編碼單詞的句法信息更多一些刃泌;再往上走是第二層LSTM中對應(yīng)單詞位置的Embedding,這層編碼單詞的語義信息更多一些愧沟。
  • 好處是訓(xùn)練數(shù)據(jù)接近無限蔬咬。

缺點:

  • LSTM不能解決長距離依賴
  • 雙向LSTM的輸出直接拼接得到embedding,沒有進(jìn)行深度融合沐寺。

為什么有效林艘?解決了未登錄詞的問題。

Q:什么是未登錄詞混坞?
A:新來的詞語狐援,詞表中沒有的。因為是字符級別的建模究孕,因此把新來的詞拆成字符就可生成embedding啥酱。

三、NLP中的預(yù)訓(xùn)練模型

前面的方法不能算是我們現(xiàn)在所說的預(yù)訓(xùn)練模型厨诸。因為上面的模型訓(xùn)練出來的詞向量/詞的表示镶殷,在做其他任務(wù)時作為一個額外的輸入,是不變的微酬;而預(yù)訓(xùn)練模型是整個模型的結(jié)構(gòu)就是為了用來做目標(biāo)任務(wù)的绘趋,我在進(jìn)行目標(biāo)任務(wù)的同時颤陶,還回過頭來進(jìn)行fine-tune,更好的把我當(dāng)前的任務(wù)/模型進(jìn)行精調(diào)陷遮。這是兩者的區(qū)別滓走。

1、GPT

GPT

GPT是“Generative Pretrained Transformer”的簡稱帽馋。

最早的預(yù)訓(xùn)練模型搅方。有幾個特點/想法:

  • 首次用到了Transformer,進(jìn)行更好的encoder绽族。ELMo更多用的是LSTM姨涡,而LSTM對長序列的建模效果不是特別好。
  • 在目標(biāo)任務(wù)上進(jìn)行精調(diào)项秉。當(dāng)然就可以設(shè)計或者規(guī)定幾種目標(biāo)任務(wù)绣溜,比如分類問題(一個句子屬于哪一類)、Entailment(兩個句子之間什么關(guān)系)娄蔼、Similarity(兩個文本相似度)、多選題等等底哗。獲得了比ELMo更好的結(jié)果岁诉。

缺點:

  • GPT本質(zhì)上還是一個從左到右,前向的語言模型跋选,只考慮了前面的信息涕癣,是單向的。這個語言模型就是我要預(yù)測下一個是什么前标。我在預(yù)測下一個詞的時候是看不到后面的詞是什么坠韩,沒有捕捉后文更多的信息。當(dāng)然這是語言模型固有的一個問題炼列。
  • 因此出現(xiàn)了BERT只搁。

2、BERT

BERT

(1)BERT模型

可以看到BERT和GPT的一個很大的區(qū)別是俭尖,BERT是雙向的氢惋。就是我挖掉幾個詞,在猜這幾個詞的時候我不光用到前面的詞稽犁,還會用到后面的信息焰望。詳細(xì)看一下BERT模型。

BERT
  • 輸入:不是簡單的詞已亥,把word變成word piece熊赖,把一個長的詞切成幾個片段,比如:friendly-> friend+ly虑椎;漢語更簡單震鹉,直接用字就可以俱笛。
  • 編碼:Transformer;
  • 預(yù)訓(xùn)練任務(wù):除了剛剛講的足陨,還有完形填空+下句預(yù)測嫂粟。本來文本中兩個句子連在一起,把下一句隨機替換掉墨缘,替換之后模型需要能判斷這是原始的還是替換的星虹。
  • 訓(xùn)練方法:MLM
  • 應(yīng)用方式:四種任務(wù):分類镊讼、詞pair判斷等

因為BERT提高了好多任務(wù)的效果,刷新了11項NLP任務(wù)的最優(yōu)記錄卸亮,因此影響比較大。但是BERT也存在一些缺點:

BERT存在哪些優(yōu)缺點玩裙?

  • 自回歸語言模型 v.s. 自編碼語言模型: BERT實際上是自編碼語言模型,而其使用的Masked LM正是訓(xùn)練這種模型的技術(shù)溶诞,但是這必然會導(dǎo)致<font color=green>預(yù)訓(xùn)練和Fine-tune階段的不一致</font>。尤其是在生成任務(wù)上决侈,生成任務(wù)就是根據(jù)已生成的單詞以及一些外部知識螺垢,生成下一個單詞枉圃,這和自回歸語言模型天然匹配庐冯,但是和BERT的自編碼語言模型天然矛盾。所以BERT不適合做生成任務(wù)墨林。
  • Transformer模型限制:Transformer需要把文本裁剪為固定長度犯祠,導(dǎo)致無法獲得更長時間的依賴衡载,輸入也不靈活雏婶。
  • 無法文檔級別的NLP任務(wù)宾添,只適合于句子和段落級別的任務(wù)。

(2)BERT的改進(jìn)

正是因為BERT有這些缺點娜饵,所以在BERT出現(xiàn)后大家基于BERT箱舞,提出的改進(jìn)策略。大概總結(jié)了六個方向拳亿。

a. 使用其他預(yù)訓(xùn)練目標(biāo)

BERT有六個預(yù)訓(xùn)練任務(wù):分類問題、Entailment(兩個句子之間什么關(guān)系)电湘、Similarity寂呛、多選題瘾晃、完形填空酗捌、下一句預(yù)測涌哲。

為了增強模型的效果阀圾,在預(yù)訓(xùn)練階段強迫加入更難的預(yù)訓(xùn)練任務(wù),讓模型學(xué)到更好的信息涡真。

  • ERNIE(百度):首先預(yù)測word piece的任務(wù)難度不是很大哆料,比如“哈”和“濱”吗铐,預(yù)測中間的爾還是比較容易的唬渗,預(yù)訓(xùn)練難度不是很大奋渔。什么比較難呢嫉鲸?就是把整個詞挖掉玄渗,預(yù)測整個詞染突,份企。比如***是黑龍江的省會,來預(yù)測這個空填哈爾濱甜紫,提出了這種基于詞或者說實體的預(yù)訓(xùn)練任務(wù)囚霸。效果顯示很有效激才。
    后來提出了ERNIE2.0版本瘸恼,提出了更多預(yù)訓(xùn)練任務(wù)东帅。比如英文,來預(yù)測這個字母是否是大寫字母帐我;或者句子的reordering拦键,就是把文章句子順序打亂扇调,讓你判斷句子是不是散亂的;或者discourse relation捡絮,讓你判斷句子是什么關(guān)系福稳,是順承關(guān)系瑞侮、因果關(guān)系還是轉(zhuǎn)折關(guān)系半火,這個信息通過關(guān)鍵詞還是能夠獲得的钮糖。這些預(yù)訓(xùn)練任務(wù)逼迫模型學(xué)習(xí)更復(fù)雜的信息,除了簡單的語法信息外阎抒,還可以學(xué)語義信息等等且叁。
  • SpanBERT(Facebook):想法是:不是只挖掉某一個word piece秩伞,而是挖掉一段詞纱新,挖掉后用剩余片段的邊界來預(yù)測段落中的每個詞怒炸,這樣可以逼迫模型去學(xué)習(xí)更長的信息阅羹。獲得很好的效果教寂。比如基于段抽取的任務(wù)酪耕,如抽取式問答中取得良好效果。
  • MASS(微軟):基于Span的思想看尼,是否可以不僅能預(yù)測中間的一些詞是什么藏斩,也可以生成中間的詞狰域。挖掉一段文字兆览,然后用剩余部分,用是Seq2Seq模型去預(yù)測當(dāng)前被挖掉的詞所在的序列是什么子巾。好處:不僅學(xué)習(xí)了被挖掉的詞的表示砰左,同時還可以預(yù)訓(xùn)練Decoder部分缠导,Decoder好才能預(yù)測更準(zhǔn)溉痢。好處是現(xiàn)在的BERT可能不太好處理生成的任務(wù)孩饼,在生成任務(wù)上不太好做預(yù)訓(xùn)練镀娶,MASS可以預(yù)訓(xùn)練生成任務(wù)梯码,比如在機器翻譯中取得很好效果。

上面的模型是增加其他預(yù)訓(xùn)練目標(biāo)儿奶,逼迫模型去做更復(fù)雜的預(yù)測闯捎,從而提高模型整體的效果瓤鼻。

b. 融入知識圖譜

大概分為兩個方向:實體的生成,實體與實體之間的關(guān)系沐飘。

  • ERNIE(清華):傳統(tǒng)的方法是我將詞的預(yù)訓(xùn)練表示作為輸入耐朴,這個模型的想法是:假設(shè)這個詞是一個實體的話筛峭,實體在知識庫的表示可以直接的拼接過來影晓,作為輸入檩禾,然后再進(jìn)行預(yù)測盼产。相當(dāng)于在預(yù)訓(xùn)練中用到了實體的信息戏售。在知識庫中實體是怎么表示的呢灌灾?就涉及到了圖的embedding表示。整個模型相當(dāng)于融入了一種額外的知識些己。

  • KnowBERT:想法和ERNIE很像轴总。進(jìn)行輸入時,不光看詞自身盆佣,還要看詞自身的實體的信息,把他考慮進(jìn)去虑灰。模型更復(fù)雜一些穆咐,一句話中有很多實體对湃,他們之間有關(guān)系的,(紅色)在他們之間做一個self-attention拆讯,然后學(xué)習(xí)一個更好的實體的本身的在文本上的更好的表示种呐。(藍(lán)色)是在知識庫中的表示爽室,知識庫中的表示也存在一個問題肮之,就是一個實體在知識庫中多次出現(xiàn)戈擒,歧義詞筐高,他們的做法是求平均來表示丑瞧,【但是這樣不太好柑土,實際上可以做更好的消除歧義的任務(wù)】稽屏。之后呢狐榔,把單詞在文本上的表示和在知識庫實體的表示加起來,成為紫色的S'收捣,把這個結(jié)果再和之前文本的表示進(jìn)行attention罢艾,進(jìn)行了多次的attention操作咐蚯,可以考慮到實體和實體之間到底是怎樣的一種關(guān)系仓蛆。

  • K-BERT:剛才的模型想法是在預(yù)訓(xùn)練的時候把知識融入進(jìn)去看疙,K-BERT是在推理的時候融入知識能庆。這個知識怎么融入呢搁胆?一個辦法是把句子中出現(xiàn)的實體邮绿、它在知識圖譜中與它有關(guān)聯(lián)的實體船逮、它們之間的關(guān)系全部加到文本中挖胃,構(gòu)成了一個更復(fù)雜的文本酱鸭。對這個文本上直接用BERT模型凹髓,當(dāng)然文章中提出了一些復(fù)雜的mask方法蔚舀。
    好處:不用修改預(yù)訓(xùn)練模型,省去了一些麻煩捷泞;能夠考慮到了實體和實體與實體之間的關(guān)系這些信息锁右。

總結(jié)來說咏瑟,有兩種方法:在預(yù)訓(xùn)練的時候把知識圖譜融進(jìn)去码泞,在用它的時候把知識融進(jìn)去余寥。

c. 更精細(xì)的調(diào)參

  • RoBERTa(Facebook):對BERT更精細(xì)的調(diào)參宋舷,包括:batch的大小是否可以更大祝蝠、訓(xùn)練時間是否可以更長绎狭;發(fā)現(xiàn)去除NSP任務(wù)儡嘶,完全靠完形填空的任務(wù)社付,對整個性能有所幫助鸥咖;訓(xùn)練數(shù)據(jù)序列更長啼辣;動態(tài)改變mask的內(nèi)容鸥拧。但是富弦,訓(xùn)練時間很長M蠊瘛(錢)

d. 解決輸入不一致的問題

· 單向特征表示的自回歸預(yù)訓(xùn)練語言模型盏缤,統(tǒng)稱為單向模型:ELMO/GPT唉铜;
· 雙向特征表示的自編碼預(yù)訓(xùn)練語言模型潭流,統(tǒng)稱為BERT系列模型:(BERT/MASS/ERNIE1.0/ERNIE(THU)/ERNIE2.0/SpanBERT/RoBERTa)
· 雙向特征表示的自回歸預(yù)訓(xùn)練語言模型:XLNet

XLNet

XLNet的Motivation幻枉?

  • 對于ELMO熬甫、GPT等預(yù)訓(xùn)練模型都是基于傳統(tǒng)的語言模型(自回歸語言模型AR椿肩,基于前文預(yù)測下一個)郑象,自回歸語言模型天然適合處理生成任務(wù)厂榛,但是無法對上下文進(jìn)行表征击奶,因此人們反而轉(zhuǎn)向自編碼思想的研究(如BERT系列模型)柜砾;

  • 自編碼語言模型(AE)雖然可以實現(xiàn)雙向上下文進(jìn)行表征,但是:

    • BERT系列預(yù)訓(xùn)練目標(biāo)的設(shè)置造成預(yù)訓(xùn)練過程和生成過程不一致瞳浦,無法進(jìn)行生成任務(wù);
    • 預(yù)訓(xùn)練時的[MASK]噪聲在fine-tune階段不會出現(xiàn)诅挑,造成兩階段不匹配問題;
    • 采用Transformer進(jìn)行編碼达箍,輸入長度固定缎玫;
  • 有什么辦法能構(gòu)建一個模型使得同時具有自回歸和自編碼的優(yōu)點并且沒有它們?nèi)秉c呢赃磨?這就有了XLNet.

  • XLNet:發(fā)現(xiàn)了問題邻辉,在預(yù)訓(xùn)練的時候和實際應(yīng)用的時候值骇,輸入不一樣吱瘩。因為在預(yù)訓(xùn)練的時候要mask一些詞使碾,但是在實際用的時候我們是看到了所有的這些詞票摇,也就是mask的詞都能看見兄朋,有不一致的問題颅和。這是BERT本身存在的陷阱峡扩。
    已有模型可分為兩類的預(yù)訓(xùn)練模型:基于自回歸語言模型(上文預(yù)測下一個詞是什么)但它看不到下文教届,典型的語言模型响鹃,GPT為代表;BERT發(fā)現(xiàn)這種單向的很有問題案训,就提出了一種雙向的买置,也叫自編碼語言模型(上下文預(yù)測中間內(nèi)容),這種基于上下文的存在預(yù)訓(xùn)練和精調(diào)時輸入不一致的問題强霎。
    為了解決這個問題忿项,出現(xiàn)了XLNet城舞,他的想法就是轩触,我既可以用自回歸語言模型的好處,還能預(yù)測時考慮到右邊的那些詞家夺。
    怎么做呢脱柱?提出了基于排列的語言模型。就是把原來句子中這些詞的順序打散拉馋,輸入隨機打亂榨为,通過一個新的順序來預(yù)測下一個是什么,這樣我在預(yù)測的時候煌茴,這個詞左邊出現(xiàn)的不光有正常在左邊的詞柠逞,同時還有在右邊的一些詞。這樣達(dá)到了一個預(yù)測的時候能看到未來信息的效果景馁。
    為什么叫XLNet板壮?基于Transformer-XL提出來的,就是基于Transformer模型合住,能夠?qū)ΩL序列進(jìn)行建模绰精。但捕獲長序列信息不是這個模型的核心,核心還是基于排列的語言模型透葛。

    效果也不錯笨使,比BERT好,但是它的參數(shù)量比BERT大的僚害,很多學(xué)者就想如果BERT也達(dá)到一樣的參數(shù)量硫椰,是否效果和XLNet差不多呢?

e. 模型壓縮與加速

前面考慮的是如何使模型效果更好,這一部分呢就考慮實際使用BERT的一些情況靶草。BERT效果很好蹄胰,但是參數(shù)量巨大,在實際使用時也會遇到各種各樣的困難奕翔,成本很高裕寨。如何對模型進(jìn)行壓縮和加速也是很熱的研究方向。大致有兩個思路:

  • 模型的蒸餾(本質(zhì)上是用一個小模型模擬大模型的預(yù)測的結(jié)果)
    • DistilBERT:用一個小的模型派继,比如把層數(shù)降低宾袜,去掉某些部分等,來模型大模型的結(jié)果驾窟。好處:效率提高庆猫,速度加快;副作用:輸出結(jié)果和大模型的結(jié)果相比绅络,總是有差距阅悍,達(dá)不到大模型的結(jié)果。這就取決于實際應(yīng)用昨稼,看是重視模型效果,還是重視訓(xùn)練效率拳锚。
    • PKD for BERT:DistilBERT模擬大模型最終輸出結(jié)果假栓,模擬大模型中間的輸出結(jié)果。
    • TinyBERT(華為):模擬attention的矩陣霍掺。
    • 詞表的優(yōu)化匾荆,BERT很大一部分開銷是存儲詞表的embedding,占很大空間杆烁。學(xué)習(xí)一個映射:把大的模型的中間的參數(shù)牙丽,做一個映射矩陣,把這些參數(shù)映射到小的空間上兔魂,映射好的話烤芦,就形成了student模型,達(dá)到一個比較好的效果析校。
  • ALBERT:Google,刷新了很多評測榜
ALBERT

兩種策略:更小的詞向量維度智玻;運用了類似于循環(huán)神經(jīng)網(wǎng)絡(luò)的Transformer的結(jié)構(gòu)遂唧,用一套參數(shù),降低了模型的大小吊奢。按理來說共享參數(shù)應(yīng)該會導(dǎo)致效果降低盖彭,但是ALBERT缺取得了不錯的效果,一個原因是將NSP(認(rèn)為它難度低)任務(wù)改成了SOP(句子順序預(yù)測)。
好處:參數(shù)量下降召边,模型效果提高铺呵;但是訓(xùn)練速度沒變,甚至比較低掌实,可能因為與循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)有關(guān)陪蜻。

f. 跨語言與跨模態(tài)

  • 跨語言:之前提到的BERT模型大多都是基于單語的,訓(xùn)練出來的模型都用于該語言的任務(wù)上贱鼻。一個理想的狀態(tài)是希望在一個語言上訓(xùn)練的模型宴卖,直接應(yīng)用于另一個語言上,因為世界上有那么多種語言邻悬,不可能每種語言都有大量語料症昏、去標(biāo)注。

    • 傳統(tǒng)方法
      使用靜態(tài)詞向量父丰,如果這兩個詞是互為翻譯的肝谭,就是它們的embedding比較像;現(xiàn)在呢蛾扇,把詞向量變成上下文相關(guān)的詞向量攘烛,是否也能做跨語言模型。

    • 多語言BERT:M-BERT
      Google在wikipedia中找了104種語言的數(shù)據(jù)镀首,在上面直接跑BERT坟漱。為什么會有跨語言能力?
      第一個是:不同語言之間更哄,共享了一些word piece芋齿。比如把一些詞拆成小塊,這些小塊在不同語言之間是可以share的成翩,尤其是歐洲那邊的語言觅捆,大家的詞表都比較像,會有很多重復(fù)的word piece麻敌。
      第二個是wikipedia自身有個特性栅炒,它在表示某個頁面的時候,經(jīng)呈醺幔混雜著其他語言职辅,比如一個德語界面可能會出現(xiàn)一些英語,會加括號用德語來解釋這個英語聂示,叫做code-switching域携,起到跨語言的效果。
      存在問題:不適合距離遠(yuǎn)的語言鱼喉,比如漢語和英語秀鞭,幾乎沒有共享的word piece趋观;因為語言種類多,每種語言的數(shù)據(jù)量不如單語的數(shù)據(jù)量大锋边,準(zhǔn)確率不如單語BERT皱坛。后面出現(xiàn)了一些基于M-BERT的改進(jìn)。

    • XLM(Facebook):想法是豆巨,收集雙語的句對剩辟,在上面直接跑BERT。在mask的時候有可能mask的是英語往扔,也有可能mask的是漢語贩猎。以此來獲得跨語言的性質(zhì)。結(jié)果還不錯萍膛。問題是要收集大量的雙語數(shù)據(jù)吭服,訓(xùn)練資源要求比較多。還有一個是因為隨機mask蝗罗,假設(shè)mask一個英語單詞艇棕,很容易猜出來是什么,因為對應(yīng)的漢語翻譯不一定被mask掉串塑。更好的改進(jìn)是同時mask掉沼琉,同時進(jìn)行猜兩邊是什么,難度更大桩匪,效果更好打瘪。

    • Unicoder(微軟):提出了三種跨語言預(yù)訓(xùn)練任務(wù):跨語言的詞語恢復(fù)、跨語言的同義句子分類(一個語句對吸祟,把其中一個句子替換成另一個句子,看這兩個句子是否是一個意思)桃移、跨語言的遮蓋語言模型屋匕。因為預(yù)訓(xùn)練難度變大,所以模型效果也有所提升借杰。

    • 跨語言映射BERT:上面的想法是根據(jù)雙語或多語言語料重新進(jìn)行預(yù)訓(xùn)練过吻,但是這樣消耗資源比較大,是否有更經(jīng)濟的方式呢蔗衡?比如直接使用已經(jīng)預(yù)訓(xùn)練好的單語的BERT纤虽,差的是這兩種語言是如何映射的。如果可以學(xué)習(xí)一個很小的詞表绞惦,獲得這兩種語言之間的關(guān)系逼纸,用線性映射的方式,把在不同空間的語言映射到同一空間,來達(dá)到跨語言的效果济蝉。

    • 跨語言的閱讀理解(車?yán)蠋熃M):現(xiàn)在閱讀理解的數(shù)據(jù)基本來自英語杰刽,要做一個新的語言的閱讀理解數(shù)據(jù)菠发,不太好做。如果把文章進(jìn)行翻譯贺嫂,容易產(chǎn)生答案對不齊的問題滓鸠。提出了Dual BERT,將目標(biāo)語言翻譯成源語言第喳,在源語言已經(jīng)訓(xùn)練好的BERT上抽取答案糜俗,然后再映射過去,形成答案曲饱。如果把文章進(jìn)行翻譯悠抹,容易產(chǎn)生答案對不齊的問題。

  • 跨模態(tài):現(xiàn)在有的BERT這些模型渔工,都是在文本上訓(xùn)練得到的锌钮。有很多數(shù)據(jù)是來自圖像的,是否能用BERT做一個多模態(tài)的學(xué)習(xí)引矩,完成一些任務(wù)比如看圖說話梁丘,根據(jù)文字生成圖片等等。

    • VideoBERT:今年很有影響力的工作旺韭。和剛剛XLM的思想基本一樣氛谜。就是文本和它對應(yīng)的視頻/圖片,拼接在一起区端,直接輸入給BERT值漫。輸出的結(jié)果,文本這方面比較容易织盼,就是去預(yù)測生成的是什么word piece杨何。圖像呢不太容易,圖像什么作為它的預(yù)測單元沥邻?一個像素嘛危虱?不太合適。預(yù)測圖像塊唐全。圖像塊本身是連續(xù)的埃跷,圖像抽成一些塊,把這些塊進(jìn)行一些聚類邮利,相當(dāng)于給每個圖像塊一個標(biāo)簽弥雹,然后就和文本一樣,去進(jìn)行預(yù)測延届。效果:可以輸入文字剪勿,生成對應(yīng)的圖像。也可輸入圖像方庭,輸出相應(yīng)的文字窗宦。
VideoBERT

四赦颇、預(yù)訓(xùn)練模型的應(yīng)用

  • Fine-tune

    預(yù)訓(xùn)練好的模型很多時候是不能直接來用的,要結(jié)合目標(biāo)任務(wù)還進(jìn)行fine-tune赴涵。那么fine-tune的時候需要注意些什么媒怯?

    (1)是否需要fine-tune?

    • 這篇文章通過用BERT做了很多實驗髓窜,得到了一個比較general的結(jié)論扇苞。當(dāng)你使用的目標(biāo)任務(wù)所使用的模型非常復(fù)雜的時候,不需要進(jìn)行fine-tu ne寄纵;反之則需要”罘螅現(xiàn)在搞NLP有個趨勢,上面模型部分越來越簡單程拭,預(yù)訓(xùn)練越來越復(fù)雜定踱。可以思考一下未來會怎么樣恃鞋。

    (2)怎么fine-tune更好崖媚?

    ? fine-tune效果,不僅使目標(biāo)模型效果好恤浪,還要盡可能保留預(yù)訓(xùn)練模型原始的信息畅哑。如何進(jìn)行balance呢?

    為什么要盡可能保留預(yù)訓(xùn)練的信息水由?

    • 只調(diào)上面荠呐,底下模型保持fixed。

    • 每次只精調(diào)一層砂客,固定其他層

    • 自頂向下逐層解凍:我先訓(xùn)練好最底層泥张,再固定好這層訓(xùn)練倒數(shù)第二層等等。這篇文章還給出了其他的值得借鑒的策略:

      • 學(xué)習(xí)率預(yù)熱:warm-off
      • 先讓BERT在通用的數(shù)據(jù)上訓(xùn)練一個語言模型鞠值,然后在此基礎(chǔ)上在目標(biāo)領(lǐng)域未標(biāo)注數(shù)據(jù)上精調(diào)語言模型媚创。
    • 目標(biāo)是提高目標(biāo)任務(wù)的準(zhǔn)確率同時盡可能保持預(yù)訓(xùn)練模型原有的信息。因此考慮增加一個額外的損失齿诉,衡量原來的模型和訓(xùn)練后的模型之間的Gap筝野,訓(xùn)練時盡可能減少這個損失晌姚,這樣保證參數(shù)盡量少動粤剧,同時和目標(biāo)任務(wù)像。這是一種策略挥唠。

    • 增加adapter(適配器):相當(dāng)于在模型中增加一個組件抵恋。適配器是我們要訓(xùn)練的結(jié)果。原來的BERT參數(shù)等不變宝磨,通過調(diào)整適配器弧关,更好的適應(yīng)目標(biāo)任務(wù)盅安。加入適配器有很多方式:一種是串聯(lián)到模型中,去學(xué)習(xí)模型信息世囊;一種像加入Gate一樣别瞭,去調(diào)整原來信息保留多少.

  • 多任務(wù)學(xué)習(xí)

    在原始的數(shù)據(jù)上做預(yù)訓(xùn)練,然后應(yīng)用于目標(biāo)任務(wù)株憾。目標(biāo)任務(wù)有很多很多蝙寨,它們之間是否可以互相幫助。期望是它們之間能夠互相幫助互相提高嗤瞎,但實際中往往只有一兩個任務(wù)效果提升墙歪,其他都有所下降。今年斯坦福的BAM這個工作:我可以用蒸餾的方式贝奇,不是多任務(wù)虹菲,用單模型輸出的結(jié)果做feature,多任務(wù)學(xué)習(xí)的結(jié)果做student掉瞳,用多任務(wù)模型去學(xué)習(xí)單任務(wù)模型毕源,結(jié)論是不同的多任務(wù)之間的效果都提高了。當(dāng)然這個只是目前發(fā)現(xiàn)的一個現(xiàn)象菠赚,還沒有人去解釋這是為什么脑豹。

    BAM模型的細(xì)節(jié)

  • 小樣本學(xué)習(xí)

    Few-Shot預(yù)訓(xùn)練學(xué)習(xí)。在目標(biāo)任務(wù)上數(shù)據(jù)很少衡查,怎么能夠做這個任務(wù)瘩欺?預(yù)訓(xùn)練模型天然的可以計算相似的性質(zhì)。做個分類還可以拌牲,但是在自然語言處理中很多都是結(jié)構(gòu)化信息的問題俱饿,

  • 零樣本學(xué)習(xí)

    數(shù)據(jù)再少,就是零樣本學(xué)習(xí)塌忽。沒有樣本的情況下拍埠,直接用預(yù)訓(xùn)練得到的embedding和知識庫中的embedding對比,計算相似度等土居。

五枣购、預(yù)訓(xùn)練模型的分析

現(xiàn)在預(yù)訓(xùn)練模型那么好,到底起到了一個什么樣的效果呢擦耀?現(xiàn)在很多方向是在模型中加入探針棉圈,來探索預(yù)訓(xùn)練模型是個什么東西,到底起到了一個什么作用眷蜓。

  • 下游任務(wù)探針
下游任務(wù)探針

這篇工作是在下游做16個任務(wù)分瘾,來分析BERT的效果。將BERT的輸出直接固定吁系,上層就只做一個很簡單的分類器德召,然后做下游任務(wù)白魂。BERT的輸出如果能夠很好的直接經(jīng)過一個線性變換就能完成下游任務(wù),說明BERT已經(jīng)具備了完成下游任務(wù)的能力了上岗。
結(jié)論呢福荸,BERT在很多任務(wù)上表現(xiàn)都很好,但也有一些不好肴掷,比如語法檢查等逞姿。

  • 級聯(lián)任務(wù)探針
級聯(lián)任務(wù)探針

很多自然語言處理的任務(wù)是基于級聯(lián)的方式,如詞性標(biāo)注捆等、句法分析等滞造。這個工作就是說我這個BERT有12層或24層,底層在做分詞栋烤、詞性標(biāo)注這些任務(wù)谒养;中間的層做相對語義一點的任務(wù)或句法的任務(wù);更高層做處理語義的任務(wù)明郭。
得出的結(jié)論BERT自身已經(jīng)蘊涵了原來要做的這些級聯(lián)的工作买窟。還有一個結(jié)論是底層一些歧義的信息通過高層可反饋出來。

  • 上下文詞向量探針
上下文詞向量探針

這篇工作是分析了預(yù)訓(xùn)練模型生成的詞向量之間有什么關(guān)系薯定。預(yù)訓(xùn)練的結(jié)果始绍,可以直接將預(yù)訓(xùn)練的embedding,計算任意兩個詞之間的相似度话侄,如果相似的話就給一條弧亏推。發(fā)現(xiàn)最終連出來的弧非常像人工定義的語法樹。
得出來結(jié)論預(yù)訓(xùn)練embedding蘊涵了句法的信息年堆。

  • 注意力探針
注意力探針

剛剛是通過embedding的角度吞杭,還可以從attention的角度來進(jìn)行解釋,比如這兩個詞之間attention系數(shù)大了变丧,就認(rèn)為兩者之間有一條弧芽狗,可能因為BERT使用了transformer的結(jié)構(gòu),有的head包含了一些句法信息痒蓬,有的甚至包含了指代信息童擎。

六、預(yù)訓(xùn)練模型的挑戰(zhàn)

預(yù)訓(xùn)練模型遇到了哪些挑戰(zhàn)攻晒?預(yù)訓(xùn)練模型有那么那么多的好處顾复,是不是以后NLP都不用搞了?直接跑個預(yù)訓(xùn)練模型就行了炎辨?肯定不是捕透。有哪些問題BERT解決不了聪姿?

  • 預(yù)訓(xùn)練模型是NLP終極解決方案嗎碴萧?自然語言處理經(jīng)歷了這么幾個階段:形式乙嘀,語義,推理破喻,語用虎谢。BERT能夠很好的處理語義問題,但是對于推理任務(wù)目前做的還不是太好〔苤剩現(xiàn)在把GLUE變成了superGLUE婴噩,增加了推理任務(wù),強迫機器去學(xué)習(xí)羽德。

  • 如何利用更多的預(yù)訓(xùn)練數(shù)據(jù)几莽?人工標(biāo)注代價較大,現(xiàn)在很多預(yù)訓(xùn)練任務(wù)是尋找自動的標(biāo)注宅静,文本已經(jīng)放在這里了章蚣,通過預(yù)測一個詞,當(dāng)然還可以制造一些數(shù)據(jù)

  • 模型的壓縮和加速姨夹?壓縮后效果不好纤垂,效果好但速度不行。

  • 如何在seq2seq任務(wù)上使用BERT磷账?

  • 如何對長文檔進(jìn)行表示峭沦?目前只能學(xué)習(xí)到句子或段落級別的信息

  • 如何應(yīng)對對抗攻擊左胞?

    等等定罢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谆奥,隨后出現(xiàn)的幾起案子绰咽,更是在濱河造成了極大的恐慌蛉抓,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃诅,死亡現(xiàn)場離奇詭異巷送,居然都是意外死亡,警方通過查閱死者的電腦和手機矛辕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門笑跛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聊品,你說我怎么就攤上這事飞蹂。” “怎么了翻屈?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵陈哑,是天一觀的道長。 經(jīng)常有香客問我,道長惊窖,這世上最難降的妖魔是什么刽宪? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮界酒,結(jié)果婚禮上圣拄,老公的妹妹穿的比我還像新娘。我一直安慰自己毁欣,他們只是感情好庇谆,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凭疮,像睡著了一般饭耳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上执解,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天哥攘,我揣著相機與錄音,去河邊找鬼材鹦。 笑死逝淹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桶唐。 我是一名探鬼主播栅葡,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尤泽!你這毒婦竟也來了欣簇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坯约,失蹤者是張志新(化名)和其女友劉穎熊咽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闹丐,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡横殴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卿拴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衫仑。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖堕花,靈堂內(nèi)的尸體忽然破棺而出文狱,到底是詐尸還是另有隱情,我是刑警寧澤缘挽,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布瞄崇,位于F島的核電站呻粹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苏研。R本人自食惡果不足惜等浊,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楣富。 院中可真熱鬧,春花似錦伴榔、人聲如沸纹蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塘安。三九已至,卻和暖如春援奢,著一層夾襖步出監(jiān)牢的瞬間兼犯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工集漾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留切黔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓具篇,卻偏偏與公主長得像纬霞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驱显,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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