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