最近的ChatGPT可謂是非常火,但是目前看的信息來(lái)看都更像是一些外宣類(lèi)的文章,對(duì)于一些技術(shù)的講解和解讀,卻是比較少的,這對(duì)于在做技術(shù)的我們來(lái)說(shuō)其實(shí)挺尷尬,為了讓大家更好地理解這個(gè)模型,給大家講一些ChatGPT的技術(shù)細(xì)節(jié)以及我的理解和分析,而不是看熱鬧就完了。
懶人目錄:
簡(jiǎn)單說(shuō)說(shuō)原理。
有關(guān)里面的細(xì)節(jié)討論。
優(yōu)點(diǎn)和缺點(diǎn)。
他真就那么強(qiáng)嗎?
簡(jiǎn)單說(shuō)說(shuō)原理
先疊甲,我本身不是做對(duì)話生成的,對(duì)這塊比較陌生,再者對(duì)prompt也不是很擅長(zhǎng),所以聊的可能會(huì)有不對(duì),大家輕噴。
剩下還有不少,我都會(huì)放在最后的參考里。
有這些資料,基本能夠理解這個(gè)chatgpt的基本原理和技術(shù)點(diǎn)了。
這里我還是簡(jiǎn)單聊一下,主要思路是根據(jù)張俊林前輩的來(lái)會(huì)更好理解一些吧,主要是3個(gè)階段。
通過(guò)人工標(biāo)注等方式,使用監(jiān)督學(xué)習(xí)的模式對(duì)GPT3模型(對(duì)這個(gè)是chatGPT模型的base)進(jìn)行初步訓(xùn)練(有監(jiān)督微調(diào),SFT),從而得到一個(gè)初步能夠理解語(yǔ)言的模型,尤其是prompt的模式。
訓(xùn)練回報(bào)模型,或者說(shuō)打分模型,這是一個(gè)強(qiáng)化學(xué)習(xí)專(zhuān)用的概念(缺課的去補(bǔ)補(bǔ)哈),這個(gè)打分模型是用來(lái)給“提示-答案”這個(gè)組合打分的,使用的數(shù)據(jù)和階段1類(lèi)似,用模型生成的可選項(xiàng),進(jìn)行人工標(biāo)注,最后構(gòu)造pair wise的learning to rank任務(wù)訓(xùn)練得到。
第三階段則是使用強(qiáng)化學(xué)習(xí),即階段2的回報(bào)模型reward來(lái)對(duì)模型進(jìn)行訓(xùn)練。模型生成結(jié)果,reward進(jìn)行打分,然后reward能夠往前傳遞,這里有提到一個(gè)概念就是PPO(Proximal Policy Optimization[5]),是強(qiáng)化學(xué)習(xí)的一種策略,詳情可看(Proximal policy optimization algorithms)。
可見(jiàn),2階段的回報(bào)模型是3階段優(yōu)化的關(guān)鍵,當(dāng)且僅當(dāng)這個(gè)回報(bào)模型足夠的好,后續(xù)訓(xùn)出來(lái)的模型才是可靠的。
有關(guān)里面細(xì)節(jié)的討論
強(qiáng)化學(xué)習(xí)
首先是強(qiáng)化學(xué)習(xí),這點(diǎn)其實(shí)是我自己比較想聊的,畢竟在知乎,就是不久前其實(shí)就有不少的聲音在說(shuō)強(qiáng)化學(xué)習(xí)并不適合在NLP任務(wù)上使用,但在這里,強(qiáng)化學(xué)習(xí)似乎存在一定的,甚至比較大程度的貢獻(xiàn),說(shuō)打臉應(yīng)該沒(méi)什么毛病,至少這個(gè)實(shí)驗(yàn)驗(yàn)證來(lái)看還是能用的,至于用得好不好,比其他策略好還是差,可能有待進(jìn)一步實(shí)驗(yàn)。
在部分觀點(diǎn)看來(lái),強(qiáng)化學(xué)習(xí)的貢獻(xiàn)似乎不是一個(gè)關(guān)鍵因素[1],強(qiáng)化學(xué)習(xí)強(qiáng)調(diào)的是用這個(gè)回報(bào)函數(shù)構(gòu)造強(qiáng)化學(xué)習(xí)來(lái)進(jìn)行調(diào)優(yōu),然而換個(gè)看起來(lái)比較下位的策略,就是基于這個(gè)回報(bào)函數(shù),構(gòu)造訓(xùn)練數(shù)據(jù)來(lái)直接finetuning模型,可能也能取得更好的效果,其實(shí)本質(zhì)是調(diào)整為更為樸素的反向傳播,可能也能取得類(lèi)似的效果。
沒(méi)試驗(yàn)過(guò),不好說(shuō)結(jié)論,但好像多少是有些道理的,具體可能要做消融之類(lèi)的才能夠充分驗(yàn)證吧。
過(guò)度訓(xùn)練的偏移
在階段3的訓(xùn)練過(guò)程中,可能會(huì)逐步偏離兩個(gè)出發(fā)點(diǎn)的核心,分別是階段1的有監(jiān)督微調(diào)和階段2的匯報(bào)模型背后的分布,對(duì)于前者,此處是對(duì)訓(xùn)練目標(biāo)增加了一個(gè)通用的語(yǔ)言模型指標(biāo),一定程度保證模型的通用型,而后者,則是采用KL散度懲罰項(xiàng)的方式,懲罰那些模型生成的和匯報(bào)模型數(shù)據(jù)分布不一致的部分[4]。
有關(guān)數(shù)據(jù)集的問(wèn)題
數(shù)據(jù)應(yīng)該是這篇文章,乃至背后的內(nèi)核InstructGPT,其成功很大程度依賴一個(gè)關(guān)鍵因素,那就是數(shù)據(jù),這個(gè)數(shù)據(jù)構(gòu)造里面也是大有說(shuō)法。
首先是階段1,即有監(jiān)督學(xué)習(xí)的數(shù)據(jù),其實(shí)是人工標(biāo)注的,標(biāo)注的內(nèi)容是,根據(jù)內(nèi)容編寫(xiě)prompt來(lái)得到的,具體包括以下幾種情況:
簡(jiǎn)單任務(wù):標(biāo)注者給出一個(gè)簡(jiǎn)單的提示,并且還要確保提示的多樣性。
Few-shot任務(wù):?jiǎn)蝹€(gè)指示,有多個(gè)query-response對(duì)。
用戶相關(guān)的:從接口中獲取用例(實(shí)際對(duì)話的例子),標(biāo)注者通過(guò)用例編寫(xiě)提示。
而在階段2,其實(shí)就是要訓(xùn)練一個(gè)可靠的回報(bào)函數(shù),這批數(shù)據(jù)的產(chǎn)生來(lái)源是模型,模型會(huì)生成一批候選樣本,標(biāo)注者會(huì)對(duì)他們進(jìn)行排序,這個(gè)排序的背后其實(shí)就是打分了。
階段3沒(méi)有進(jìn)行人工標(biāo)注,是直接用GPT-3API的用戶數(shù)據(jù),對(duì)應(yīng)不同的任務(wù)的數(shù)據(jù),包含生成、問(wèn)答等。
我們可能會(huì)猜想數(shù)據(jù)和任務(wù)的設(shè)計(jì)可能會(huì)很復(fù)雜,然而現(xiàn)在看來(lái),好像比想象要簡(jiǎn)單一些,標(biāo)注任務(wù)其實(shí)是簡(jiǎn)單的,然而對(duì)標(biāo)注人員的挑戰(zhàn)其實(shí)不小,例如對(duì)prompt的編寫(xiě)。
有關(guān)優(yōu)缺點(diǎn)的討論
挺多文章都有聊過(guò)這套模型和方案的優(yōu)缺點(diǎn),我這里匯總一下吧,基本上是參考了[4]和[7]的,帶了一些自己的見(jiàn)解。
首先是優(yōu)點(diǎn):
相比他們的base,即GPT3,具有更強(qiáng)的泛化和生成能力,最終預(yù)測(cè)的結(jié)果會(huì)有更真實(shí),這點(diǎn)毋庸置疑了,大家都有去試這個(gè)東西,多少有些感受。
我想大家也有發(fā)現(xiàn),模型似乎有更強(qiáng)的coding能力,對(duì)一些簡(jiǎn)單的任務(wù),他是能生成可用可執(zhí)行的代碼的,這個(gè)點(diǎn)似乎在GPT3上也有體現(xiàn),據(jù)說(shuō)是因?yàn)楸旧磉@類(lèi)數(shù)據(jù)也有在訓(xùn)練數(shù)據(jù)里。
有關(guān)安全性這點(diǎn),有些文章會(huì)提到它的安全性有提升,但是在實(shí)際體驗(yàn)上,模型似乎還是會(huì)因?yàn)檎T導(dǎo),說(shuō)一些媽見(jiàn)打或者是容易被封的言論的,這個(gè)特別指出,我自己是不太想把這個(gè)放在優(yōu)點(diǎn)里吧。
至于缺點(diǎn),其實(shí)還挺多的,這有待各位大神進(jìn)一步深入研究。
首先還是大模型的問(wèn)題,這個(gè)是大模型共有的問(wèn)題,長(zhǎng)期關(guān)注我的朋友都有發(fā)現(xiàn),這個(gè)問(wèn)題仍然是大問(wèn)題,要解。相似相關(guān)的論點(diǎn)其實(shí)在車(chē)萬(wàn)翔老師的文章里也有提到[7],這其實(shí)會(huì)衍生很多問(wèn)題,這點(diǎn)有時(shí)間我也會(huì)展開(kāi)聊一下,此處先不贅述。
在通用任務(wù)上的能力會(huì)下降。這個(gè)可能是意料之中的事,畢竟他把任務(wù)專(zhuān)注到了特定的內(nèi)容上了,別的領(lǐng)域或者任務(wù)就可能會(huì)出現(xiàn)效果下降的情況,前面有提到在損失函數(shù)上加上懲罰,這個(gè)能一定程度上有優(yōu)化吧,但這其實(shí)還是專(zhuān)注任務(wù)和通用性之間的權(quán)衡罷了。
安全性問(wèn)題仍舊存在,這點(diǎn)還是不好控制。
模型對(duì)prompt的過(guò)度敏感,這個(gè)可能和數(shù)據(jù)量有關(guān)吧,這個(gè)本身人工標(biāo)注生成就有限,模型的訓(xùn)練只能依賴這個(gè),很難避免,后續(xù)更好的方式還有待提出吧。
對(duì)長(zhǎng)結(jié)果、詳細(xì)結(jié)果的傾向性。
生成模型老生常談的“一本正經(jīng)的胡說(shuō)八道”的問(wèn)題,這個(gè)背后的原因很大程度和知識(shí)的原因有關(guān),畢竟模型現(xiàn)在已經(jīng)具備輸出流暢結(jié)果的能力了,但和諾問(wèn)題和知識(shí)掛鉤,例如魯迅的生卒年之類(lèi)的問(wèn)題,如果接觸不到,自然就回答不了或者回答不對(duì),此時(shí)模型會(huì)很直接的隨便寫(xiě)個(gè)時(shí)間了。
這里其實(shí)人工標(biāo)注的依賴比較明顯,畢竟其實(shí)NLP場(chǎng)景,尤其是對(duì)話系統(tǒng),其實(shí)很少有什么好的用戶反饋路徑,導(dǎo)致我們無(wú)法閉環(huán)獲取可供訓(xùn)練的可靠數(shù)據(jù)。類(lèi)似搜索、推薦可能還有點(diǎn)擊數(shù)據(jù),偶爾可能會(huì)吐槽一下數(shù)據(jù)質(zhì)量問(wèn)題,但是對(duì)話系統(tǒng),很多時(shí)候是真的沒(méi)有。
他真有那么強(qiáng)嗎
鑒于現(xiàn)在全網(wǎng)在吹,各種熱度(em...包括我也在蹭),但是我還是想潑點(diǎn)冷水吧。我分幾個(gè)角度來(lái)聊。
這只是一次模型的外宣罷了
GPT其實(shí)吃過(guò)一次虧的,眾所周知,GPT其實(shí)發(fā)布在BERT之前,BERT卻取得了很大的熱度,與之類(lèi)似的還有ELMO這種里程碑式的技術(shù)被淹沒(méi),正面的例子也有prompt之前無(wú)人問(wèn),在綜述出來(lái)后天下知,除了本身的效果原因,很大程度原因我自己更希望歸結(jié)于一個(gè)優(yōu)秀的外宣,其內(nèi)核InstructGPT的發(fā)布時(shí)間是3月份,很多博客的原理解讀其實(shí)都是圍繞這篇論文來(lái)講的,然而卻在12月份火了起來(lái),很大程度上和這個(gè)API接口的發(fā)布有關(guān),他被搭建成一個(gè)可供用戶交互的產(chǎn)品被發(fā)布出來(lái),用的人多覺(jué)得有趣,而且很多人其實(shí)對(duì)這個(gè)領(lǐng)域不了解,用這個(gè)感覺(jué)很流暢就開(kāi)始覺(jué)得很厲害了。
很多人可能試了幾個(gè)就覺(jué)得牛,但其實(shí)本質(zhì)上牛的點(diǎn)可能不見(jiàn)得是InstructGPT牛導(dǎo)致的:
流暢性這點(diǎn),生成領(lǐng)域的不多說(shuō),現(xiàn)有技術(shù)基本能達(dá)到,差距可能只有在大的數(shù)據(jù)集下用統(tǒng)計(jì)指標(biāo)測(cè)才可以分出高下。
試了幾個(gè)就說(shuō)牛,只能說(shuō)是比較外行了。。。拋開(kāi)統(tǒng)計(jì)指標(biāo)談效果沒(méi)什么意義對(duì)吧。
有關(guān)coding的問(wèn)題,考據(jù)到GPT3似乎就已經(jīng)一定程度具備了,只是大家沒(méi)有試罷了,具體效果不知道多好就不知道了。
所以我首先想說(shuō)的,這個(gè)東西之所以火,很大程度是因?yàn)檫@次成功的產(chǎn)品化和成功的外宣,當(dāng)然,背后的技術(shù)也撐得起這次的外宣,從而形成了團(tuán)隊(duì)、模型、產(chǎn)品的多方面成功。而作為技術(shù)人而言,也可能不只是技術(shù)人,想做的更有深度的話,在嘗試完之后就該開(kāi)始思考內(nèi)部的技術(shù)細(xì)節(jié)以及我們能不能逼近和超越或者在他們基礎(chǔ)上做一些什么別的事情。
再疊個(gè)甲,我沒(méi)說(shuō)技術(shù)不行,但是只把火或者是出頭歸結(jié)于技術(shù),是肯定局限了的。
閉環(huán)問(wèn)題
rumor最近發(fā)了一篇有關(guān)ChatGPT的閉環(huán)問(wèn)題的文章(只有我一個(gè)人對(duì)ChatGPT感到蕉綠嗎?),誠(chéng)然對(duì)話系統(tǒng)的一個(gè)很痛的問(wèn)題,就是閉環(huán)問(wèn)題,對(duì)話系統(tǒng)在很多場(chǎng)景是真的沒(méi)法閉環(huán),哪怕是一些客服系統(tǒng)有“滿意or不滿意”之類(lèi)的讓用戶填的東西,但是用戶多半不填,量太少撐不住,所以歸結(jié)起來(lái)我們很難得到閉環(huán)數(shù)據(jù),先別說(shuō)質(zhì)量問(wèn)題了。
然而ChatGPT做到了嗎,我的觀點(diǎn)是,前進(jìn)了一步但是還不算做到。前進(jìn)一步,是真的在用了生成,結(jié)合回報(bào)函數(shù)來(lái)進(jìn)行迭代優(yōu)化,但未算做到是因?yàn)樗耘f依賴了人工標(biāo)注數(shù)據(jù),這個(gè)數(shù)量可能在這個(gè)問(wèn)題下比較少,但是泛用性約束在此,而且是在比較關(guān)鍵的1和2階段,而且還不只是標(biāo)注那么簡(jiǎn)單,而是去寫(xiě)prompt,這對(duì)標(biāo)注人員能力要求似乎還更高了,再者,他這只是針對(duì)一個(gè)任務(wù),而在多任務(wù)下,通用任務(wù)下,他的效果其實(shí)反而有所降低,這點(diǎn)其實(shí)在前面的文章里有提到。
也可能是我對(duì)閉環(huán)的要求比較高吧,一個(gè)反饋信息可以盤(pán)活整個(gè)系統(tǒng),但是偏偏這個(gè)反饋,對(duì)話系統(tǒng)還是無(wú)法從根本上繞開(kāi)標(biāo)注這個(gè)用來(lái)做反饋優(yōu)化的步驟。
端到端or非端到端
工業(yè)界會(huì)更傾向于非端到端的模式來(lái)做,原因很多,這個(gè)我最近的文章正好就在聊這個(gè)(心法利器[78] | 端到端任務(wù)的拆解設(shè)計(jì)),主要是出于可控性、可維護(hù)性、安全性等原因吧,例如chatapi因?yàn)楹芏嘣颍蠹覍?duì)安全性的容忍度很高,但是到了很多實(shí)際產(chǎn)品中,安全性的問(wèn)題可以被上升到很大程度,所以一定需要加以控制,而這種控制模型不見(jiàn)得能做得很好,所以很多時(shí)候我們會(huì)搭建一個(gè)生成模塊后,會(huì)輔以一個(gè)安全模塊來(lái)監(jiān)控。
一本正經(jīng)的胡說(shuō)八道
這個(gè)問(wèn)題其實(shí)是生成領(lǐng)域里經(jīng)常談到的問(wèn)題了,對(duì)于一些模型不知道的知識(shí),模型在回答策略上更傾向于說(shuō)一些通順但邏輯上不對(duì)的話,不像人有更為豐富的對(duì)話策略(例如搪塞、反問(wèn)或者直接拒絕回答),這里有好多衍生點(diǎn):
讓模型盡可能可以多獲取或者多學(xué)習(xí)豐富的知識(shí),但是學(xué)無(wú)止境,現(xiàn)階段技術(shù)可能無(wú)法做得到。
模型可能需要具備更新知識(shí)的能力。
模型需要有意識(shí)地識(shí)別出什么問(wèn)題能回答,回答的對(duì)不對(duì)等,其實(shí)有這個(gè)意識(shí)就已經(jīng)是一個(gè)大突破了。
生成模型在對(duì)話策略的選擇上,可以更為豐富,這點(diǎn)其實(shí)也是為什么非端到端的形式能成為主流的原因,因?yàn)椴呗陨鲜强煽氐摹?/p>
chatGPT會(huì)有替代傳統(tǒng)搜索嗎
我覺(jué)得要分開(kāi)看,這要把他區(qū)分為把chatgpt當(dāng)做產(chǎn)品看,還是當(dāng)做技術(shù)看。
如果是當(dāng)做產(chǎn)品看,這個(gè)產(chǎn)品無(wú)疑是替代不了搜索的,一個(gè)很簡(jiǎn)單的道理,搜索需要多樣性,這給一個(gè)答案的樣子,很難滿足很多多樣化的搜索需求。這個(gè)本質(zhì)更像是一個(gè)對(duì)話產(chǎn)品,一個(gè)功能相對(duì)豐富但是形態(tài)比較簡(jiǎn)單的對(duì)話產(chǎn)品,他只有文本回復(fù),而沒(méi)有更加多模態(tài)的回復(fù)(當(dāng)然期待一手GPT4能做更多事情了),例如商品搜索、音樂(lè)搜索,這些事目前的他也做不到,所以說(shuō)替代真的為時(shí)尚早。
至于當(dāng)做技術(shù)來(lái)看,我自己是覺(jué)得,會(huì)成為一種比較新穎的方式吧,在一些問(wèn)答之類(lèi)的場(chǎng)景下,他能給出精準(zhǔn)而又詳細(xì)的回復(fù),是可以當(dāng)做是檢索結(jié)果之一的,最終的篩選排序,可以進(jìn)行綜合判斷,例如置信度高才出來(lái),否則不出,其實(shí)也是不錯(cuò)的。而更深層次,這里的數(shù)據(jù)處理方式、訓(xùn)練策略等,這些東西可能會(huì)被借鑒,最終用在搜索里吧。
chatGPT會(huì)替代程序員嗎
不會(huì)吧不會(huì)吧,不會(huì)真有人覺(jué)得程序員的工作只有寫(xiě)代碼吧。
按照我的經(jīng)驗(yàn),對(duì)于一個(gè)熟練的程序員,寫(xiě)代碼本身其實(shí)是時(shí)間最少也是最后的工作,難點(diǎn)在于,要寫(xiě)什么代碼,寫(xiě)在哪以及怎么寫(xiě),這也就是前期的技術(shù)方案確定,這件事對(duì)目前的AI來(lái)說(shuō)還太難了,他可能可以幫你實(shí)現(xiàn)一個(gè)冒泡排序,但是他絕對(duì)不能告訴你該在哪里寫(xiě),為什么要寫(xiě)。
對(duì)于現(xiàn)在的AI,頂多只是個(gè)生成器罷了,而且,最近也有消息流出Stack Overflow禁止 ChatGPT,上面說(shuō)的一本正經(jīng)的胡說(shuō)八道的問(wèn)題在程序員這個(gè)領(lǐng)域會(huì)被放大的,因?yàn)樗f(shuō)的話我們也無(wú)法完全判別對(duì)錯(cuò),只有去嘗試才會(huì)知道,踩坑了就真的坑。
審核編輯:劉清
-
SFT
+關(guān)注
關(guān)注
0文章
9瀏覽量
6824 -
GPT
+關(guān)注
關(guān)注
0文章
359瀏覽量
15469 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22069 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1566瀏覽量
7946
原文標(biāo)題:理性聊聊ChatGPT
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論