Bert 給人們帶來了大驚喜,不過轉(zhuǎn)眼過去大約半年時(shí)間了,這半年來,陸續(xù)出現(xiàn)了與Bert相關(guān)的不少新工作。
最近幾個(gè)月,在主業(yè)做推薦算法之外的時(shí)間,我其實(shí)一直比較好奇下面兩個(gè)問題:
問題一:Bert原始的論文證明了:在GLUE這種綜合的NLP數(shù)據(jù)集合下,Bert預(yù)訓(xùn)練對幾乎所有類型的NLP任務(wù)(生成模型除外)都有明顯促進(jìn)作用。但是,畢竟GLUE的各種任務(wù)有一定比例的數(shù)據(jù)集合規(guī)模偏小,領(lǐng)域也還是相對有限,在更多領(lǐng)域、更大規(guī)模的數(shù)據(jù)情況下,是否真的像Bert原始論文里的實(shí)驗(yàn)展示的那樣,預(yù)訓(xùn)練技術(shù)對于很多應(yīng)用領(lǐng)域有了很大的促進(jìn)作用?如果有,作用有多大?這種作用的大小與領(lǐng)域相關(guān)嗎?這是我關(guān)心的第一個(gè)問題。
問題二:Bert作為一項(xiàng)新技術(shù),肯定還有很多不成熟或者需要改進(jìn)的地方,那么,Bert目前面臨的問題是什么?后面有哪些值得改進(jìn)的方向?這是我關(guān)心的第二個(gè)問題。
陸陸續(xù)續(xù)地,我收集到了截止到19年5月底為止發(fā)表的,大約70-80篇與Bert相關(guān)的工作,剛開始我是準(zhǔn)備把關(guān)于這兩個(gè)問題的答案寫在一篇文章里的,寫著寫著發(fā)現(xiàn)太長,而兩個(gè)主題確實(shí)也可以獨(dú)立分開,所以就改成了兩篇。這一篇是回答第一個(gè)問題的,主題集中在各個(gè)NLP領(lǐng)域的Bert應(yīng)用,一般這種應(yīng)用不涉及對Bert本身能力的改進(jìn),就是單純的應(yīng)用并發(fā)揮Bert預(yù)訓(xùn)練模型的能力,相對比較簡單;至于對Bert本身能力的增強(qiáng)或者改進(jìn),技術(shù)性會(huì)更強(qiáng)些,我歸納了大約10個(gè)Bert的未來改進(jìn)方向,放在第二篇文章里,過陣子會(huì)把第二篇再改改發(fā)出來,在那篇內(nèi)容里,會(huì)歸納梳理Bert未來可能的發(fā)展方向。
這兩篇文章對讀者的知識結(jié)構(gòu)有一定要求,建議在看之前,先熟悉下Bert的工作機(jī)制,可以參考之前介紹Bert的文章:從Word Embedding到Bert模型—自然語言處理中的預(yù)訓(xùn)練技術(shù)發(fā)展史
百花齊放:Bert在NLP各領(lǐng)域的應(yīng)用進(jìn)展
本篇文章主要回答第一個(gè)問題,除此外,從應(yīng)用的角度看,Bert比較擅長處理具備什么特性的任務(wù)?不擅長處理哪些類型的應(yīng)用?哪些NLP應(yīng)用領(lǐng)域是Bert擅長但是還未開墾的處女地?Bert的出現(xiàn)對NLP各個(gè)領(lǐng)域的傳統(tǒng)技術(shù)會(huì)造成怎樣的沖擊?未來會(huì)形成統(tǒng)一的技術(shù)方案嗎?包括Bert時(shí)代我們應(yīng)該如何創(chuàng)新?……。。這些問題也會(huì)有所涉及,并給出我個(gè)人的看法。
在回答這些問題之前,我先講講我對Bert的一些務(wù)虛的看法,原先的內(nèi)容本來在本文的這個(gè)位置,因?yàn)樘L,之前已經(jīng)摘出單獨(dú)發(fā)了,如果感興趣的話,可以參考這篇文章:Bert時(shí)代的創(chuàng)新:Bert應(yīng)用模式比較及其它 | 技術(shù)頭條
萬象歸宗:事實(shí),其實(shí)和你想的也許不一樣
自從Bert誕生,到目前轉(zhuǎn)眼半年過去了,如果歸納一下,目前出現(xiàn)了大量使用Bert來在NLP各個(gè)領(lǐng)域進(jìn)行直接應(yīng)用的工作,方法都很簡單直接,效果總體而言比較好,當(dāng)然也需要分具體的領(lǐng)域,不同領(lǐng)域受益于Bert的程度不太相同。
本節(jié)對這些工作分領(lǐng)域介紹及做一些帶我個(gè)人主觀色彩的判斷和分析。
應(yīng)用領(lǐng)域:Question Answer(QA,問答系統(tǒng))與閱讀理解
QA中文一般叫做問答系統(tǒng),是NLP的一個(gè)重要應(yīng)用領(lǐng)域,也是個(gè)具有很長歷史的子領(lǐng)域了,我記得我讀書的時(shí)候,差一點(diǎn)就選了這個(gè)方向做博士開題方向……好險(xiǎn)……當(dāng)時(shí)的技術(shù)發(fā)展水準(zhǔn),我記得是各種trick齊飛, 靠譜共不靠譜技術(shù)一色…。。當(dāng)然,其實(shí)我最終還是選擇了一個(gè)更糟糕的博士開題方向 ……。這應(yīng)該是墨菲定律的一個(gè)具體例子?“選擇大于努力”,這個(gè)金句,一直被證明,從未被顛覆。在讀博士們請留心下這句肺腑之言,一定選好開題方向。當(dāng)然,有時(shí)候能夠選什么方向也由不得你,上面是說在你有選擇自由的時(shí)候需要注意的地方。
QA的核心問題是:給定用戶的自然語言查詢問句Q,比如問“美國歷史上最像2B鉛筆的總統(tǒng)是誰?”,希望系統(tǒng)從大量候選文檔里面找到一個(gè)語言片段,這個(gè)語言片段能夠正確回答用戶提出的問題,最好是能夠直接把答案A返回給用戶,比如上面問題的正確答案:“特·不靠譜·間歇腦抽風(fēng)·朗普”。
很明顯,這是個(gè)很有實(shí)用價(jià)值的方向,其實(shí)搜索引擎的未來,很可能就是QA+閱讀理解,機(jī)器學(xué)會(huì)閱讀理解,理解了每篇文章,然后對于用戶的問題,直接返回答案。
QA領(lǐng)域是目前Bert應(yīng)用效果最好的領(lǐng)域之一,甚至有可能把“之一”都能拿掉。我個(gè)人認(rèn)為,可能的原因是QA問題比較純粹。所謂的“純粹”,是說這是個(gè)比較純粹的自然語言或者語義問題,所需要的答案就在文本內(nèi)容里,頂多還需要一些知識圖譜,所以只要NLP技術(shù)有提升,這種領(lǐng)域就會(huì)直接受益。當(dāng)然,可能也跟QA問題的表現(xiàn)形式正好比較吻合Bert的優(yōu)勢有關(guān)。那么Bert特別適合解決怎樣的問題?在本文后面專門會(huì)分析這個(gè)事情。
目前不同的QA領(lǐng)域利用Bert的技術(shù)方案大同小異,一般遵循如下流程:
應(yīng)用Bert,從流程角度,一般分為兩個(gè)階段:檢索+QA問答判斷。首先往往會(huì)把比較長的文檔切割成段落或者句子n-gram構(gòu)成的語言片段,這些片段俗稱Passage,然后利用搜索里的倒排索引建立快速查詢機(jī)制。第一個(gè)階段是檢索階段,這個(gè)和常規(guī)的搜索過程相同,一般是使用BM25模型(或者BM25+RM3等技術(shù))根據(jù)問句查詢可能的答案所在候選段落或者句子;第二個(gè)階段是問答判斷。在訓(xùn)練模型的時(shí)候,一般使用SQuAD等比較大的問答數(shù)據(jù)集合,或者手上的任務(wù)數(shù)據(jù),對Bert模型進(jìn)行 Fine-tuning;在應(yīng)用階段,對于第一階段返回的得分靠前的Top K候選Passage,將用戶問句和候選passage作為Bert的輸入,Bert做個(gè)分類,指出當(dāng)前的Passage是否包括問句的正確答案,或者輸出答案的起始終止位置。這是一個(gè)比較通用的利用Bert優(yōu)化QA問題的解決思路,不同方案大同小異,可能不同點(diǎn)僅僅在于Fine-tuning使用的數(shù)據(jù)集合不同。
QA和閱讀理解,在應(yīng)用Bert的時(shí)候,在某種程度上是基本類似的任務(wù),如果你簡化理解的話,其實(shí)可以把上述QA流程的第一階段扔掉,只保留第二階段,就是閱讀理解任務(wù)應(yīng)用Bert的過程。當(dāng)然,上面是簡化地理解,就任務(wù)本身來說,其實(shí)兩者有很大的共性,但是也有些細(xì)微的區(qū)別;一般普通QA問題在找答案的時(shí)候,依賴的上下文更短小,參考的信息更局部一些,答案更表面化一些;而閱讀理解任務(wù),要正確定位答案,所參考的上下文范圍可能會(huì)更長一些,部分高難度的閱讀理解問題可能需要機(jī)器進(jìn)行適當(dāng)程度的推理??傮w感覺是閱讀理解像是平常QA任務(wù)的難度加大版本任務(wù)。但是從Bert應(yīng)用角度,兩者流程近似,所以我直接把這兩個(gè)任務(wù)并在一起了。我知道,上面的話估計(jì)會(huì)有爭議,不過這個(gè)純屬個(gè)人看法,謹(jǐn)慎參考。
前面提過,QA領(lǐng)域可能是應(yīng)用Bert最成功的一個(gè)應(yīng)用領(lǐng)域,很多研究都證明了:應(yīng)用Bert的預(yù)訓(xùn)練模型后,往往任務(wù)都有大幅度的提升。下面列出一些具體實(shí)例。
而閱讀理解任務(wù),應(yīng)用Bert后,對原先的各種紛繁復(fù)雜的技術(shù)也有巨大的沖擊作用,前幾年,我個(gè)人覺得盡管閱讀理解領(lǐng)域提出了很多新技術(shù),但是方法過于復(fù)雜了,而且有越來越復(fù)雜化的趨向,這絕對不是一個(gè)正常的或者說好的技術(shù)發(fā)展路線,我覺得路子有可能走歪了,而且我個(gè)人一直對過于復(fù)雜的技術(shù)有心理排斥感,也許是我智商有限理解不了復(fù)雜技術(shù)背后的深?yuàn)W玄機(jī)?不論什么原因,反正就沒再跟進(jìn)這個(gè)方向,當(dāng)然,方向是個(gè)好方向。而Bert的出現(xiàn),相信會(huì)讓這個(gè)領(lǐng)域的技術(shù)回歸本質(zhì),模型簡化這一點(diǎn)會(huì)做得更徹底,也許現(xiàn)在還沒有,但是我相信將來一定會(huì),閱讀理解的技術(shù)方案應(yīng)該是個(gè)簡潔統(tǒng)一的模式。至于在閱讀理解里面應(yīng)用Bert的效果,你去看SQuAD競賽排行榜,排在前列的都是Bert模型,基本閱讀理解領(lǐng)域已經(jīng)被Bert屠榜了,由這個(gè)也可以看出Bert在閱讀理解領(lǐng)域的巨大影響力。
應(yīng)用領(lǐng)域:搜索與信息檢索(IR)
對于應(yīng)用Bert,搜索或IR的問題模式及解決方案流程和QA任務(wù)是非常相近的,但是因?yàn)槿蝿?wù)不同,所以還是有些區(qū)別。
搜索任務(wù)和QA任務(wù)的區(qū)別,我綜合各方面信息,列一下,主要有三點(diǎn):
首先,盡管兩個(gè)任務(wù)都是在做Query和Document的匹配,但是匹配時(shí)側(cè)重于哪些因素,這兩個(gè)任務(wù)是不同的。兩個(gè)文本的“相關(guān)性”和“語義相似性”代表的內(nèi)涵是有差異的;所謂“相關(guān)性”,更強(qiáng)調(diào)字面內(nèi)容的精確匹配,而“語義相似性”則多涵蓋了另外一個(gè)意思:就是盡管字面不匹配,但是深層語義方面的相近。QA任務(wù)對于這兩者都是重視的,可能偏向語義相似性更多一些,而搜索任務(wù)更偏重文本匹配的相關(guān)性方面。這是兩個(gè)任務(wù)的第一個(gè)不同。
其次,文檔長度的差異。QA任務(wù)往往是要查找問題Q的答案,而答案很可能只是一小段語言片段,在Passage這個(gè)較短的范圍內(nèi),一般會(huì)包含正確答案,所以QA任務(wù)的答案一般比較短,或者說搜索對象比較短就可以覆蓋正確答案,即QA任務(wù)的處理對象傾向于短文本;而對搜索任務(wù)來說,文檔普遍比較長。盡管在判斷文檔是否與查詢相關(guān)時(shí),也許只依賴長文檔中的幾個(gè)關(guān)鍵Passage或者幾個(gè)關(guān)鍵句子,但是關(guān)鍵片段有可能散落在文檔的不同地方。在應(yīng)用Bert的時(shí)候,因?yàn)锽ert對于輸入長度有限制,最長輸入允許512個(gè)單位。于是,如何處理長文檔,對于搜索來說比較重要;
再次,對于QA這種任務(wù)來說,可能文本內(nèi)包含的信息足夠作出判斷,所以不需要額外的特征信息;而對于搜索這種任務(wù),尤其是現(xiàn)實(shí)生活中的實(shí)用化的搜索,而非性質(zhì)比較單純的評測中的Ad hoc檢索任務(wù)。在很多時(shí)候,僅僅靠文本可能無法特別有效地判斷查詢和文檔的相關(guān)性,其它很多因素也嚴(yán)重影響搜索質(zhì)量,比如鏈接分析,網(wǎng)頁質(zhì)量,用戶行為數(shù)據(jù)等各種其它特征也對于最終的判斷也起到重要作用。而對于非文本類的信息,Bert貌似不能很好地融合并體現(xiàn)這些信息。推薦領(lǐng)域其實(shí)也跟搜索一樣,面臨類似的問題。
盡管講了這么多領(lǐng)域間的區(qū)別,但是其實(shí)也沒什么用,如果你看目前見到的用Bert改進(jìn)檢索領(lǐng)域的工作,尤其是Passage級別的信息檢索問題,可能你無法分辨現(xiàn)在在做的是搜索問題還是QA問題。當(dāng)然,對于長文搜索,搜索還是有單獨(dú)的問題需要處理。為何會(huì)出現(xiàn)這種無法分辨QA及搜索任務(wù)的現(xiàn)象呢?這是因?yàn)槟壳俺霈F(xiàn)的利用Bert改進(jìn)檢索的工作,一方面比較集中在Passage級別;另外一方面通常任務(wù)是Ad Hoc檢索,以內(nèi)容匹配為主,與真實(shí)搜索引擎利用的主要特征差異比較明顯。主要應(yīng)該是這兩個(gè)原因造成的。
我們再歸納下在Ad Hoc檢索任務(wù)中一般如何應(yīng)用Bert:一般也是分成兩個(gè)階段,首先利用BM25等經(jīng)典文本匹配模型或者其它簡單快速的模型對文檔進(jìn)行初步排序,取得分前列Top K文檔,然后用復(fù)雜的機(jī)器學(xué)習(xí)模型來對Top K返回結(jié)果進(jìn)行重排序。應(yīng)用Bert的地方明顯在搜索重排序階段,應(yīng)用模式與QA也是類似的,就是把Query和Document輸入Bert,利用Bert的深層語言處理能力,作出兩者是否相關(guān)的判斷。如果是Passage級別的短文檔檢索,其實(shí)流程基本和QA是一樣的;而如果是長文檔檢索,則需要增加一個(gè)如何處理長文檔的技術(shù)方案,然后再走Bert去做相關(guān)性判斷。
所以,對于如何在信息檢索領(lǐng)域應(yīng)用Bert,我們從兩個(gè)不同的角度來說:短文檔檢索和長文檔檢索。
對于短文檔檢索而言,你把它看成QA任務(wù),其實(shí)問題也不大。所以這里不細(xì)說了,直接上結(jié)果。幾個(gè)工作在Passage級別文檔檢索任務(wù)中的效果,可以參考這個(gè)PPT所列內(nèi)容:
從上面各種實(shí)驗(yàn)數(shù)據(jù)可以看出:對于短文檔檢索來說,使用Bert后,性能一般都有大幅度的提升。
對于長文檔檢索任務(wù),因?yàn)锽ert在輸入端無法接受太長的輸入,則面臨一個(gè)如何將長文檔縮短的問題。其它過程和短文檔檢索基本雷同。那么怎么解決搜索中的長文檔問題呢?可以參考下列論文的思路。
論文《Simple Applications of BERT for Ad Hoc Document Retrieval》
這篇論文首次在信息檢索領(lǐng)域應(yīng)用Bert,并且證明了Bert對于搜索應(yīng)用能有效提升效果。它同時(shí)做了短文檔和長文檔的實(shí)驗(yàn)。短文檔利用TREC 2014的微博數(shù)據(jù)。引入Bert后,在微博搜索任務(wù)上,相對目前最好的檢索模型,在不同的微博搜索任務(wù)中有5%到18%的效果提升,相對基準(zhǔn)方法(BM25+RM3,這是一個(gè)強(qiáng)基準(zhǔn),超過大多數(shù)其它改進(jìn)方法)有20%到30%的效果提升。
第二個(gè)數(shù)據(jù)集是TREC長文檔檢索任務(wù),這里就體現(xiàn)出搜索和QA任務(wù)的不同了。因?yàn)橐阉鞯奈臋n比較長,在重排序階段,很難把整個(gè)文檔輸入到Bert中,所以這個(gè)工作采取了一個(gè)簡單的方法:把文檔分割成句子,利用Bert判斷每個(gè)句子和查詢Q的相關(guān)性,然后累加得分最高的Top N句子(結(jié)論是取得分最高的3個(gè)句子就夠了,再多性能會(huì)下降),獲得文檔和查詢Q的相關(guān)性得分,這樣就將長文檔問題轉(zhuǎn)化成了文檔部分句子的得分累加的模式。實(shí)驗(yàn)表明相對強(qiáng)基準(zhǔn)BM25+RM3,使用Bert會(huì)有大約10%的效果提升。
一種搜索領(lǐng)域長文檔的解決思路
從上面這篇文章對搜索長文檔的處理過程,我們可以進(jìn)一步對此問題進(jìn)行深入思考??紤]到搜索任務(wù)的特殊性:文檔和用戶查詢的相關(guān)性,并不體現(xiàn)在文章中的所有句子中,而是集中體現(xiàn)在文檔中的部分句子中。如果這個(gè)事實(shí)成立,那么一種直觀地解決搜索任務(wù)中長文檔問題的通用思路可以如下:先通過一定方法,根據(jù)查詢和文檔中的句子,判斷兩者的相關(guān)性,即產(chǎn)生判斷函數(shù)Score=F(Q,S),根據(jù)Score得分篩選出一個(gè)較小的句子子集合Sub_Set(Sentences),由這些句子來代表文檔內(nèi)容。這樣即可將長文有針對性地縮短。從和查詢相關(guān)性的角度來說,這樣做也不會(huì)損失太多信息。關(guān)鍵是這個(gè)F(Q,S)函數(shù)如何定義,不同的定義方法可能產(chǎn)生表現(xiàn)不同的效果。這個(gè)F函數(shù),可以被稱為搜索領(lǐng)域文檔的句子選擇函數(shù),這個(gè)函數(shù)同樣可以使用不同的DNN模型來實(shí)現(xiàn)。這里是有很多文章可做的,有心的同學(xué)可以關(guān)注一下。
如果歸納一下的話:在搜索領(lǐng)域應(yīng)用Bert,如果是Passage這種短文檔搜索,往往效果有非常巨大的提升;而目前長文檔的搜索,使用Bert也能有一定幅度的提升,但是效果不如短文檔那么明顯,很可能原因在于搜索的長文檔處理方式有它自己的特點(diǎn),還需要繼續(xù)摸索更合理的更能體現(xiàn)搜索中長文檔特性的方法,以進(jìn)一步發(fā)揮Bert的效果。
應(yīng)用領(lǐng)域:對話系統(tǒng)/聊天機(jī)器人(Dialog System or Chatbot)
聊天機(jī)器人或者對話系統(tǒng)最近幾年也非常活躍,這與市面上出現(xiàn)大量的聊天機(jī)器人產(chǎn)品有關(guān)系。個(gè)人私見,這個(gè)方向是符合未來發(fā)展趨勢的方向,但是目前的技術(shù)不夠成熟,難以支撐一個(gè)能夠滿足人們心目中期望的好用產(chǎn)品,所以我個(gè)人不是太看好這個(gè)方向近期內(nèi)的產(chǎn)品形態(tài),主要還是目前技術(shù)發(fā)展階段所限,支撐不起一個(gè)好的用戶體驗(yàn)。這是題外話。
聊天機(jī)器人從任務(wù)類型劃分的話,常見的有日常聊天以及任務(wù)解決型。日常聊天好理解,就是漫無目的地閑聊,幫你打發(fā)時(shí)間,當(dāng)然前提是你得有空閑時(shí)間需要被它打發(fā)掉。我發(fā)現(xiàn)低齡兒童很可能是這個(gè)任務(wù)類型的目標(biāo)受眾,兩年前我家閨女能興致勃勃地跟Siri聊半個(gè)小時(shí),聊到Siri都嫌她煩了。當(dāng)然,Siri收到的最后一句話往往是這樣的:“Siri,你太笨了!”
任務(wù)解決就是幫著用戶解決一些日常事務(wù),解決日常碰到的實(shí)際問題。比如,99%的直男,一年中會(huì)因?yàn)橥浺恍┕?jié)假日被女友或者老婆噴得患上節(jié)假日恐懼癥,有了聊天機(jī)器人,你就再也不用怕了。你可以跟聊天機(jī)器人說:“以后但凡是節(jié)假日,你記得提醒我,幫我給XX訂束花?!庇谑?,你在一年的365天里,有364天會(huì)收到聊天機(jī)器人的500多個(gè)提醒,這樣你再也不用怕被噴了,生活會(huì)變得越來越美好。而且假如萬一你中年失業(yè),因?yàn)閷λ突ㄟ@個(gè)事情特別熟悉,所以估計(jì)去開個(gè)連鎖花店,說不定過幾年就上市了,也許比瑞幸咖啡上市速度還快……這就是任務(wù)解決型聊天機(jī)器人帶給你的切實(shí)的好處,不湊巧還能推著你意外地走向人生巔峰。
上面開個(gè)玩笑,如果從技術(shù)角度看的話,聊天機(jī)器人主要面臨兩種技術(shù)挑戰(zhàn)。
其一:對于單輪對話來說,就是一問一答場景,任務(wù)解決型聊天需要從用戶的話語中解析出用戶的意圖。比如到底用戶是想要訂餐還是點(diǎn)歌,一般這是個(gè)分類問題,叫用戶意圖分類,就是把用戶的意圖分到各種服務(wù)類型里面;另外如果用戶意圖敲定,那么根據(jù)意圖要抽取出一些關(guān)鍵元素,比如訂機(jī)票,需要抽取出出發(fā)地、目的地、出發(fā)時(shí)間、返程時(shí)間等信息。目前一般采用槽填充(Slot Filling)的技術(shù)來做,一個(gè)關(guān)鍵元素就是一個(gè)槽位(Slot),從用戶交互中抽取出的這個(gè)槽位對應(yīng)的取值,就是Filling過程。比如點(diǎn)歌場景下,有一個(gè)槽位就是“歌手”,而如果用戶說“播放TFBoys的歌”,那么經(jīng)過槽位填充,會(huì)得到“歌手”槽位對應(yīng)的取值“歌手=TFBoys”,這就是典型的槽位填充過程。
論文“BERT for Joint Intent Classification and Slot Filling”即是利用Bert解決單輪會(huì)話的會(huì)話意圖分類以及槽位填充任務(wù)的。解決方法也很直觀,輸入一個(gè)會(huì)話句子,Transformer的[CLS]輸入位置對應(yīng)高層Transformer位置輸出句子的意圖分類,這是一個(gè)典型地應(yīng)用Bert進(jìn)行文本分類的方法;另外一方面,對于會(huì)話句中的每個(gè)單詞,都當(dāng)作一個(gè)序列標(biāo)注問題,每個(gè)單詞在Transformer最高層對應(yīng)位置,分類輸出結(jié)果,將單詞標(biāo)注為是哪類槽的槽值的IOE標(biāo)記即可。這是典型的用Bert解決序列標(biāo)注的思路。而這個(gè)方法則通過Bert同時(shí)做了這兩件事情,這點(diǎn)還是挺好的。通過采用Bert預(yù)訓(xùn)練過程,在兩個(gè)數(shù)據(jù)集合上,在意圖分類任務(wù)上效果提升不太明顯,可能是基準(zhǔn)方法本身已經(jīng)把指標(biāo)做得比較高了;槽值填充方面,與RNN+Attention等基準(zhǔn)方法相比,兩個(gè)數(shù)據(jù)集合表現(xiàn)不一,一個(gè)數(shù)據(jù)集合效果提升2%,另外一個(gè)提升12%左右??傮w而言,表現(xiàn)還行,但是不突出。
其二:對于多輪會(huì)話來說,就是說用戶和聊天機(jī)器人交互問答好幾個(gè)回合的場景下,如何改進(jìn)模型,讓聊天機(jī)器人記住歷史的用戶交互信息,并在后面的應(yīng)答中正確地使用歷史信息,就是個(gè)比較重要的問題,這也很大程度上影響用戶對于聊天機(jī)器人到底有多智能的體驗(yàn)。所以,如何有效融入更多的歷史信息,并在上下文中正確地場合正確地使用歷史信息,就是模型改進(jìn)的關(guān)鍵。
那么如果把Bert應(yīng)用在多輪會(huì)話問題上,會(huì)是什么效果呢?論文Comparison of Transfer-Learning Approaches for Response Selection in Multi-Turn Conversations給出了實(shí)驗(yàn)結(jié)果。它利用GPT及Bert等預(yù)訓(xùn)練模型改進(jìn)多輪對話中如何融入歷史信息,來對下一句選擇的問題。效果提升明顯,Bert效果優(yōu)于GPT,GPT效果明顯優(yōu)于基準(zhǔn)方法。Bert相對基準(zhǔn)方法,在不同數(shù)據(jù)集合下,效果提升幅度在11%到 41%之間。
總之,Bert應(yīng)用在聊天機(jī)器人領(lǐng)域,潛力應(yīng)該還是比較大的。單輪會(huì)話的問題相對比較簡單;多輪會(huì)話中,如何融入上下文這個(gè)問題,還是比較復(fù)雜,我相信Bert在這里能夠發(fā)揮較大的作用。
應(yīng)用領(lǐng)域:文本摘要
文本摘要有兩種類型,一種是生成式的(Abstractive Summarization),輸入是較長的原始文檔,輸出的內(nèi)容不局限于在原文出現(xiàn)的句子,而是自主生成能夠體現(xiàn)文章主要思想的較短的摘要;另外一種是抽取式的(Extractive Summarization),意思是從原始文檔中選擇部分能夠體現(xiàn)主題思想的句子,摘要是由文中抽出的幾個(gè)原始句子構(gòu)成的。
下面分述兩種不同類型的摘要任務(wù),在應(yīng)用Bert時(shí)的要點(diǎn)。
生成式文本摘要
很明顯,生成式摘要任務(wù),從技術(shù)體系來說,符合典型的Encoder-Decoder技術(shù)框架:原始文章從Encoder輸入,Decoder生成語句作為摘要結(jié)果。既然是這樣,要想利用Bert的預(yù)訓(xùn)練成果,無非體現(xiàn)在兩個(gè)地方,一個(gè)地方是Encoder端,這個(gè)好解決,只需要用預(yù)訓(xùn)練好的Bert模型初始化Encoder端Transformer參數(shù)即可,簡單直觀無疑義;另外一個(gè)地方是在Decoder端,這個(gè)地方要應(yīng)用Bert就比較麻煩,主要的問題在于:盡管也可以用Bert的預(yù)訓(xùn)練參數(shù)初始化Decoder對應(yīng)的Transformer參數(shù),但是目前各種實(shí)驗(yàn)證明這么做效果不好,主要是因?yàn)椋築ert在預(yù)訓(xùn)練的時(shí)候,采用的是雙向語言模型的模式。而一般的NLP任務(wù)在Decoder階段的生成過程,是從左到右一個(gè)單詞一個(gè)單詞逐步生成的。所以,這與Bert的雙向語言模型訓(xùn)練模式不同,無法有效利用Bert在預(yù)訓(xùn)練階段學(xué)習(xí)好的下文的信息提示作用。于是,造成了Bert的預(yù)訓(xùn)練模型無法在Decoder端充分發(fā)揮作用。
所以,如果采取Encoder-Decoder框架做生成式的文本摘要,要想發(fā)揮出Bert的威力,并不容易。因?yàn)樗媾R與Bert做NLP生成類任務(wù)完全相同的問題,而Bert目前在生成模型方面是個(gè)難題,盡管最近出了幾個(gè)方案,但是實(shí)際上,這個(gè)問題貌似仍然并沒有被很好地解決,所以它是嚴(yán)重依賴Bert生成模型的技術(shù)進(jìn)展的。
至于如何在生成類任務(wù)中發(fā)揮Bert的潛力,這是Bert模型改進(jìn)的一個(gè)重要方向,關(guān)于目前的解決方案及效果評價(jià),我會(huì)放在下一篇“模型篇”里分析,所以這里暫時(shí)略過不表。
抽取式文本摘要
抽取式文本摘要?jiǎng)t是個(gè)典型的句子分類問題。意思是模型輸入文章整體的文本內(nèi)容,給定文中某個(gè)指定的句子,模型需要做個(gè)二分類任務(wù),來判斷這個(gè)句子是不是應(yīng)該作為本文的摘要。所以,抽取式文本摘要本質(zhì)上是個(gè)句子分類任務(wù),但是與常規(guī)文本分類任務(wù)相比,它有自己獨(dú)特的特點(diǎn),這個(gè)特點(diǎn)是:輸入端需要輸入整個(gè)文章內(nèi)容,而分類的判斷對象僅僅是當(dāng)前要做判斷的某個(gè)句子,整個(gè)文章只是對當(dāng)前句子進(jìn)行判斷的一個(gè)上下文,但是又必須輸入。而一般的文本或者句子分類,輸入的整體就是判斷對象,不存在多出來的這個(gè)上下文的問題。這是它和普通的文本分類任務(wù)的最主要區(qū)別。
所以說,對于抽取式文本摘要任務(wù),盡管可以把它看成個(gè)句子分類任務(wù),但是它的輸入內(nèi)容和輸出對象不太匹配,這個(gè)是關(guān)鍵差異。于是,在模型輸入部分如何表達(dá)這種句子和文章的隸屬關(guān)系方面,需要花些心思。
如果要用Bert做抽取式摘要,也就是用Transformer作為特征抽取器,并用Bert的預(yù)訓(xùn)練模型初始化Transformer參數(shù),以這種方式構(gòu)建一個(gè)句子的二分類任務(wù)。從模型角度,Bert肯定是可以支持做這個(gè)事情的,只需要用Bert的預(yù)訓(xùn)練模型初始化Transformer參數(shù)即可。問題的關(guān)鍵是:如何設(shè)計(jì)并構(gòu)建Transformer的輸入部分?要求是:輸入部分同時(shí)要輸入文章整體的內(nèi)容,并指出當(dāng)前要判斷的句子是哪個(gè)句子。所以,這里的關(guān)鍵是Transformer模型的輸入和輸出如何構(gòu)造的問題,而模型本身應(yīng)用Bert成果則沒什么問題,算是一種常規(guī)的Bert應(yīng)用。
現(xiàn)在可以套用一下這個(gè)方法,也就是在沒看到別人怎么做之前,自己想想你會(huì)怎么做。所以,在沒有看到用Bert做抽取式摘要的論文前,我自己拍腦袋想了想,發(fā)現(xiàn)比較容易想到的有下面兩種方法:
方法一:把Transformer的輸入分為兩個(gè)部分,第一個(gè)部分是文章原文。當(dāng)然,目前Bert支持的最大輸入長度512,所以原文也不能太長;第二個(gè)部分是當(dāng)前要判斷的句子。兩者之間加個(gè)分隔符《SEP》;輸出部分則要求最開始的[CLS]輸入位置對應(yīng)的Transformer最高層輸出0/1兩種分類結(jié)果,如果結(jié)果是1,則意味著這個(gè)句子可以作為摘要句,0則意味著此句不會(huì)作為摘要句。只要依次對文中每個(gè)句子都如此判斷一下,把分類為1的句子按照句中順序拼接,就可以得到文本摘要。這是一種可能的方法;目前我尚未看到如此做的模型,當(dāng)然,我自己也覺得這個(gè)方式繁瑣了些。
方法二:Transformer的輸入部分只有一個(gè)部分,就是文章本身的完整的內(nèi)容,由多個(gè)句子構(gòu)成。如果是這種輸入,那么帶來的新的問題是:我們怎么知道當(dāng)前要判斷哪個(gè)句子是否適合作為摘要句呢?可以這么做:在Transformer的輸入部分,在每個(gè)句子頭加入一個(gè)句子起始標(biāo)記《BOS》,或者把這個(gè)分隔符號理解為是句子之間的分隔符也可以;或者也可以在句子的對應(yīng)Embedding里加入句子編號,用來區(qū)分不同句子的界限應(yīng)該也可以(Bert的輸入部分除了常規(guī)的單詞embedding,對于多句子類型任務(wù),還有句子的embedding,屬于相同句子的單詞共享相同的句子embedding)。盡管可以有不同的具體做法,但是核心思想是相近的:就是在輸入端明確加入一些標(biāo)記符號,用來區(qū)分不同的句子。
輸入部分的問題解決了,于是,剩下的問題就是Transformer的輸出部分怎么設(shè)計(jì)了。同樣的,這里可能有幾種不同的做法。拍下腦袋,比如可以模仿閱讀理解的輸出,要求Transformer的輸出部分輸出若干個(gè)句子的《起始Position,終止Position》,這是一種可能做法;比如也可以在最開始的輸入[CLS]符號對應(yīng)的Transformer最高層Embedding上面上面綁定K個(gè)輸出頭,每個(gè)輸出頭輸出被選為摘要的句子編號,指定最多輸出K個(gè)摘要句子,這是另外一種可能做法;除此外,還有其它的可能做法,比如也可以在Transformer的最高層各個(gè)單詞的embedding序列里,找出輸入側(cè)對應(yīng)的句子頭位置《BOS》的相應(yīng)位置的高層Embedding信息,每個(gè)《BOS》對應(yīng)的輸入位置對應(yīng)高層embedding作為這個(gè)句子的信息集成,在這個(gè)句子信息Embeddding基礎(chǔ)上設(shè)計(jì)分類層,這樣等于給每個(gè)句子進(jìn)行分類。
還有其它做法嗎?應(yīng)該還有。比如還可以把摘要看成一個(gè)類似分詞或者POS的單字/單詞分類問題,每個(gè)輸入單詞對應(yīng)的Transformer高層節(jié)點(diǎn),要求對每個(gè)單詞進(jìn)行分類,而輸出的類別可以設(shè)計(jì)為[BOS(摘要句子起始單詞標(biāo)記),MOS(摘要句子句中單詞標(biāo)記),EOS(摘要句子結(jié)束單詞標(biāo)記),OOS(非摘要句單詞標(biāo)記)],這也是一種可能的做法,這是把摘要看成序列標(biāo)注問題來做的。當(dāng)然,你也可以拍拍腦袋,估計(jì)還有很多其它做法。
目前有個(gè)論文(Fine-tune BERT for Extractive Summarization)是做抽取式文本摘要的。它的具體做法基本遵循上面講的方法二的框架,在輸入部分用特殊分隔符分隔開不同的句子,每個(gè)句子加入句子頭標(biāo)記《CLS》,在輸出部分則要求在輸入為《CLS》位置對應(yīng)的Transformer最高層embedding之上,構(gòu)建輸出層,用來判斷這個(gè)句子是否會(huì)被選為摘要句子。和上面的敘述方法不同的地方是:它在《CLS》輸出層和真正的分類層之間又多加入了一個(gè)網(wǎng)絡(luò)層,用來集成文章中不同句子之間的關(guān)系,比如用線性分類/transformer/RNN等模型來集成句子間的信息,然后在此基礎(chǔ)上,再輸出真正的句子分類結(jié)果。不過,從試驗(yàn)結(jié)果看,其實(shí)這個(gè)新加入的中間網(wǎng)絡(luò)層,使用不同模型效果差不太多,這說明在這里加入新的網(wǎng)絡(luò)層并沒有捕獲新的信息,我個(gè)人覺得這塊是可以拿掉簡化一下模型的。至于用上述思路引入Bert預(yù)訓(xùn)練模型的摘要系統(tǒng),從效果上看,雖然優(yōu)于目前的SOTA模型,但是并沒有超過太多。而這說明了什么呢?這是值得思考的一個(gè)問題。
應(yīng)用領(lǐng)域:NLP中的數(shù)據(jù)增強(qiáng)
我們知道,在CV領(lǐng)域中,圖像數(shù)據(jù)增強(qiáng)對于效果有非常重要的作用,比如圖像旋轉(zhuǎn)或者摳出一部分圖片作為新增的圖像訓(xùn)練實(shí)例。其實(shí),NLP任務(wù)也面臨類似的需求,之所以會(huì)有這種需求,是因?yàn)椋喝绻?xùn)練數(shù)據(jù)越充分,能夠覆蓋更多的情形,那么模型效果越好,這個(gè)道理好理解。問題是怎么才能低成本地拓展任務(wù)地新訓(xùn)練數(shù)據(jù)。
當(dāng)然,你可以選擇人工標(biāo)注更多的訓(xùn)練數(shù)據(jù),但無奈人工標(biāo)注訓(xùn)練數(shù)據(jù)成本太高,能否借助一些模型來輔助作出新的訓(xùn)練數(shù)據(jù)實(shí)例,以此來增強(qiáng)模型性能呢?NLP數(shù)據(jù)增強(qiáng)就是干這個(gè)事情的。
回到我們的主題上來:能否利用Bert模型來擴(kuò)充人工標(biāo)注好的訓(xùn)練數(shù)據(jù)?這是在數(shù)據(jù)增強(qiáng)領(lǐng)域應(yīng)用Bert的核心目標(biāo)。目標(biāo)很明確,剩下的問題是具體的方法而已。這個(gè)領(lǐng)域算是比較有新意的Bert應(yīng)用領(lǐng)域。
論文《Conditional BERT Contextual Augmentation》
這是個(gè)比較有趣的應(yīng)用,來自中科院信工所。它的目的是通過改造Bert預(yù)訓(xùn)練模型,來產(chǎn)生新增的訓(xùn)練數(shù)據(jù),以此來增強(qiáng)任務(wù)分類效果。就是說對于某個(gè)任務(wù),輸入訓(xùn)練數(shù)據(jù)a,通過Bert,產(chǎn)生訓(xùn)練數(shù)據(jù)b,利用b來增強(qiáng)分類器性能。
它的改造方法如下:將Bert的雙向語言模型,改造成條件語言模型。所謂“條件”,意思是對于訓(xùn)練數(shù)據(jù)a,Mask掉其中的某些單詞,要求Bert預(yù)測這些被Mask掉的單詞,但是與通常的Bert預(yù)訓(xùn)練不同的是:它在預(yù)測被Mask掉的單詞的時(shí)候,在輸入端附加了一個(gè)條件,就是這個(gè)訓(xùn)練數(shù)據(jù)a的類標(biāo)號,假設(shè)訓(xùn)練數(shù)據(jù)的類標(biāo)號已知,要求根據(jù)訓(xùn)練數(shù)據(jù)a的類標(biāo)號以及上下文,通過Bert去預(yù)測某些單詞。之所以這樣,是為了能夠產(chǎn)生更有意義的訓(xùn)練數(shù)據(jù)。比如對于情感計(jì)算任務(wù)來說,某個(gè)具備正向情感的訓(xùn)練實(shí)例S,mask掉S中的情感詞“good”,要求Bert生成新的訓(xùn)練實(shí)例N,如果不做條件約束,那么Bert可能產(chǎn)生預(yù)測單詞“bad”,這也是合理的,但是作為情感計(jì)算來說,類別的含義就完全反轉(zhuǎn)了,而這不是我們想要的。我們想要的是:新產(chǎn)生的訓(xùn)練例子N,也是表達(dá)正向情感的,比如可以是“funny”,而如果加上類標(biāo)號的約束,就可以做到這一點(diǎn)。具體增加約束的方式,則是將原先Bert中輸入部分的Sentence embedding部分,替換成輸入句子的對應(yīng)類標(biāo)號的embedding,這樣就可以用來生成滿足類條件約束的新的訓(xùn)練數(shù)據(jù)。這個(gè)做法還是很有意思的。
如果將通過Bert產(chǎn)生的新訓(xùn)練數(shù)據(jù)增加到原有的訓(xùn)練數(shù)據(jù)中,論文證明了能夠給CNN和RNN分類器帶來穩(wěn)定的性能提升。
論文《Data Augmentation for BERT Fine-Tuning in Open-Domain Question Answering》
這篇論文也涉及到了NLP中的數(shù)據(jù)增強(qiáng),不過這個(gè)數(shù)據(jù)增強(qiáng)不像上面的文章一樣,訓(xùn)練數(shù)據(jù)通過Bert產(chǎn)生,貌似是在QA問題里面采用規(guī)則的方式擴(kuò)充正例和負(fù)例,做例子本身沒什么特別的技術(shù)含量,跟Bert也沒啥關(guān)系。它探討的主要是在Bert模型下的QA任務(wù)中,如何使用這些增強(qiáng)的訓(xùn)練數(shù)據(jù)。有價(jià)值的結(jié)論是:如果同時(shí)增加通過增強(qiáng)產(chǎn)生的正例和負(fù)例,有助于增加Bert的應(yīng)用效果;而且Stage-wise方式增加增強(qiáng)數(shù)據(jù)(就是原始訓(xùn)練數(shù)據(jù)和增強(qiáng)訓(xùn)練數(shù)據(jù)分多個(gè)階段依次進(jìn)行訓(xùn)練,而且距原始訓(xùn)練數(shù)據(jù)越遠(yuǎn)的應(yīng)該越先進(jìn)行Fine-tuning),效果好于把增強(qiáng)數(shù)據(jù)和原始數(shù)據(jù)混合起來單階段訓(xùn)練的模式。
所以,上面兩個(gè)文章結(jié)合著看,算是用Bert產(chǎn)生新的訓(xùn)練實(shí)例以及如何應(yīng)用這種增強(qiáng)實(shí)例的完整過程。
應(yīng)用領(lǐng)域:文本分類
文本分類是個(gè)NLP中歷史悠久,源遠(yuǎn)流長…。??傊容^成熟的應(yīng)用領(lǐng)域。它的意思是給定一個(gè)文檔,模型告訴這是哪個(gè)類別,是講的“體育”還是“娛樂”,總之就是這個(gè)意思。
那么,Bert應(yīng)用在這個(gè)領(lǐng)域效果如何呢?目前也有工作。
論文《DocBERT: BERT for Document Classification》
在四個(gè)常用的標(biāo)準(zhǔn)文本分類數(shù)據(jù)集合上,利用Bert的預(yù)訓(xùn)練模型進(jìn)行了效果測試,應(yīng)該說效果能夠達(dá)到以及超過之前的各種方法,但是總體而言,相對之前的常用方法比如LSTM或者CNN模型,提升幅度不算太大,基本提升幅度在3%到6%之間。
對于文本分類,Bert并未能夠獲得非常大的效果提升,這個(gè)結(jié)果其實(shí)是可以理解的。因?yàn)榘岩粋€(gè)還比較長的文檔分到一個(gè)類別里,這種任務(wù)偏語言淺層特征的利用,而且指示性的單詞也比較多,應(yīng)該算是一種比較好解決的任務(wù),任務(wù)難度偏簡單,Bert的潛力感覺不太容易發(fā)揮出來。
應(yīng)用領(lǐng)域:序列標(biāo)注
嚴(yán)格地說,序列標(biāo)注并非一個(gè)具體地應(yīng)用領(lǐng)域,而是NLP中一種問題解決模式。很多NLP任務(wù)都可以映射為序列標(biāo)注問題,比如分詞,詞性標(biāo)注,語義角色標(biāo)注等等,非常多。它的一個(gè)特點(diǎn)是:對于句子中任意一個(gè)單詞,都會(huì)有一個(gè)對應(yīng)的分類輸出結(jié)果。在原始的Bert論文里面也給出了序列標(biāo)注任務(wù)如何使用Bert的預(yù)訓(xùn)練過程,實(shí)際應(yīng)用的時(shí)候,應(yīng)用模式就是那種模式。
如果不考慮具體應(yīng)用場景,把不同應(yīng)用場景映射到序列標(biāo)注這種問題解決模式的話,目前也有一些工作使用Bert來增強(qiáng)應(yīng)用效果。
論文《Toward Fast and Accurate Neural Chinese Word Segmentation with Multi-Criteria Learning》
這個(gè)工作使用Bert作為多標(biāo)準(zhǔn)分詞的特征抽取器。所謂多標(biāo)準(zhǔn),是指的同一個(gè)語言片段,在不同場景下可能有不同粒度的分詞結(jié)果。它使用Bert預(yù)訓(xùn)練的Transformer作為主要特征抽取器,針對不同數(shù)據(jù)集合可能分詞標(biāo)準(zhǔn)不同,所以在Transformer之上,為每個(gè)分詞數(shù)據(jù)集合構(gòu)建一個(gè)獨(dú)有的參數(shù)頭,用來學(xué)習(xí)各自的標(biāo)準(zhǔn)。同時(shí)增加一個(gè)共享的參數(shù)頭,用來捕捉共性的信息。在此之上,再用CRF來做全局最優(yōu)規(guī)劃。這個(gè)模型在多個(gè)分詞數(shù)據(jù)集合上取得了最高的分詞效果。不過總體而言,效果提升不太明顯。這也可能與之前的技術(shù)方法已經(jīng)把分詞解決的還比較好,所以基準(zhǔn)比較高有關(guān)系。
論文《BERT Post-Training for Review Reading Comprehension and Aspect-based Sentiment Analysis》
這個(gè)工作做了兩個(gè)事情,一個(gè)是閱讀理解,另外一個(gè)是情感計(jì)算。其中情感計(jì)算的Aspect Extract任務(wù)是采用序列標(biāo)注的方式做的,利用Bert的預(yù)訓(xùn)練過程后,與之前的最好方法比,效果提升不明顯。
論文《Multi-Head Multi-Layer Attention to Deep Language Representations for Grammatical Error Detection》
這個(gè)工作主要解決的應(yīng)用問題是句法錯(cuò)誤檢測。把這個(gè)問題映射成了序列標(biāo)注問題,使用Bert預(yù)訓(xùn)練后,效果提升明顯,與基準(zhǔn)方法比,性能有大幅度地提高;
上文在談對話系統(tǒng)應(yīng)用領(lǐng)域時(shí),還提到過一個(gè)單輪對話系統(tǒng)利用Bert進(jìn)行槽位填充的工作,也是映射成序列標(biāo)注問題來解決的,那個(gè)工作結(jié)論是兩個(gè)數(shù)據(jù)集合,一個(gè)提升2%,一個(gè)提升12%。
綜合看,大部分序列標(biāo)注任務(wù)在利用了Bert后,盡管把任務(wù)效果都能做到當(dāng)前最好,但是效果提升幅度,與很多其它領(lǐng)域比,不算大。這可能跟具體的應(yīng)用領(lǐng)域有關(guān)系。
應(yīng)用領(lǐng)域:其它
除了上面我進(jìn)行了歸類的Bert應(yīng)用外,還有零星一些其它領(lǐng)域的Bert應(yīng)用工作,這里簡單提幾句。
論文《Assessing BERT’s Syntactic Abilities》
這個(gè)工作對Bert的句法分析能力做了測試,使用主語-謂語一致性任務(wù)做為測試任務(wù)。與傳統(tǒng)表現(xiàn)較好的LSTM模型做了對比,測試數(shù)據(jù)表現(xiàn)Bert效果大幅超過LSTM的效果,當(dāng)然作者強(qiáng)調(diào)因?yàn)橐恍┰蜻@個(gè)數(shù)據(jù)不可直接對比。不過至少說明Bert在句法方面是不弱于或者強(qiáng)于LSTM的。
另外,還有兩篇做NLP to SQL的工作(Achieving 90% accuracy in WikiSQL/ Table2answer: Read the database and answer without SQL),意思是不用你寫SQL語句,而是用自然語言發(fā)出命令,系統(tǒng)自動(dòng)轉(zhuǎn)化成可執(zhí)行的SQL語句,使用Bert后,也取得了一定幅度的性能提升。我理解這種任務(wù)因?yàn)槭穷I(lǐng)域受限的,所以相對容易些,我個(gè)人對這個(gè)方向也沒啥興趣,所以這里不展開了,感興趣的可以找論文看。
除此外,還有兩篇做信息抽取的工作,使用Bert后,效果也比較一般,這個(gè)領(lǐng)域其實(shí)是值得深入關(guān)注的。
目前已經(jīng)發(fā)表的Bert應(yīng)用,絕大部分基本都已經(jīng)被我歸類到上面各個(gè)領(lǐng)域里了。這里明確提到的論文,都是我認(rèn)為有一定參考價(jià)值的一部分,并不是全部,我篩掉了一批我認(rèn)為質(zhì)量不是太高,或者參考價(jià)值不大,或者我認(rèn)為方法過于復(fù)雜的工作,這點(diǎn)還請注意。當(dāng)然,一定也有一部分有價(jià)值的工作,因?yàn)闆]有進(jìn)入我狹窄的視野,所以沒有被列入,這也是有可能的。
看我72變:對應(yīng)用問題的重構(gòu)
上面介紹了不少NLP領(lǐng)域如何應(yīng)用Bert提升效果,方法眾多,效果各異,容易讓人看起來眼花繚亂,不太能摸著頭腦。也許你在沒看這些內(nèi)容之前,腦子里就一個(gè)印象:Bert大法好,對NLP各種應(yīng)用都能有很大性能提升作用。事實(shí)是這樣嗎?其實(shí)并不是。在你看完上面的內(nèi)容后,看到了五彩繽紛絢爛多彩的各種方法,可能更容易犯暈,感覺沒啥結(jié)論可下,此刻眼里正閃耀著迷茫的光芒……。
其實(shí),這都是表面現(xiàn)象。我在這里總結(jié)一下。純個(gè)人分析,不保證正確性,猜對算碰巧,猜錯(cuò)也正常。
盡管看上去有各種各樣不同的NLP任務(wù),其實(shí)如何應(yīng)用Bert,一切答案在原始的Bert論文里,大部分都講到了。其利用Bert的過程是基本一樣的,核心過程都是用Transformer作為特征抽取器,用Bert預(yù)訓(xùn)練模型初始化Transformer的參數(shù),然后再用當(dāng)前任務(wù)Fine-tuning一下,僅此而已。
如果我們再細(xì)致一些,分任務(wù)類型來看的話,歸納下,結(jié)論很可能會(huì)是這樣的:
如果應(yīng)用問題能夠轉(zhuǎn)化成標(biāo)準(zhǔn)的序列標(biāo)注問題(分詞/詞性標(biāo)注/語義角色標(biāo)注/對話槽位填充/信息抽取等,很多NLP任務(wù)可以轉(zhuǎn)化為序列標(biāo)注的問題解決形式),或者單句或文檔分類問題(文本分類/抽取式文本摘要可以看成一種帶上下文的單句分類問題),那么可以直接利用Bert的預(yù)訓(xùn)練過程,任務(wù)無需特殊改造;目前已有實(shí)驗(yàn)結(jié)果,貌似說明在這兩類任務(wù)中,使用Bert應(yīng)該能夠達(dá)到最好的效果,但是與之前未采納Bert的最好模型比,多數(shù)任務(wù)性能提升似乎相對有限。這其中有什么深層的原因嗎?我有個(gè)判斷,后面會(huì)說;
如果是短文檔的雙句關(guān)系判斷任務(wù),比如典型的就是QA/閱讀理解/短文檔搜索/對話等任務(wù),一般利用Bert的方式也是直觀的,就是Bert原始論文中提出的兩個(gè)句子間加分隔符輸入的方式,不需要特殊改造。目前看,這類任務(wù),利用Bert后往往性能有大幅度的提升。
但是,為什么你在看上文的時(shí)候,會(huì)覺得看上去有很多不同的各異的模型呢?主要是因?yàn)橛行㎞LP領(lǐng)域,盡管利用Bert的過程其實(shí)就是上面的過程,但是需要單獨(dú)解決自己任務(wù)的一些特點(diǎn)問題,比如搜索領(lǐng)域的長文檔輸入問題怎么解決,搜索領(lǐng)域的粗排序需要有其它方法;對于抽取式摘要來說,輸入輸出如何設(shè)計(jì)是個(gè)問題,因?yàn)樗推胀ǖ奈谋痉诸惒惶粯?;比如多輪對話系統(tǒng)的歷史信息如何利用,需要有個(gè)歷史信息融合或者選擇的方法存在……諸如此類。其實(shí)關(guān)鍵的應(yīng)用Bert的部分,并無特殊之處。這一切冥冥中,早已經(jīng)在原始的Bert論文里講過了。“被酒莫驚春睡重,賭書消得潑茶香,當(dāng)時(shí)只道是尋常。”很多事,不過如此。
經(jīng)過我此番任性的解釋,此刻,您眼中迷茫的光芒,熄滅了嗎?還是更熾熱了?
貍貓換太子:Fine-tuning 階段的 In Domain 和 Out Domain 問題
如果上面的判斷正確的話,你應(yīng)該問自己一個(gè)問題:“既然看上去貌似Bert更適合處理句子對關(guān)系判斷問題。而對于單句分類,或者序列標(biāo)注問題,盡管有效,但是貌似效果沒那么好。于是,能不能利用下Bert的這一點(diǎn),怎么利用呢?比如說能不能把單句分類問題,或者序列標(biāo)注問題,轉(zhuǎn)化下問題的表達(dá)形式,讓它以雙句關(guān)系判斷的表現(xiàn)形態(tài)出現(xiàn)呢?”
如果你真能問出這個(gè)問題,這意味著,你真是挺適合搞前沿研究的。
事實(shí)上,已經(jīng)有些工作是這么做了,而且事實(shí)證明,如果能夠?qū)?yīng)用問題進(jìn)行重構(gòu)的話,其它事情都不用做,就能直接提升這些任務(wù)的效果,有些任務(wù)效果提升還非常明顯。怎么重構(gòu)呢?對于某些具備一定特性的NLP任務(wù),如果它看上去是單句分類問題,那么可以通過問題重構(gòu),比如引入虛擬句,把單句輸入問題改造成句間關(guān)系判斷問題,這樣就能充分發(fā)揮Bert的這個(gè)特性,直接提升效果。就是這么重構(gòu)。
論文《 BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence》
這個(gè)工作來自復(fù)旦大學(xué)。它利用Bert來優(yōu)化細(xì)粒度的情感分類任務(wù)。所謂細(xì)粒度的情感分類任務(wù),指的是不僅僅對某個(gè)句子或者某個(gè)實(shí)體的整體情感傾向做個(gè)整體判斷,而是對實(shí)體的不同方面作出不同的判斷,比如例子“LOCATION1 is often considered the coolest area of London.”,就是說某個(gè)實(shí)體(這里的例子是某個(gè)地點(diǎn)LOCATION 1)的A方面(比如價(jià)格price)是怎樣的情感傾向,B方面(比如安全性safety)是怎樣的情感傾向等,細(xì)粒度到某個(gè)實(shí)體的某個(gè)方面的情感傾向。
這個(gè)工作做得非常聰明,它把本來情感計(jì)算的常規(guī)的單句分類問題,通過加入輔助句子,改造成了句子對匹配任務(wù)(比如上面的例子,可以增加輔助句:“what do you think of the safety of LOCATION 1”)。我們前面說過,很多實(shí)驗(yàn)證明了:Bert是特別適合做句子對匹配類的工作的,所以這種轉(zhuǎn)換無疑能更充分地發(fā)揮Bert的應(yīng)用優(yōu)勢。而實(shí)驗(yàn)也證明,經(jīng)過這種問題轉(zhuǎn)換,性能有大幅度地提升。
Salesforce也有個(gè)類似想法的工作(Unifying Question Answering and Text Classification via Span Extraction),它的部分實(shí)驗(yàn)結(jié)果也表明,單句分類任務(wù),通過加入輔助句,轉(zhuǎn)化成雙句關(guān)系判斷任務(wù),也能提升任務(wù)效果。
為什么對于Bert應(yīng)用來說,同樣的數(shù)據(jù),同樣的任務(wù),只需要把單句任務(wù)轉(zhuǎn)成句子對匹配任務(wù),效果就突然變好了呢?這個(gè)問題其實(shí)是個(gè)好問題,在后面我會(huì)給兩個(gè)可能的解釋。
這個(gè)方向是值得進(jìn)一步深入拓展的,目前工作還不多,我預(yù)感這里還有很大的潛力可以挖掘,無論是探索還是應(yīng)用角度,應(yīng)該都是這樣的。
競爭優(yōu)勢:Bert擅長做什么?
我們知道,在應(yīng)用Bert的時(shí)候,真正使用某個(gè)應(yīng)用的數(shù)據(jù),是在第二階段Fine-tuning階段,通過用手頭任務(wù)的訓(xùn)練數(shù)據(jù)對Transformer進(jìn)行訓(xùn)練,調(diào)整參數(shù),將Transformer的參數(shù)針對手頭任務(wù)進(jìn)行Fine-tune,之后一般會(huì)獲得明顯的應(yīng)用提升。
這里所謂的In-Domain和Out-Domain問題,指的是:Out-Domain意思是你手頭任務(wù)有個(gè)數(shù)據(jù)集合A,但是在Bert的Fine-tuning階段,用的是其它數(shù)據(jù)集合B。知道了Out-Domain,也就知道In-Domain的意思了,就是說用手頭任務(wù)數(shù)據(jù)集合A去Fine-tune參數(shù),不引入其它數(shù)據(jù)。
那么問題是:為什么手頭任務(wù)是A,要引入數(shù)據(jù)集合B呢?這個(gè)在做具體應(yīng)用的時(shí)候,其實(shí)還是比較常見的。如果你手頭任務(wù)A的訓(xùn)練數(shù)據(jù)足夠大,其實(shí)完全可以走In-Domain的路線就夠了。但是如果你手上的任務(wù)A訓(xùn)練數(shù)據(jù)太小,一般而言,盡管也可以用它去做Bert的Fine-tuning,但是無疑,效果可能有限,因?yàn)閷τ趨?shù)規(guī)模這么大的Bert來講,太少的Fine-tuning數(shù)據(jù),可能無法充分體現(xiàn)任務(wù)特點(diǎn)。于是,我們就期待通過引入和手頭任務(wù)A有一定相近性的數(shù)據(jù)集合B,用B或者A+B去Fine-tune Bert的參數(shù),期待能夠從數(shù)據(jù)集合B Transfer些共性知識給當(dāng)前的任務(wù)A,以提高任務(wù)A的效果。某種角度上,這有點(diǎn)像Multi-Task任務(wù)的目標(biāo)。
那么新的問題是:既然我們期待數(shù)據(jù)集合B能夠遷移些知識給當(dāng)前任務(wù)A,那么這兩個(gè)任務(wù)或者訓(xùn)練數(shù)據(jù)之間必然應(yīng)該有些共性存在。于是,哪些因素決定了不同性質(zhì)的數(shù)據(jù)集合B對當(dāng)前任務(wù)A的影響呢?這個(gè)其實(shí)是個(gè)很實(shí)用也很有意思的問題。
目前針對這些問題,也有一些工作和初步的結(jié)論。
論文《This Is Competition at SemEval-2019 Task 9: BERT is unstable for out-of-domain samples》
研究了Out-Domain對Target 任務(wù)的影響,使用了不同領(lǐng)域的數(shù)據(jù),在Fine-tuning階段使用了大約數(shù)量為9千左右的電子領(lǐng)域的訓(xùn)練數(shù)據(jù),而Target任務(wù)是Hotel領(lǐng)域的??梢钥闯鰜?,這兩個(gè)領(lǐng)域差異還是很大。通過實(shí)驗(yàn)對比,結(jié)論是:如果是Out-Domain這種情況,Target任務(wù)表現(xiàn)非常不穩(wěn)定,10輪測試中,Hotel任務(wù)的性能最低是0,最高71,方差31。可以看出來,這效果簡直是在蹦極和坐火箭之間頻繁切換。為什么會(huì)這樣?目前還沒有解釋。這里是值得深入探討一下的。
從這個(gè)工作反向推導(dǎo),我們可以認(rèn)為,即使數(shù)據(jù)B相對手頭任務(wù)A來說是Out-Domain的,如果它在領(lǐng)域相似性與手頭任務(wù)A越接近,效果理應(yīng)越好,這個(gè)貌似比較直觀好理解,但是這是我的反向推論,并沒看到一些具體研究對此進(jìn)行對比,這個(gè)事情是值得做一下的。
另一個(gè)工作是《Simple Applications of BERT for Ad Hoc Document Retrieval》
盡管它是研究信息檢索的,但是也設(shè)計(jì)了一些跟Out-domain有關(guān)的實(shí)驗(yàn)。它驗(yàn)證了Bert的Fine-tuning階段使用數(shù)據(jù)的一些特性:在Fine-tuning階段的訓(xùn)練數(shù)據(jù)B,與下游任務(wù)的數(shù)據(jù)集合A相比,兩者的任務(wù)相關(guān)性,相比兩者的文本的外在表現(xiàn)形式的相似性來說,對于下游任務(wù)更重要。實(shí)驗(yàn)結(jié)論是:對于微博這種下游短文本檢索任務(wù)(手頭任務(wù)A),盡管它在表現(xiàn)形式上和Trec檢索(Out-Domain數(shù)據(jù)B)這種新聞文本形式上差異較大,但是因?yàn)槎际菣z索任務(wù),所以相對用QA任務(wù)(另外一個(gè)Out-Domain數(shù)據(jù)B)來Finetune Bert來說,效果好,而且好得很明顯。這說明了,對于Out-Domain情況來說,F(xiàn)ine-tuning任務(wù)B和下游任務(wù)A的任務(wù)相似性對于效果影響巨大,我們盡可能找相同或者相近任務(wù)的數(shù)據(jù)來做Fine-tuning,哪怕形式上看上去有差異。
還有一個(gè)工作《Data Augmentation for BERT Fine-Tuning in Open-Domain Question Answering》。
它本身是做數(shù)據(jù)增強(qiáng)的,不過實(shí)驗(yàn)部分的結(jié)果,我相信結(jié)論也應(yīng)該能夠遷移到Out-Domain情形,它的結(jié)論是:假設(shè)有幾個(gè)新增的訓(xùn)練集合,比如B,C,D三個(gè)新數(shù)據(jù)集合,每個(gè)和Target任務(wù)A的數(shù)據(jù)差異遠(yuǎn)近不同,假設(shè)B最遠(yuǎn),C次之,D和A最像。那么如果是這樣的數(shù)據(jù),一種做法是把A+B+C+D放到一起去Fine-tune 模型,另外一種是由遠(yuǎn)及近地分幾個(gè)階段Fine-tune模型,比如先用最遠(yuǎn)的B,然后用C,再然后用最近的D,再然后用A,這種叫Stage-wise的方式。結(jié)論是Stage-wise模式是明顯效果好于前一種方式的。
另外一點(diǎn),我相信對于Out-Domain情況來說,如果Fine-tuning任務(wù)和下游任務(wù)在有相關(guān)性的基礎(chǔ)上,無疑應(yīng)該是數(shù)據(jù)量越大,對下游任務(wù)的正面影響越大。
所以,如果歸納一下目前的研究結(jié)論,以及我自己在現(xiàn)有數(shù)據(jù)基礎(chǔ)上隨意推理的結(jié)論,那么結(jié)論很可能是這樣子的:對于Out-Domain情況,首選和手頭任務(wù)A相同或者相近的任務(wù)B來做Fine-tuning,而至于這兩個(gè)數(shù)據(jù)的領(lǐng)域相似性,當(dāng)然越高越好,而數(shù)據(jù)規(guī)模,也應(yīng)該是越多越好。如果有多個(gè)不同的數(shù)據(jù)可以用,那么根據(jù)它們和手頭任務(wù)的相似性,由遠(yuǎn)及近地分Stage去Fine-tune模型比較好。當(dāng)然,這里面有些因素是我個(gè)人無依據(jù)的推論,實(shí)際情況需要實(shí)驗(yàn)證明,所以還請謹(jǐn)慎參考。
這個(gè)方向其實(shí)是非常有價(jià)值的方向,感覺目前的相關(guān)工作還是太少,有些問題也沒說清,這里是值得深入摸索找到好的經(jīng)驗(yàn)的,因?yàn)槲覀兤匠=?jīng)常會(huì)遇到任務(wù)數(shù)據(jù)不夠的問題,那么想利用好Bert就比較困難,而如果把這個(gè)問題研究透徹,對于很多實(shí)際應(yīng)用會(huì)有巨大的參考價(jià)值。
淘金記:如何尋找未開墾的Bert應(yīng)用領(lǐng)域
在看完目前幾乎所有已發(fā)表的Bert應(yīng)用工作后,事實(shí)表明,盡管Bert在很多應(yīng)用領(lǐng)域取得了進(jìn)展,但是在不同方向上,看上去Bert的引入對于應(yīng)用效果促進(jìn)作用是不同的,有些表現(xiàn)突出的領(lǐng)域會(huì)有甚至100%的效果提升,有些領(lǐng)域的提升就表現(xiàn)相對平平。于是,我問了自己一個(gè)新的問題:為什么會(huì)出現(xiàn)這個(gè)現(xiàn)象呢?這說明了Bert還是有比較適合它的應(yīng)用場景的,如果找到特別適合Bert發(fā)揮的場景,則性能往往會(huì)有極大地提升,但是如果應(yīng)用場景不能充分發(fā)揮Bert的優(yōu)勢,則雖然也會(huì)有些改進(jìn),但是改進(jìn)效果不會(huì)特別明顯。
于是,新的問題就產(chǎn)生了:Bert擅長解決具備什么樣特性的NLP任務(wù)呢?什么樣的場景更適合Bert去解決?
為了回答這個(gè)問題,我對目前的各種工作做了任務(wù)對比,并試圖歸納和推理一些結(jié)論,目的是希望找出:具備哪些特性的任務(wù)是能夠發(fā)揮Bert模型的優(yōu)勢的。分析結(jié)果如下,純屬個(gè)人判斷,錯(cuò)誤難免,還請批判性地謹(jǐn)慎參考,以免對您造成誤導(dǎo)。
第一,如果NLP任務(wù)偏向在語言本身中就包含答案,而不特別依賴文本外的其它特征,往往應(yīng)用Bert能夠極大提升應(yīng)用效果。典型的任務(wù)比如QA和閱讀理解,正確答案更偏向?qū)φZ言的理解程度,理解能力越強(qiáng),解決得越好,不太依賴語言之外的一些判斷因素,所以效果提升就特別明顯。反過來說,對于某些任務(wù),除了文本類特征外,其它特征也很關(guān)鍵,比如搜索的用戶行為/鏈接分析/內(nèi)容質(zhì)量等也非常重要,所以Bert的優(yōu)勢可能就不太容易發(fā)揮出來。再比如,推薦系統(tǒng)也是類似的道理,Bert可能只能對于文本內(nèi)容編碼有幫助,其它的用戶行為類特征,不太容易融入Bert中。
第二,Bert特別適合解決句子或者段落的匹配類任務(wù)。就是說,Bert特別適合用來解決判斷句子關(guān)系類問題,這是相對單文本分類任務(wù)和序列標(biāo)注等其它典型NLP任務(wù)來說的,很多實(shí)驗(yàn)結(jié)果表明了這一點(diǎn)。而其中的原因,我覺得很可能主要有兩個(gè),一個(gè)原因是:很可能是因?yàn)锽ert在預(yù)訓(xùn)練階段增加了Next Sentence Prediction任務(wù),所以能夠在預(yù)訓(xùn)練階段學(xué)會(huì)一些句間關(guān)系的知識,而如果下游任務(wù)正好涉及到句間關(guān)系判斷,就特別吻合Bert本身的長處,于是效果就特別明顯。第二個(gè)可能的原因是:因?yàn)镾elf Attention機(jī)制自帶句子A中單詞和句子B中任意單詞的Attention效果,而這種細(xì)粒度的匹配對于句子匹配類的任務(wù)尤其重要,所以Transformer的本質(zhì)特性也決定了它特別適合解決這類任務(wù)。
從上面這個(gè)Bert的擅長處理句間關(guān)系類任務(wù)的特性,我們可以繼續(xù)推理出以下觀點(diǎn):
既然預(yù)訓(xùn)練階段增加了Next Sentence Prediction任務(wù),就能對下游類似性質(zhì)任務(wù)有較好促進(jìn)作用,那么是否可以繼續(xù)在預(yù)訓(xùn)練階段加入其它的新的輔助任務(wù)?而這個(gè)輔助任務(wù)如果具備一定通用性,可能會(huì)對一類的下游任務(wù)效果有直接促進(jìn)作用。這也是一個(gè)很有意思的探索方向,當(dāng)然,這種方向因?yàn)橐獎(jiǎng)覤ert的第一個(gè)預(yù)訓(xùn)練階段,所以屬于NLP屆土豪們的工作范疇,窮人們還是散退、旁觀、鼓掌、叫好為妙。
第三,Bert的適用場景,與NLP任務(wù)對深層語義特征的需求程度有關(guān)。感覺越是需要深層語義特征的任務(wù),越適合利用Bert來解決;而對有些NLP任務(wù)來說,淺層的特征即可解決問題,典型的淺層特征性任務(wù)比如分詞,POS詞性標(biāo)注,NER,文本分類等任務(wù),這種類型的任務(wù),只需要較短的上下文,以及淺層的非語義的特征,貌似就可以較好地解決問題,所以Bert能夠發(fā)揮作用的余地就不太大,有點(diǎn)殺雞用牛刀,有力使不出來的感覺。
這很可能是因?yàn)門ransformer層深比較深,所以可以逐層捕獲不同層級不同深度的特征。于是,對于需要語義特征的問題和任務(wù),Bert這種深度捕獲各種特征的能力越容易發(fā)揮出來,而淺層的任務(wù),比如分詞/文本分類這種任務(wù),也許傳統(tǒng)方法就能解決得比較好,因?yàn)槿蝿?wù)特性決定了,要解決好它,不太需要深層特征。
第四,Bert比較適合解決輸入長度不太長的NLP任務(wù),而輸入比較長的任務(wù),典型的比如文檔級別的任務(wù),Bert解決起來可能就不太好。主要原因在于:Transformer的self attention機(jī)制因?yàn)橐獙θ我鈨蓚€(gè)單詞做attention計(jì)算,所以時(shí)間復(fù)雜度是n平方,n是輸入的長度。如果輸入長度比較長,Transformer的訓(xùn)練和推理速度掉得比較厲害,于是,這點(diǎn)約束了Bert的輸入長度不能太長。所以對于輸入長一些的文檔級別的任務(wù),Bert就不容易解決好。結(jié)論是:Bert更適合解決句子級別或者段落級別的NLP任務(wù)。
也許還有其它因素,不過貌似不如上面四條表現(xiàn)得這么明顯,所以,我先歸納這四項(xiàng)基本原則吧。
新趨勢:Bert能一統(tǒng)NLP的天下嗎
既然我們歸納出Bert擅長做的事情的特點(diǎn),那么下一步,我們可以按圖索驥,尋找一些目前還沒有人做,但是又特別適合Bert來做的應(yīng)用領(lǐng)域,然后你可以大施拳腳,拳打腳踢,拳腳相向地去施展自己的才智…。
怎么找這些領(lǐng)域呢?你可以去找找看,哪些應(yīng)用領(lǐng)域同時(shí)符合下面幾個(gè)條件中的一個(gè)或者幾個(gè),同時(shí)符合的條件越多,理論上越適合用Bert去做:
1. 輸入不太長,最好是句子或者段落,避免Bert長文檔的問題;
2.語言本身就能夠很好的解決問題,不依賴其它類型的特征;
3.非生成類任務(wù),避開目前Bert做生成類任務(wù)效果不夠好的雷點(diǎn);
4. 最好是能夠涉及到多句子關(guān)系判斷類任務(wù),充分利用Bert 善于做句子匹配任務(wù)的特點(diǎn);
5.最好是能夠牽扯到語義層級的任務(wù),充分利用Bert能夠編碼深層語言知識的優(yōu)點(diǎn);
6.如果是單輸入問題,你想想能不能加入輔助句,把它改造成句子匹配型雙輸入任務(wù);
看到這,您可能開始假裝冒充有好奇心地問我了:那到底哪些應(yīng)用領(lǐng)域符合這些特點(diǎn)呢?……。。嗯,兄弟,你這不是個(gè)好奇心問題,實(shí)際是個(gè)懶漢問題。我請您吃飯,醋都給你準(zhǔn)備好了,現(xiàn)在就差餃子了,就看你的了,麻煩您有問這種問題的時(shí)間,還是自己去整餃子吧…。。臨淵羨魚不如退而包餃子……。
結(jié)語
在Bert出現(xiàn)之前,NLP中不同的應(yīng)用領(lǐng)域,往往各自使用這個(gè)領(lǐng)域有特色的不同的模型,看上去五花八門,差別還是比較大的。例如閱讀理解就是各種花樣的Attention漫天在飛;搜索領(lǐng)域雖然也進(jìn)入DNN時(shí)代了,但是依托的很多還是Learning to rank的框架;文本分類就是典型的LSTM的主戰(zhàn)場……。。
但是隨著Bert的出現(xiàn),我相信以后這種不同應(yīng)用領(lǐng)域中,技術(shù)手段軍閥混戰(zhàn),群雄割據(jù)的局面不會(huì)太持久了,Bert攜預(yù)訓(xùn)練模型之天子令而號諸侯,應(yīng)該會(huì)逐步用一個(gè)相對統(tǒng)一的解決方案,統(tǒng)一掉各個(gè)NLP應(yīng)用領(lǐng)域割據(jù)的局面,收拾舊山河,朝天闕。這很可能意味著一種NLP新時(shí)代的開始,因?yàn)闅v史上貌似還沒有這么大一統(tǒng)的一個(gè)NLP模型存在過。
為什么這么說呢?其實(shí)在本文第一個(gè)小節(jié)的內(nèi)容你已經(jīng)應(yīng)該可以看出這種端倪了,上面涉及了NLP的很多應(yīng)用領(lǐng)域,雖然說Bert在不同應(yīng)用領(lǐng)域的促進(jìn)效果不同,有的大,有的小些,但是幾乎沒有例外的是,都已經(jīng)比之前各個(gè)領(lǐng)域的SOTA方法效果好了,問題無非是好多少而已,而不是好不好的問題。而之前不同領(lǐng)域的SOTA方法,差異是非常大的,尤其是跨領(lǐng)域的時(shí)候,你會(huì)看到五花八門的技術(shù)方案。而這意味著什么呢?意味著起碼在上述領(lǐng)域里,完全可以用Bert的架構(gòu)和模型,替代掉那個(gè)領(lǐng)域的其它所有SOTA方法。而這又意味著什么?意味著“分久必合,合久必分”的歷史規(guī)律中,分久必合的時(shí)代到了,而引領(lǐng)這個(gè)潮流的,就是Bert。這對你來說又意味著什么呢?這意味著你要學(xué)的東西比之前少太多了,學(xué)習(xí)NLP的投入產(chǎn)出性價(jià)比急劇提高。你自己拍著胸脯說,這是不是好事?哎,沒讓你拍別人胸脯啊,兄弟……。。
而隨著逐漸對Bert本身能力的各種增強(qiáng),很可能這種統(tǒng)一的步伐會(huì)越來越快。我估計(jì)這個(gè)時(shí)間應(yīng)該在未來1年到2年,很可能大多數(shù)NLP子領(lǐng)域都會(huì)被統(tǒng)一到Bert兩階段+Transformer特征抽取器的方案框架上來。而我認(rèn)為這是非常好的事情,因?yàn)榇蠹铱梢园丫ν度氲皆鰪?qiáng)基礎(chǔ)模型的能力,只要基礎(chǔ)模型能力有提升,意味著大多數(shù)應(yīng)用領(lǐng)域的應(yīng)用效果會(huì)直接獲得提升,而不用一個(gè)領(lǐng)域一個(gè)領(lǐng)域個(gè)性化地想方案去啃,那樣效率有點(diǎn)低。
是否真的會(huì)發(fā)生這一幕?NLP覆蓋這么廣泛子方向的科研范圍,它允許這么牛X模型的存在嗎?讓我們拭目以待。
當(dāng)然,對此我個(gè)人持樂觀態(tài)度。
這次先這樣吧,連我自己都覺得太長了,看到最后一句的同學(xué),我為你的好學(xué)和耐心點(diǎn)個(gè)贊……。不過請你換位思考一下,你用看完這篇文章的時(shí)間估算一下,我寫這篇文章要花多少時(shí)間?……另外,其實(shí)最近一陣子我心情并不是太好,不過,還是得想法設(shè)法編些段子來逗您笑……。寫完這些AI的文章,我技術(shù)水平?jīng)]見提高,不過轉(zhuǎn)型段子手的可能性確實(shí)大多了 ……。李誕,你給我等著……。
說起來都是淚,其實(shí)也無所謂。很多事,不過如此。
-
nlp
+關(guān)注
關(guān)注
1文章
486瀏覽量
21987
原文標(biāo)題:Bert時(shí)代的創(chuàng)新:Bert在NLP各領(lǐng)域的應(yīng)用進(jìn)展 | 技術(shù)頭條
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論