作者 | 張俊林,中國(guó)中文信息學(xué)會(huì)理事,中科院軟件所博士。目前在新浪微博 AI Lab 擔(dān)任資深算法專家。在此之前,張俊林曾經(jīng)在阿里巴巴任資深技術(shù)專家并負(fù)責(zé)新技術(shù)團(tuán)隊(duì),以及在百度和用友擔(dān)任技術(shù)經(jīng)理及技術(shù)總監(jiān)等職務(wù)。同時(shí)他是技術(shù)書(shū)籍《這就是搜索引擎:核心技術(shù)詳解》(該書(shū)榮獲全國(guó)第十二屆優(yōu)秀圖書(shū)獎(jiǎng))、《大數(shù)據(jù)日知錄:架構(gòu)與算法》的作者。
最近朋友圈被NLP的技術(shù)大新聞刷屏刷得有點(diǎn)多,昨天(2月15日)中午開(kāi)始又被GPT 2.0刷屏了,大致看了下新聞大致了解了下思路,覺(jué)得好像思路還好,但是看GPT 2.0那個(gè)生成的續(xù)寫(xiě)故事的例子確實(shí)嚇了我一跳,這個(gè)效果好到出人意料。我看網(wǎng)上有些有才的朋友評(píng)論說(shuō):“應(yīng)該讓GPT去續(xù)寫(xiě)紅樓夢(mèng)后40回”,我估計(jì)高鶚聽(tīng)后,正在地下或者天上凝視著說(shuō)這句話的朋友瑟瑟發(fā)抖,被人批評(píng)水平不夠100年,本來(lái)就郁悶,結(jié)果目前還冒出一個(gè)替代者,嘿嘿。
還有的朋友說(shuō),也可以讓GPT去把那些挖坑不填坑的垃圾網(wǎng)絡(luò)小說(shuō)作品續(xù)完。我覺(jué)得把GPT當(dāng)作垃圾文學(xué)回收站,也是個(gè)不錯(cuò)的主意,但是我想問(wèn)的是你問(wèn)過(guò)GPT本人的意見(jiàn)嗎?寫(xiě)小說(shuō)這種工作,目前NLP技術(shù)很明顯還差得遠(yuǎn),不過(guò)如果再發(fā)展一步的話,還真有這種可能。
我的預(yù)感,未來(lái)兩年NLP可能會(huì)不斷爆出類似的刷屏新聞,真的進(jìn)入一個(gè)技術(shù)快速發(fā)展期。按理說(shuō),這是NLP研發(fā)者的黃金期,這種時(shí)期最容易出好的成果,但是事實(shí)上,很可能你只能作為看熱鬧的看客,眼看他起高樓,眼看他宴賓客,但是別人的紅火與你無(wú)關(guān)。我想這種心情,昨天估計(jì)不敢刷朋友圈怕心靈創(chuàng)傷難以愈合的的單身狗朋友們,他們對(duì)這種類似的感受是理解最深的。那么為什么這么講呢?原因我后面會(huì)說(shuō)。
昨天下午有位技術(shù)媒體(AI科技大本營(yíng))的朋友問(wèn)我說(shuō)是不是寫(xiě)點(diǎn)看法,我覺(jué)得貌似從技術(shù)上看算是正常進(jìn)展,所以寫(xiě)不寫(xiě)都行,看了論文再?zèng)Q定。結(jié)果一直開(kāi)會(huì)開(kāi)到晚上,回家找來(lái)論文仔細(xì)看了一看,再結(jié)合前幾天媒體廣泛傳播的微軟的MT-DNN 技術(shù),它們之間以及和Bert之間,是有內(nèi)在聯(lián)系的,所以覺(jué)得可以放一起簡(jiǎn)單談?wù)効捶ǎ谑莿?dòng)手熬夜寫(xiě)了這篇。本來(lái)我春節(jié)期間寫(xiě)好了三篇推薦系統(tǒng)召回模型系列的文章,想最近先發(fā)一篇的,想了想既然GPT 2.0熱度高,不如蹭個(gè)熱度先發(fā)了,召回模型以后再慢慢陸續(xù)發(fā)出來(lái)吧。
GPT 2.0到底做了什么
之前在介紹Bert的文章里:從Word Embedding到Bert模型—自然語(yǔ)言處理中的預(yù)訓(xùn)練技術(shù)發(fā)展史,我說(shuō)GPT有個(gè)缺點(diǎn),就是作者不太會(huì)炒作,因?yàn)樗莻€(gè)非常扎實(shí)的重大NLP進(jìn)展,出生證日期顯示年齡比Bert大,但是Bert哇哇墜地就引來(lái)各界慈愛(ài)的目光和交口稱贊,GPT只能躲在無(wú)人角落里暗地淚垂,演繹了算法模型界的真正的同人不同命,冰火兩重天。沒(méi)想到時(shí)過(guò)不到4個(gè)月,GPT 2.0就爆紅,被推上打著聚光燈的華美舞臺(tái),驚艷亮相。
炒作能力見(jiàn)長(zhǎng)進(jìn),其實(shí)挺好,好工作其實(shí)是應(yīng)該P(yáng)R的,這樣能讓更多人跟進(jìn)真正有價(jià)值的工作,而這會(huì)更進(jìn)一步促進(jìn)領(lǐng)域的進(jìn)步和發(fā)展,形成正循環(huán)。而不是特別好的工作過(guò)度PR,會(huì)錯(cuò)誤地引導(dǎo)大量人力/時(shí)間/機(jī)器等資源投入到錯(cuò)誤的方向,這個(gè)其實(shí)是種資源浪費(fèi)。
在談GPT 2.0之前,先回顧下它哥GPT 1.0,這個(gè)之前我在介紹Bert模型的時(shí)候介紹過(guò),過(guò)程參考上圖,簡(jiǎn)述如下:GPT 1.0采取預(yù)訓(xùn)練+FineTuning兩個(gè)階段,它采取Transformer作為特征抽取器。預(yù)訓(xùn)練階段采用“單向語(yǔ)言模型”作為訓(xùn)練任務(wù),把語(yǔ)言知識(shí)編碼到Transformer里。第二階段,在第一階段訓(xùn)練好的模型基礎(chǔ)上,通過(guò)Finetuning來(lái)做具體的NLP任務(wù)。GPT 1.0本身效果就很好,不過(guò)之前說(shuō)過(guò),因?yàn)椴粫?huì)PR,所以默默無(wú)聞,直到Bert爆紅后,才被人偶爾提起。
從大框架上來(lái)說(shuō),Bert基本就是GPT 1.0的結(jié)構(gòu),除了預(yù)訓(xùn)練階段采取的是“雙向語(yǔ)言模型”之外,它們并沒(méi)什么本質(zhì)差異,其它的技術(shù)差異都是細(xì)枝末節(jié),不影響大局,基本可忽略。
那么GPT 2.0本質(zhì)上是怎么做的呢?最大的改進(jìn)是什么?其實(shí)幾句話就能說(shuō)明白,就是上圖寫(xiě)的內(nèi)容。
它的大框架其實(shí)還是GPT 1.0的框架,但是把第二階段的Finetuning做有監(jiān)督地下游NLP任務(wù),換成了無(wú)監(jiān)督地做下游任務(wù),為啥這么做?后面會(huì)講。
我相信如果你理解GPT 1.0或者Bert,那么是非常容易理解GPT 2.0的創(chuàng)新點(diǎn)在哪里的。
那么它最大的改進(jìn)在哪里?本質(zhì)上,GPT2.0選擇了這么一條路來(lái)強(qiáng)化Bert或者是強(qiáng)化GPT 1.0的第一個(gè)預(yù)訓(xùn)練階段:首先把Transformer模型參數(shù)擴(kuò)容,常規(guī)的Transformer Big包含24個(gè)疊加的Block,就是說(shuō)這個(gè)樓層有24層高,GPT 2.0大干快上,加班加點(diǎn),把樓層連夜蓋到了48層,高了一倍,參數(shù)規(guī)模15億,這個(gè)還是很壯觀的,目前貌似還沒(méi)有看到過(guò)Transformer樓層有這么高的模型。
那么,為什么要擴(kuò)容呢?這個(gè)只是手段,不是目的。真正的目的是:GPT 2.0準(zhǔn)備用更多的訓(xùn)練數(shù)據(jù)來(lái)做預(yù)訓(xùn)練,更大的模型,更多的參數(shù),意味著更高的模型容量,所以先擴(kuò)容,免得Transformer樓層不夠多的房間(模型容量)容納不下過(guò)多的住戶(就是NLP知識(shí))。
水庫(kù)擴(kuò)容之后,我們就可以開(kāi)閘放水了。本質(zhì)上GPT 2.0主要做的是:找更大數(shù)量的無(wú)監(jiān)督訓(xùn)練數(shù)據(jù),這個(gè)其實(shí)好辦,反正是無(wú)監(jiān)督的,網(wǎng)上有的是,估計(jì)未來(lái)有一天我寫(xiě)的這篇文章也能住進(jìn)GPT 2.0的Transformer客房里。所以,GPT2.0找了800萬(wàn)互聯(lián)網(wǎng)網(wǎng)頁(yè)作為語(yǔ)言模型的訓(xùn)練數(shù)據(jù),它們被稱為WebText。
當(dāng)然,光量大還不夠,互聯(lián)網(wǎng)網(wǎng)頁(yè)還有個(gè)好處,覆蓋的主題范圍非常廣,800萬(wàn)網(wǎng)頁(yè),主題估計(jì)五花八門(mén),你能想到的內(nèi)容,除了國(guó)家禁止傳播的黃賭毒,估計(jì)在里面都能找到。這帶來(lái)另外一個(gè)好處:這樣訓(xùn)練出來(lái)的語(yǔ)言模型,通用性好,覆蓋幾乎任何領(lǐng)域的內(nèi)容,這意味著它可以用于任意領(lǐng)域的下游任務(wù),有點(diǎn)像圖像領(lǐng)域的Imagenet的意思。
GPT 2.0論文其實(shí)更強(qiáng)調(diào)訓(xùn)練數(shù)據(jù)的通用性強(qiáng)這點(diǎn)。當(dāng)然,除了量大通用性強(qiáng)外,數(shù)據(jù)質(zhì)量也很重要,高質(zhì)量的數(shù)據(jù)必然包含更好的語(yǔ)言及人類知識(shí),所以GPT 2.0還做了數(shù)據(jù)質(zhì)量篩選,過(guò)濾出高質(zhì)量的網(wǎng)頁(yè)內(nèi)容來(lái)。
之后,GPT 2.0用這些網(wǎng)頁(yè)做“單向語(yǔ)言模型”,我這里強(qiáng)調(diào)下,仍然是類似GPT 1.0的單向語(yǔ)言模型,而不是Bert的雙向語(yǔ)言模型任務(wù),后面我會(huì)單獨(dú)講下對(duì)這個(gè)事情的看法。這樣GPT就可以訓(xùn)練出一個(gè)更好的預(yù)訓(xùn)練模型了,盡管GPT 2.0沒(méi)有像Bert或者GPT 1.0版本一樣,拿這個(gè)第一階段的預(yù)訓(xùn)練模型有監(jiān)督地去做第二階段的Finetuning任務(wù),而是選擇了無(wú)監(jiān)督地去做下游任務(wù),盡管這看著和Bert差異很大,其實(shí)這點(diǎn)并不重要,甚至你都可以忽略掉這個(gè)過(guò)程(當(dāng)然,最吸引眼球的是第二個(gè)過(guò)程),要記住對(duì)于GPT 2.0來(lái)說(shuō)最重要的其實(shí)是第一個(gè)階段。
其實(shí),如果你不是非常專業(yè)的前沿NLP研究者的話,了解GPT 2.0,這就足夠了,這即使不是GPT 2.0的百分之百,也有它的百分之80了。至于它提到的對(duì)Transformer結(jié)構(gòu)的微調(diào),以及BPE輸入方式,我相信都是不太關(guān)鍵的改動(dòng),應(yīng)該不影響大局。
如果你細(xì)致思考的話,上面講述的GPT流程,其實(shí)隱含了三個(gè)問(wèn)題。
第一問(wèn)題是:為什么GPT 2.0第二階段不通過(guò)Finetuning去有監(jiān)督地做下游任務(wù)呢?
其實(shí)GPT的作者是想通過(guò)這種方式說(shuō)明:你看,通過(guò)這種改造,GPT 2.0的Transformer學(xué)到了多少知識(shí)呀,通用性多強(qiáng)啊,做下游任務(wù)的時(shí)候,包括語(yǔ)言模型、QA、摘要、機(jī)器翻譯這么多任務(wù),即使不用有監(jiān)督的方式,直接拿第一階段用語(yǔ)言模型訓(xùn)練好的模型,都能比較好地做這些任務(wù)(從無(wú)監(jiān)督的角度比,效果確實(shí)挺好,但是跟目前有監(jiān)督的方法比很多效果差的還遠(yuǎn),這也正常)。
GPT作者心里想對(duì)你說(shuō)的是:兄dei(說(shuō)起這個(gè)流行詞,我就有點(diǎn)哭笑不得,因?yàn)樗屛蚁肫鹨患拢何夷?歲的娃今年春節(jié)期間竟然對(duì)她媽媽說(shuō):兄dei,給我買(mǎi)個(gè)玩具小狗可好?),我就問(wèn)你神奇不神奇?驚喜不驚喜?嗯,其它任務(wù)其實(shí)不驚奇,但是能做機(jī)器翻譯這個(gè)確實(shí)有點(diǎn)意思,不展開(kāi)講了,建議機(jī)器翻譯的實(shí)驗(yàn)部分可以好好看看,想想為什么,論文里說(shuō)了這其實(shí)是個(gè)事故和意外,哈哈。
所以,第一個(gè)問(wèn)題的答案是:無(wú)監(jiān)督地去做很多第二階段的任務(wù),只是GPT作者想說(shuō)明在第一階段Transformer學(xué)到了很多通用的包含各個(gè)領(lǐng)域的知識(shí),第二部分各種實(shí)驗(yàn)是對(duì)這點(diǎn)的例證,如此而已。這是為何說(shuō)第二階段其實(shí)不重要,因?yàn)樗皇钦撐牡?a target="_blank">中心思想,而是說(shuō)明中心思想的例子。
第二個(gè)問(wèn)題是:在預(yù)訓(xùn)練階段,為什么GPT 2.0仍然固執(zhí)地用單向語(yǔ)言模型,而不是雙向語(yǔ)言模型呢?
關(guān)于這點(diǎn),我講講我的看法,當(dāng)然你別太嚴(yán)肅地看我下面的說(shuō)法,就當(dāng)是個(gè)我編撰的科技版八卦。技術(shù)科普沒(méi)必要老板著臉推公式,是吧,反正這是我的理念。
我的不太準(zhǔn)的第六感隱隱約約地告訴我:貌似GPT的作者們,對(duì)于GPT作為本來(lái)該火的前輩模型,結(jié)果默默無(wú)聞,而后來(lái)居上的Bert爆紅,可能對(duì)這點(diǎn)有點(diǎn)意見(jiàn)?因?yàn)樗鼈儍烧邇H有的大的不同就是GPT用的單向語(yǔ)言模型,Bert用的雙向語(yǔ)言模型做預(yù)訓(xùn)練。所以感覺(jué)他們?cè)谧鯣PT 2.0的時(shí)候憋著一口氣。
為啥這么講呢?因?yàn)锽ert在論文的實(shí)驗(yàn)部分已經(jīng)證明了:Bert的效果比GPT好主要?dú)w因于這個(gè)雙向語(yǔ)言模型(參考上圖Bert的實(shí)驗(yàn)結(jié)果,去掉雙向語(yǔ)言模型的對(duì)比模型其實(shí)就等價(jià)于GPT 1.0)。按理說(shuō),正常的思考模式,后面的改進(jìn)模型應(yīng)該采納雙向語(yǔ)言模型,原因很簡(jiǎn)單,因?yàn)樗葐蜗虻男Ч谩?/p>
但是,GPT 2.0仍然固執(zhí)地選擇單向語(yǔ)言模型(也許GPT作者只想強(qiáng)調(diào)他們想做語(yǔ)言模型這個(gè)事情,畢竟生成內(nèi)容后續(xù)單詞這種模式,單向語(yǔ)言模型更方便,這估計(jì)是真正原因。不過(guò)既然我已經(jīng)開(kāi)始編八卦了,就索性編完,畢竟我不是個(gè)輕言放棄的人,哈哈),貌似作者們選擇了另外一種打算趕超Bert的方式,就是提升模型參數(shù)容量和增加訓(xùn)練數(shù)據(jù)的數(shù)量,選了這么條路。我估計(jì)意思是說(shuō),Bert你別得意得太早,盡管我用單向語(yǔ)言模型,一樣能干翻你。
GPT 2.0的論文在末尾留了個(gè)引子,說(shuō)打算試試看GPT 2.0的單向語(yǔ)言模型是不是就比Bert的雙向語(yǔ)言模型差。估計(jì)他們還會(huì)推出GPT 3.0,但是肯定還是單向語(yǔ)言模型,就是說(shuō)人家不服氣,要靠其它方法用單向語(yǔ)言模型超過(guò)Bert。
嘿嘿,當(dāng)然,在強(qiáng)調(diào)一下,這是我編的八卦,或者是臆斷,未必是事實(shí),但是我死活想不明白為啥他們做下游任務(wù)的時(shí)候不用雙向語(yǔ)言模型,想來(lái)想去貌似只有這個(gè)解釋最合理,哈哈,這是我的小人之心和玩笑話,別當(dāng)真。
下面嚴(yán)肅起來(lái),不過(guò)我的感覺(jué)是,如果GPT 2.0采取雙向語(yǔ)言模型,然后再把目前增加訓(xùn)練數(shù)據(jù)質(zhì)量和數(shù)量的路子搭配起來(lái),估計(jì)八九成做下游任務(wù)是能超過(guò)Bert的效果的,那為啥不這么做呢?覺(jué)得簡(jiǎn)單擴(kuò)充數(shù)據(jù),這么做創(chuàng)新性不夠酷,所以走了無(wú)監(jiān)督做下游任務(wù)的不尋常的路子?我估計(jì)后面GPT 3.0出來(lái)我們會(huì)知道真正的答案。
當(dāng)然,話講回來(lái),假設(shè)Bert也在第一階段采取類似的擴(kuò)充數(shù)據(jù)的改進(jìn)方式,我相信GPT 3.0如果仍然采取單向語(yǔ)言模型的話,很大概率估計(jì)還是Bert贏。
最后是隱含的第三個(gè)問(wèn)題,第三個(gè)問(wèn)題也很有意思,這個(gè)問(wèn)題其實(shí)跟第一個(gè)問(wèn)題有點(diǎn)關(guān)系。
第三個(gè)問(wèn)題是:GPT 2.0 既然第二階段是無(wú)監(jiān)督的任務(wù),而它不做Finetuning,那么你訓(xùn)練好一個(gè)語(yǔ)言模型,它當(dāng)然會(huì)根據(jù)輸入的一句話,給你蹦出后面可能緊跟那個(gè)單詞,這是標(biāo)準(zhǔn)的語(yǔ)言模型過(guò)程,這個(gè)正常。但是如果這時(shí)候讓它去做一個(gè)文本摘要任務(wù),它怎么知道它現(xiàn)在在做什么事情呢,根據(jù)輸入,應(yīng)該輸出什么東西呢?
就是這么個(gè)問(wèn)題,你不細(xì)想可能容易忽略,但是細(xì)想其實(shí)挺有意思。
其實(shí)GPT 2.0在做下游無(wú)監(jiān)督任務(wù)的時(shí)候,給定輸入(對(duì)于不同類型的輸入,加入一些引導(dǎo)字符,引導(dǎo)GPT正確地預(yù)測(cè)目標(biāo),比如如果做摘要,在輸入時(shí)候加入“TL:DR”引導(dǎo)字符串),它的輸出跟語(yǔ)言模型的輸出是一樣的,就是蹦出一個(gè)單詞。
那么問(wèn)題來(lái)了:對(duì)于比如摘要任務(wù),我們期待的輸出結(jié)果是一句話或者幾句話,你給我一個(gè)單詞,有點(diǎn)太小氣,那該怎么辦?很簡(jiǎn)單,繼續(xù)一個(gè)字一個(gè)字往出蹦,按照這些字從系統(tǒng)里蹦出來(lái)的時(shí)間順序連起來(lái),就是你想要的摘要結(jié)果,這種所有任務(wù)采取相同的往出蹦字的輸出模式也是有點(diǎn)意思的。
就是說(shuō),GPT2.0給出了一種新穎的生成式任務(wù)的做法,就是一個(gè)字一個(gè)字往出蹦,然后拼接出輸出內(nèi)容作為翻譯結(jié)果或者摘要結(jié)果。傳統(tǒng)的NLP網(wǎng)絡(luò)的輸出模式一般需要有個(gè)序列的產(chǎn)生結(jié)構(gòu)的,而GPT 2.0完全是語(yǔ)言模型的產(chǎn)生結(jié)果方式:一個(gè)字一個(gè)字往出蹦,沒(méi)有輸出的序列結(jié)構(gòu)。
上面內(nèi)容應(yīng)該就是我覺(jué)得關(guān)于GPT 2.0,最值得了解的部分以及它的核心思路和思想了。
我的感覺(jué),GPT 2.0作為語(yǔ)言模型,用來(lái)生成自然語(yǔ)言句子或者段落的能力特別強(qiáng),要理解有多強(qiáng),看下面的例子就知道了:
參考上圖,系統(tǒng)提示出一個(gè)故事開(kāi)始的幾句話,然后后面的內(nèi)容就靠GPT 2.0的語(yǔ)言模型一個(gè)字一個(gè)字往出蹦,蹦出很多字后,形成后它補(bǔ)充的故事,如果你英文還可以的話,建議還是看看里面的內(nèi)容。
文章開(kāi)始說(shuō)我看了GPT的例子嚇了一跳,就是說(shuō)的這個(gè)例子。無(wú)論是語(yǔ)法、可讀性、語(yǔ)義一致性,都是很強(qiáng)的,這個(gè)超出我對(duì)目前技術(shù)的期待。也許未來(lái)我們會(huì)擁有GPT版莎士比亞,也未可知,我對(duì)此很期待。
歸納一下,我覺(jué)得,我們可以從兩個(gè)不同的角度來(lái)理解GPT 2.0。
一個(gè)角度是把它看作采取類似Elmo/GPT/Bert的兩階段模型解決NLP任務(wù)的一種后續(xù)改進(jìn)策略,這種策略可以用來(lái)持續(xù)優(yōu)化第一階段的預(yù)訓(xùn)練過(guò)程。畢竟目前GPT 2.0還只采用了800萬(wàn)的網(wǎng)頁(yè)。你說(shuō)用一億網(wǎng)頁(yè)去訓(xùn)練可以嗎?理論上看是可以的,方法都是現(xiàn)成的,就是Bert那種方法,可能連改都不用改。但是實(shí)際上要看你自己或者公司的賬戶余額,你數(shù)數(shù)后面有幾個(gè)零,你沒(méi)數(shù)我都遙遠(yuǎn)地隔著屏幕聽(tīng)到了你的嘆息聲了,是吧?
當(dāng)然,從GPT 2.0的做法和結(jié)果來(lái)看,可能意味著這一點(diǎn)是可行的:后面我們也許可以通過(guò)現(xiàn)在的Transformer架構(gòu),持續(xù)增加高質(zhì)量網(wǎng)頁(yè)數(shù)量,就能夠不斷讓Transformer學(xué)到更多的知識(shí),繼而進(jìn)一步持續(xù)對(duì)下游任務(wù)有更高的提升。
這是一條簡(jiǎn)單有效的技術(shù)發(fā)展路徑。這也是為何我在開(kāi)頭說(shuō),隱隱地預(yù)感到未來(lái)兩年我們會(huì)持續(xù)看到不同的NLP任務(wù)記錄被刷新,以及不斷爆出的新紀(jì)錄。
為什么?很簡(jiǎn)單,加大預(yù)訓(xùn)練數(shù)據(jù)量很可能就能做到這點(diǎn)。是否真的會(huì)是這樣,我們拭目以待,我對(duì)此也很有期待。當(dāng)然,你會(huì)問(wèn):這么做的收益有邊界嗎,如果無(wú)限增加數(shù)據(jù),就能持續(xù)提升任務(wù)效果,沒(méi)有終點(diǎn)嗎?事實(shí)肯定不是這樣,如果真是這樣那真是個(gè)天大的好消息,而這不可能,不過(guò)話說(shuō)回來(lái),但是目前GPT 只用了800萬(wàn)網(wǎng)頁(yè),這肯定還只是一個(gè)開(kāi)始,距離這種優(yōu)化模式的天花板還遠(yuǎn)。
那么另外一個(gè)問(wèn)題是:GPT 2.0和Bert兩階段模型是什么關(guān)系?其實(shí)答案上面都說(shuō)了,GPT 2.0其實(shí)進(jìn)一步驗(yàn)證了Bert這種兩階段是種非常有效的無(wú)監(jiān)督NLP語(yǔ)言知識(shí)編碼方法。
進(jìn)一步在哪里?它說(shuō)明了第一個(gè)階段的預(yù)訓(xùn)練過(guò)程,如果采用更高質(zhì)量的數(shù)據(jù),采用更寬泛的數(shù)據(jù)(Web數(shù)據(jù)量大了估計(jì)包含任何你能想到的領(lǐng)域),采用更大量的數(shù)據(jù)(WebText,800萬(wàn)網(wǎng)頁(yè)),Transformer采用更復(fù)雜的模型(最大的GPT2.0模型是Transformer的兩倍層深),那么在Transformer里能學(xué)會(huì)更多更好的NLP的通用知識(shí)。
為什么是通用的?因?yàn)榈诙A段不做任何Finetuning就能達(dá)到更好的效果,而且是各種任務(wù),說(shuō)明通用性好,通用性好說(shuō)明了學(xué)到了各種類型的語(yǔ)言知識(shí);而這無(wú)疑,如果我們第二階段仍然采取Finetuning,對(duì)下游任務(wù)的提升效果是可以很樂(lè)觀地期待的。
另外一個(gè)角度也可以把GPT 2.0看成一個(gè)效果特別好的語(yǔ)言模型,可以用它來(lái)做語(yǔ)言生成類任務(wù),比如摘要、QA這種,再比如給個(gè)故事的開(kāi)頭,讓它給你寫(xiě)完后面的情節(jié),目前看它的效果出奇的好。
當(dāng)然,僅僅靠拼數(shù)據(jù)量做純語(yǔ)言模型能讓機(jī)器產(chǎn)生情節(jié)合理的文章嗎?我覺(jué)得可能性不太大,GPT 2.0的生成內(nèi)容質(zhì)量好,很可能只是它的記憶能力強(qiáng)導(dǎo)致的,我估計(jì)可能是它在把它從大量網(wǎng)頁(yè)中記憶的語(yǔ)言片段往外直接拋出來(lái)的,不代表它真有編寫(xiě)合理故事的能力。
為什么GPT 2.0通過(guò)語(yǔ)言模型能夠在QA任務(wù)中能夠不做訓(xùn)練,回答正確一定比例的問(wèn)題?我覺(jué)得很可能是因?yàn)轭A(yù)訓(xùn)練數(shù)據(jù)集合太大,又比較寬泛,這些問(wèn)題及答案在網(wǎng)頁(yè)里面很接近的地方出現(xiàn)過(guò)。而看它的實(shí)驗(yàn)部分,起碼QA任務(wù)確實(shí)也是這樣的。
但是不論如何,GPT 2.0的結(jié)果起碼告訴我們,走這條路子對(duì)于產(chǎn)生高質(zhì)量的生成文章是很有幫助的,我覺(jué)得起碼對(duì)于生成句子的流暢性,可讀性這些語(yǔ)言表層的方面有直接幫助,但是涉及到情節(jié),這個(gè)估計(jì)就純粹靠蒙了。
但是寫(xiě)到這句話的時(shí)候,我突然想到了一個(gè)改進(jìn)它的思路,讓它能夠受到你想要的情節(jié)context的約束去生成內(nèi)容,有點(diǎn)跑題,就不展開(kāi)講了。
我覺(jué)得對(duì)于GPT 2.0的改進(jìn)方向來(lái)說(shuō),如何加入情節(jié)約束,產(chǎn)生特別好的生成文章,這個(gè)是個(gè)很有前途的方向。而在這點(diǎn)上,GPT 2.0的貢獻(xiàn)是給我們指出了一條路,就是Transformer+刷數(shù)據(jù)量,省心省力費(fèi)機(jī)器的一條路。
另外,Transformer之前在語(yǔ)言模型上通常做不過(guò)RNN,雖然有后續(xù)研究表明它可以達(dá)到RNN類似的效果,但是GPT 2.0無(wú)疑進(jìn)一步突破了這個(gè)障礙,為T(mén)ransformer的進(jìn)一步攻城略地打下了堅(jiān)實(shí)的基礎(chǔ)。
Bert的另外一種改進(jìn)模式:進(jìn)一步的多任務(wù)預(yù)訓(xùn)練
上面介紹的是GPT 2.0的改進(jìn)模式,如上歸納,它采取的大的策略是:優(yōu)化Bert的第一個(gè)預(yù)訓(xùn)練階段,方向是擴(kuò)充數(shù)據(jù)數(shù)量,提升數(shù)據(jù)質(zhì)量,增強(qiáng)通用性,追求的是通過(guò)做大來(lái)做強(qiáng)。那么如果讓你來(lái)優(yōu)化Bert模型,除了這種無(wú)監(jiān)督模式地把訓(xùn)練數(shù)據(jù)做大,還有其它模式嗎?
當(dāng)然有,你這么想這個(gè)問(wèn)題:既然Bert的第一個(gè)階段能夠無(wú)監(jiān)督模式地把訓(xùn)練數(shù)據(jù)做大,我們知道,機(jī)器學(xué)習(xí)里面還有有監(jiān)督學(xué)習(xí),NLP任務(wù)里也有不少有監(jiān)督任務(wù)是有訓(xùn)練數(shù)據(jù)的,這些數(shù)據(jù)能不能用進(jìn)來(lái)改善Bert第一階段的那個(gè)學(xué)習(xí)各種知識(shí)的Transformer呢?
肯定是可以的呀,所以很自然的一個(gè)想法是:把Bert第一階段改成多任務(wù)學(xué)習(xí)的訓(xùn)練過(guò)程,這樣就可以把很多NLP任務(wù)的有監(jiān)督訓(xùn)練數(shù)據(jù)里包含的知識(shí)引入到Transformer中了。
這種做法一個(gè)典型的模型是最近微軟推出的MT-DNN,改進(jìn)思路就如上所述,可以參考上圖示意。核心思想如上,結(jié)構(gòu)上底層就是標(biāo)準(zhǔn)的Bert Transformer,在上層針對(duì)不同任務(wù)構(gòu)造不同優(yōu)化目標(biāo),所有不同上層任務(wù)共享底層Transformer參數(shù),這樣就強(qiáng)迫Transformer通過(guò)預(yù)訓(xùn)練做很多NLP任務(wù),來(lái)學(xué)會(huì)新的知識(shí),并編碼到Transformer的參數(shù)中。
對(duì)Bert的多任務(wù)改造其實(shí)是個(gè)非常自然的Bert的拓展思路,因?yàn)楸緛?lái)原始版本的Bert在預(yù)訓(xùn)練的時(shí)候就是多任務(wù)過(guò)程,包括語(yǔ)言模型以及next-sentence預(yù)測(cè)兩個(gè)任務(wù)。新的多任務(wù)的目標(biāo)是進(jìn)一步拓展任務(wù)數(shù)量,以此來(lái)進(jìn)行模型優(yōu)化。
這種改進(jìn)在效果上也有直接的效果提升,在11項(xiàng)NLP任務(wù)中9項(xiàng)超過(guò)了原始版本的Bert。
我覺(jué)得如果你是做應(yīng)用,這條路也可以走得更遠(yuǎn)一些,引入更多的有監(jiān)督NLP任務(wù),集成更多的知識(shí),無(wú)疑這么做是有好處的。
NLP領(lǐng)域的一些發(fā)展趨勢(shì)
最后,我結(jié)合最近兩個(gè)月一些熱門(mén)技術(shù)新聞的做法,順便再談?wù)勎业囊恍╆P(guān)于NLP技術(shù)趨勢(shì)的看法,有些觀點(diǎn)之前提過(guò),再?gòu)?qiáng)調(diào)一下,有些觀點(diǎn)比較細(xì),算是一個(gè)歸納吧。
目前可以看出,從NLP主流模型進(jìn)化的角度,有以下幾個(gè)趨勢(shì):
第一個(gè)趨勢(shì):采取Bert的兩階段模式。Bert雖然還沒(méi)多大歲數(shù),還不到一歲,但是最近兩個(gè)月,目前各種NLP評(píng)測(cè)刷榜的基本都是它。據(jù)我所知很多具備一定規(guī)模的互聯(lián)網(wǎng)公司已經(jīng)都開(kāi)始在評(píng)估部署B(yǎng)ert模型了,微博也用Bert大幅度改進(jìn)了標(biāo)簽分類的精度,目前正在其它各種NLP應(yīng)用任務(wù)進(jìn)一步推廣。沒(méi)辦法,Bert效果確實(shí)好,你不得不服。所以這個(gè)趨勢(shì)已經(jīng)開(kāi)始彰顯了。
第二個(gè)趨勢(shì):特征抽取器采用Transformer。這個(gè)之前在做NLP特征抽取器的文章里,我說(shuō)明過(guò)原因,根本原因是效果比CNN和RNN好。當(dāng)然,Transformer也有幾個(gè)重點(diǎn)改進(jìn)方向,這個(gè)后面找機(jī)會(huì)詳細(xì)說(shuō)一下。
第三個(gè)趨勢(shì),從最近的幾個(gè)工作,我們可以看出Bert兩階段模式中,第一個(gè)預(yù)訓(xùn)練階段的兩種改進(jìn)方向:當(dāng)然基礎(chǔ)是越來(lái)越深(意味著模型參數(shù)容量大,各種知識(shí)和數(shù)據(jù)?就是死記硬背我也要記住你,大致就是這個(gè)意思)的Transformer作為特征抽取器;第一階段的改進(jìn)工作花開(kāi)兩只:
一種是強(qiáng)調(diào)通用性好以及規(guī)模大。加入越來(lái)越多高質(zhì)量的各種類型的無(wú)監(jiān)督數(shù)據(jù),GPT 2.0指出了個(gè)明路,就是凈化的高質(zhì)量網(wǎng)頁(yè),這個(gè)跟無(wú)限也差不多了,就看你舍得花多少錢(qián)去訓(xùn)練模型。通俗點(diǎn)說(shuō),就是靠數(shù)據(jù)規(guī)模和金錢(qián)堆出來(lái)的。它的最明顯好處是通用性好,訓(xùn)練好后什么場(chǎng)合都適用。但是因?yàn)閱渭冏黾冋Z(yǔ)言模型任務(wù)的話,學(xué)習(xí)效率低一些,只能靠量大取勝,這是種“瘦死的駱駝比馬大”的策略;
第二種是通過(guò)多任務(wù)訓(xùn)練。加入各種新型的NLP任務(wù)數(shù)據(jù),它的好處是有監(jiān)督,能夠有針對(duì)性的把任務(wù)相關(guān)的知識(shí)編碼到網(wǎng)絡(luò)參數(shù)里,所以明顯的好處是學(xué)習(xí)目標(biāo)明確,學(xué)習(xí)效率高;而對(duì)應(yīng)的缺點(diǎn)是NLP的具體有監(jiān)督任務(wù),往往訓(xùn)練數(shù)據(jù)量少,于是包含的知識(shí)點(diǎn)少;而且有點(diǎn)偏科,學(xué)到的知識(shí)通用性不強(qiáng)。
當(dāng)然,我相信,我們很快會(huì)看到兩者的合流,就是同時(shí)用超大規(guī)模的無(wú)監(jiān)督語(yǔ)言模型+各種花樣的有監(jiān)督NLP多任務(wù)訓(xùn)練。這很正常,因?yàn)槠鋵?shí)語(yǔ)言模型也是多任務(wù)的一種,本來(lái)Bert原始的預(yù)訓(xùn)練過(guò)程就是多任務(wù)的:一個(gè)是語(yǔ)言模型,一個(gè)是next sentence預(yù)測(cè)。多任務(wù)無(wú)非是把Bert的兩個(gè)任務(wù)拓展到更多任務(wù)中去。所以兩者本來(lái)就是從Bert很自然能夠引出來(lái)的自然而然,又一體化的事情。
那么好奇的你問(wèn)了:這種模式的發(fā)展盡頭在哪里?
我指指銀行的方向:那就是你這個(gè)問(wèn)題的答案。當(dāng)然,我不是在唆使你去搶銀行啊,別會(huì)錯(cuò)意,否則迎接你的不是美酒,而會(huì)是手銬和獵槍。
第四個(gè)趨勢(shì):GPT2.0其實(shí)真正能夠吸引人眼球的是它生成的高質(zhì)量?jī)?nèi)容,讓人印象深刻。從GPT 2.0的結(jié)果看,這種采取超深層Transformer+更大量的網(wǎng)頁(yè)數(shù)據(jù)去做更好的語(yǔ)言模型,并進(jìn)而做各種生成式任務(wù),看樣子是有前途的。當(dāng)然,我前面提到,估計(jì)要引入情節(jié)規(guī)劃的約束,這個(gè)事情才能真正做好。
玩法的轉(zhuǎn)向
上面簡(jiǎn)單談?wù)勎覀€(gè)人認(rèn)為的幾個(gè)技術(shù)趨勢(shì),其實(shí)最近的一些技術(shù)進(jìn)展,隱隱地透漏出NLP研發(fā)模式的一個(gè)轉(zhuǎn)向,那么是怎樣的一個(gè)轉(zhuǎn)向呢?
我們從Bert/GPT 2.0也可以看出NLP研發(fā)模式在將來(lái)的一個(gè)發(fā)展趨勢(shì):充分利用更大容量的模型,利用無(wú)限的無(wú)監(jiān)督的人寫(xiě)好的文章,去編碼其中蘊(yùn)含的語(yǔ)言學(xué)知識(shí),以及,人類的知識(shí)。
很明顯NLP已經(jīng)在往這個(gè)方向轉(zhuǎn)向,而這背后隱藏著什么?超級(jí)昂貴的GPU計(jì)算時(shí)間,超大規(guī)模GPU機(jī)器學(xué)習(xí)集群,超長(zhǎng)的模型訓(xùn)練過(guò)程。歸根結(jié)底一句話:靠燒錢(qián)。靠燒錢(qián)背后又有兩層意思,一個(gè)意思是你沒(méi)錢(qián)就玩不起,就會(huì)被清除出NLP的競(jìng)賽場(chǎng);另外一個(gè)意思是:即使你們公司有錢(qián),但是錢(qián)讓不讓你花在這上面?當(dāng)然這是另外一個(gè)問(wèn)題。
總而言之,這說(shuō)明NLP值得一提的技術(shù)進(jìn)展的玩法已經(jīng)變了,以后游戲規(guī)則變成了:土豪大科技公司靠暴力上數(shù)據(jù)規(guī)模,上GPU或者TPU集群,訓(xùn)練好預(yù)訓(xùn)練模型發(fā)布出來(lái),不斷刷出大新聞。通過(guò)暴力美學(xué)橫掃一切,這是土豪端的玩法。
而對(duì)于大多數(shù)人來(lái)說(shuō),你能做的是在別人放出來(lái)的預(yù)訓(xùn)練模型上做小修正或者刷應(yīng)用或者刷各種榜單,逐步走向了應(yīng)用人員的方向,這是大多數(shù)NLP從業(yè)者未來(lái)幾年要面對(duì)的dilemma。
原因很簡(jiǎn)單,如果上數(shù)據(jù)能夠推進(jìn)NLP效果,這其實(shí)是非常好的事情,這意味著我們會(huì)進(jìn)入技術(shù)發(fā)展快車道,因?yàn)槟繕?biāo)和手段非常簡(jiǎn)單明確,但是這背后的潛臺(tái)詞技術(shù):目前變成了已經(jīng)進(jìn)入燒錢(qián)比進(jìn)展的時(shí)代了,而很明顯,在未來(lái)的1到2年里,類似Google/Facebook這種財(cái)大氣粗而且創(chuàng)始人具備極端的科學(xué)熱情的的土豪科技公司,會(huì)積累越來(lái)越明顯的軍備競(jìng)賽優(yōu)勢(shì),我們會(huì)看到未來(lái)這些公司不斷爆出在各個(gè)NLP應(yīng)用領(lǐng)域的各種刷新記錄,及更巨無(wú)霸的新模型的出現(xiàn)。
這對(duì)于身處公司里的同事們,其實(shí)是個(gè)好事情,因?yàn)槲覀儽旧砭褪亲鰬?yīng)用的,追求短平快,簡(jiǎn)單有效最好不過(guò),但是這對(duì)學(xué)術(shù)圈來(lái)說(shuō),意味著什么呢?這個(gè)問(wèn)題值得您深入思考。
好了,今天啰嗦到這里,就此別過(guò)。
對(duì)了,忘了提了,本文作者欄那個(gè)名字其實(shí)是個(gè)筆名,隱藏在幕后的真實(shí)作者是:GPT 2.0。
-
語(yǔ)言模型
+關(guān)注
關(guān)注
0文章
538瀏覽量
10341 -
GPT
+關(guān)注
關(guān)注
0文章
360瀏覽量
15505 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22107
原文標(biāo)題:對(duì)標(biāo)Bert?刷屏的GPT 2.0意味著什么
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論