在ChatGPT發(fā)布之初,我同許多AI從業(yè)者一樣對(duì)這個(gè)被媒體號(hào)稱(chēng)要取代搜索引擎的聊天機(jī)器人產(chǎn)品是持懷疑態(tài)度的,但在深度體驗(yàn)之后,發(fā)現(xiàn)ChatGPT跟以往曇花一現(xiàn)的產(chǎn)品并不一樣,它對(duì)于回答成熟的知識(shí)確實(shí)已經(jīng)大有替代搜索引擎的能力,而其對(duì)上下文層層遞進(jìn)的連續(xù)交互能力簡(jiǎn)直顛覆了人們對(duì)大語(yǔ)言模型能力的想象。
盡管OpenAI沒(méi)有公布ChatGPT的論文和相關(guān)的訓(xùn)練和技術(shù)細(xì)節(jié),但我們可以從其兄弟模型InstructGPT以及網(wǎng)絡(luò)上公開(kāi)的碎片化的情報(bào)中尋找到實(shí)現(xiàn)ChatGPT的蛛絲馬跡。根據(jù)OpenAI所言,ChatGPT相對(duì)于InstructGPT的主要改進(jìn)在于收集標(biāo)注數(shù)據(jù)的方法上,而整個(gè)訓(xùn)練過(guò)程沒(méi)有什么區(qū)別,因此,可以推測(cè)ChatGPT的訓(xùn)練過(guò)程應(yīng)該與InstructGPT的類(lèi)似,大體上可分為3步:
1.預(yù)訓(xùn)練一個(gè)超大的語(yǔ)言模型;
2.收集人工打分?jǐn)?shù)據(jù),訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型;
3.使用強(qiáng)化學(xué)習(xí)方法微調(diào)優(yōu)化語(yǔ)言模型。
預(yù)訓(xùn)練一個(gè)超大的語(yǔ)言模型
從GPT/Bert開(kāi)始,預(yù)訓(xùn)練語(yǔ)言模型基本遵循這樣一個(gè)兩段式范式,即通過(guò)自監(jiān)督方式來(lái)預(yù)訓(xùn)練大模型。然后再在此基礎(chǔ)上,在下游具體任務(wù)上進(jìn)行fine-tuning(微調(diào))。其中GPT因?yàn)橛玫氖菃蜗騎ransformer解碼器,因此偏向于自然語(yǔ)言生成,而B(niǎo)ert用的是雙向Transformer編碼器,因此偏向于自然語(yǔ)言理解。因?yàn)锽ert的及時(shí)開(kāi)源和Google在業(yè)界的強(qiáng)大影響力,外加業(yè)務(wù)導(dǎo)向的AI應(yīng)用公司寄希望的快速落地能力,那個(gè)時(shí)候絕大多數(shù)的從業(yè)者都更加看好Bert,哪怕是openai發(fā)布的GPT2也是反響平平,這也為后來(lái)的落后埋下了伏筆。
這種兩段式的語(yǔ)言模型,其Capability(能力)是單一的,即翻譯模型只能翻譯,填空模型只能填空,摘要模型只能做摘要等等,要在實(shí)際任務(wù)中使用,需要各自在各自的數(shù)據(jù)上做微調(diào)訓(xùn)練,這顯然很不智能,為了進(jìn)一步向類(lèi)似人類(lèi)思維的通用語(yǔ)言模型靠齊,GPT2開(kāi)始引入更多的任務(wù)進(jìn)行預(yù)訓(xùn)練,這里的創(chuàng)新之處在于它通過(guò)自監(jiān)督的模型來(lái)做監(jiān)督學(xué)習(xí)的任務(wù)。經(jīng)過(guò)這樣訓(xùn)練的模型,能在沒(méi)有針對(duì)下游任務(wù)進(jìn)行訓(xùn)練的條件下,就在下游任務(wù)上有很好的表現(xiàn)。也就是說(shuō)Capability有了較大的擴(kuò)展,但此時(shí)的Alignment(對(duì)齊)還相對(duì)較弱,實(shí)際應(yīng)用上還不能完全去除fine-tuning,算是為zero-shot leaning(零樣本學(xué)習(xí))奠定了基礎(chǔ)。為了解決Alignment問(wèn)題,GPT3使用了更大的模型,更多的數(shù)據(jù),并優(yōu)化了in-context learning(上下文學(xué)習(xí))的訓(xùn)練方式,即在訓(xùn)練時(shí)去擬合接近人類(lèi)語(yǔ)言的Prompt(提示),以指導(dǎo)模型它該做些什么,這進(jìn)一步提升了模型zero-shot learning的能力,總而言之,語(yǔ)言模型在朝著越來(lái)越大的方向發(fā)展。
圖1 不同參數(shù)規(guī)模語(yǔ)言模型zero-shot效果對(duì)比
正如上面GPT3論文中的對(duì)比圖所示,zero-shot極度依賴(lài)于大語(yǔ)言模型(LLM),可以說(shuō)從GPT3開(kāi)始的語(yǔ)言模型的發(fā)展,已經(jīng)與缺乏資源的普通人無(wú)關(guān)了,自然語(yǔ)言處理的發(fā)展已經(jīng)全面進(jìn)入了超大語(yǔ)言模型時(shí)代,但這并不影響我們?nèi)ダ斫夂徒梃b其思想。
ChatGPT也正是依賴(lài)于一個(gè)大規(guī)模的語(yǔ)言模型(LLM)來(lái)進(jìn)行冷啟動(dòng)的,具體過(guò)程如圖2所示:
圖2 初始化預(yù)訓(xùn)練語(yǔ)言模型
顯然,由于參與初始模型微調(diào)的人工生成數(shù)據(jù)量很少,對(duì)于整個(gè)語(yǔ)言模型的訓(xùn)練數(shù)據(jù)而言是滄海一粟,因此初始化語(yǔ)言模型時(shí),這一步的微調(diào)對(duì)ChatGPT整體而言大概是可有可無(wú)的。
盡管經(jīng)過(guò)精心設(shè)計(jì)的LLM的Capability和Alignment均已達(dá)到非常好的水平,但是僅僅憑借預(yù)訓(xùn)練或加一些監(jiān)督文本微調(diào)得到的語(yǔ)言模型終究還是無(wú)法應(yīng)對(duì)人類(lèi)所生活的真實(shí)語(yǔ)言環(huán)境的復(fù)雜性,這種模型在實(shí)際應(yīng)用中時(shí)長(zhǎng)會(huì)暴露以下缺陷:
- 提供無(wú)效回答:沒(méi)有遵循用戶(hù)的明確指示,答非所問(wèn)。
- 內(nèi)容胡編亂造:純粹根據(jù)文字概率分布虛構(gòu)出不合理的內(nèi)容。
- 缺乏可解釋性:人們很難理解模型是如何得出特定決策的,難以確信回答的準(zhǔn)確性。
- 內(nèi)容偏見(jiàn)有害:模型從數(shù)據(jù)中獲取偏見(jiàn),導(dǎo)致不公平或不準(zhǔn)確的預(yù)測(cè)。
- 連續(xù)交互能力弱:長(zhǎng)文本生成較弱,上下文無(wú)法做到連續(xù)。
訓(xùn)練人類(lèi)偏好模型
為了進(jìn)一步增強(qiáng)語(yǔ)言模型的效果,人們?cè)噲D將強(qiáng)化學(xué)習(xí)引入到語(yǔ)言模型之中。但由于機(jī)器難以衡量自然語(yǔ)言輸出的質(zhì)量好壞,這個(gè)研究方向一直發(fā)展緩慢,并且不被專(zhuān)業(yè)人員看好。盡管DeepMind早就提出了RLHF(Reinforcement Learning with human feedback)的訓(xùn)練方法,但也一直沒(méi)有在實(shí)際產(chǎn)品中看見(jiàn)成效。OpenAI在InstructGPT中用一個(gè)小規(guī)模的GPT3模型通過(guò)RLHF微調(diào)后產(chǎn)生了比原始大GPT3更好的效果見(jiàn)證了RLHF的強(qiáng)大,隨后的ChatGPT真正將RLHF發(fā)揚(yáng)光大。
圖3 原始RL框架
回想一下原始的強(qiáng)化學(xué)習(xí)框架,Agent要基于環(huán)境給出的獎(jiǎng)勵(lì)信號(hào)來(lái)不斷優(yōu)化自身的策略。那么在我們的聊天機(jī)器人的場(chǎng)景下,顯然語(yǔ)言模型作為一個(gè)Agent,它基于用戶(hù)輸入上下文語(yǔ)境(Environment)來(lái)輸出文本(action)。那么由什么來(lái)定義這個(gè)獎(jiǎng)勵(lì)函數(shù)呢?正如前文所言,只有人才能夠評(píng)估輸出文本的好壞,那么就讓人來(lái)充當(dāng)這個(gè)獎(jiǎng)勵(lì)函數(shù),這就是所謂的human feedback。但是這個(gè)更新過(guò)程需要不斷進(jìn)行,顯然不能讓人一直在哪打分,那不妨就搞一個(gè)深度學(xué)習(xí)模型,去學(xué)習(xí)人類(lèi)評(píng)估輸出質(zhì)量的過(guò)程,于是便有了獎(jiǎng)勵(lì)模型(Reward Model),如圖4所示。
圖4 獎(jiǎng)勵(lì)(偏好)模型訓(xùn)練框架
獎(jiǎng)勵(lì)模型實(shí)際上就是去學(xué)習(xí)人類(lèi)的偏好,因此也被叫作偏好模型。他的基本目標(biāo)就是獲得一個(gè)打分模型,接收一系列的文本,并輸出一個(gè)標(biāo)量獎(jiǎng)勵(lì),這個(gè)獎(jiǎng)勵(lì)以數(shù)字的形式代表了人類(lèi)對(duì)輸入輸出好壞的偏好。關(guān)鍵在于這個(gè)模型應(yīng)當(dāng)輸出一個(gè)標(biāo)量獎(jiǎng)勵(lì),這樣方可與現(xiàn)有的RL算法無(wú)縫對(duì)接。獎(jiǎng)勵(lì)模型基本上是基于其他的語(yǔ)言模型或者是通過(guò)Transformer從頭開(kāi)始訓(xùn)練。
OpenAI使用用戶(hù)以往通過(guò)GPT API提交的prompt,然后使用初始語(yǔ)言模型來(lái)生成一系列的新文本作為提示生成對(duì)(prompt-generation pairs)。然后再由人類(lèi)訓(xùn)練師來(lái)對(duì)初始LM生成的文本進(jìn)行排序。雖然我們最初的想法是讓人類(lèi)直接給這些輸出進(jìn)行打分,但這在實(shí)踐中是很難做到的,人的不同打分標(biāo)準(zhǔn)容易導(dǎo)致這些分?jǐn)?shù)跟實(shí)際有所偏差,而排序同樣可以用來(lái)比較多個(gè)模型輸出的質(zhì)量,并且能夠創(chuàng)建一個(gè)更好的正則化數(shù)據(jù)集。有很多種方法用于對(duì)文本進(jìn)行排序,一種比較成功的方式是讓用戶(hù)比較語(yǔ)言模型基于同一個(gè)prompt輸出的不同文本,通過(guò)兩個(gè)模型的輸出比較,再使用如Elo rating system(Elo系統(tǒng))之類(lèi)的方式來(lái)生成模型和輸出之間的相對(duì)排名,這樣就能將排名標(biāo)準(zhǔn)化為我們所需的標(biāo)量獎(jiǎng)勵(lì)信號(hào)。
至此,RLHF系統(tǒng)的兩個(gè)前置條件就達(dá)成了,接下來(lái)就是使用RL來(lái)進(jìn)一步微調(diào)語(yǔ)言模型了。
強(qiáng)化學(xué)習(xí)微調(diào)
盡管業(yè)界已經(jīng)近乎宣告強(qiáng)化學(xué)習(xí)不適用于語(yǔ)言模型,但仍舊有許多機(jī)構(gòu)和科研人員在探索強(qiáng)化學(xué)習(xí)微調(diào)全部或部分語(yǔ)言模型參數(shù)的可行性,OpenAI就是其中最具代表性的。ChatGPT使用的是OpenAI自己提出的成熟的SOTA強(qiáng)化學(xué)習(xí)模型PPO來(lái)進(jìn)行語(yǔ)言模型微調(diào)的,目前在語(yǔ)言模型上取得成功的RL算法也只有PPO,那么接下來(lái)就讓我們來(lái)看一下這個(gè)微調(diào)過(guò)程是如何被描述成一個(gè)RL問(wèn)題的。
顯然,策略(Policy)是一個(gè)語(yǔ)言模型,它接受Prompt返回文本序列(或者只是文本上的概率分布)。策略的動(dòng)作空間是語(yǔ)言模型詞匯表對(duì)應(yīng)的所有token(通常在50000左右量級(jí)),觀測(cè)空間則是所有可能輸入的token序列(于是狀態(tài)空間在詞匯表大小^輸入token大小的量級(jí)),獎(jiǎng)勵(lì)函數(shù)則由上述的偏好模型和策略轉(zhuǎn)移約束共同決定。于是整個(gè)過(guò)程大概是這樣的:
? 從訓(xùn)練集采樣一個(gè)prompt:;
? 從原始的語(yǔ)言模型產(chǎn)生一個(gè)文本序列,從當(dāng)前微調(diào)迭代的語(yǔ)言模型產(chǎn)生一個(gè)文本序列;
? 把當(dāng)前策略產(chǎn)生的文本輸入到偏好模型,得到一個(gè)標(biāo)量獎(jiǎng)勵(lì);
? 將文本與進(jìn)行對(duì)比,一般使用KL散度來(lái)計(jì)算它們之間的差異,這個(gè)作為一種變化約束,來(lái)防止模型生成能夠欺騙偏好模型卻胡言亂語(yǔ)的文本;
? 結(jié)合和就得到了用于RL更新的最終的獎(jiǎng)勵(lì)函數(shù):,不過(guò)OpenAI在訓(xùn)練InstructGPT時(shí),還在這個(gè)基礎(chǔ)上還添加了額外的在人類(lèi)標(biāo)注集合上的預(yù)訓(xùn)練梯度;
? 接下來(lái)就是跟普通PPO一樣通過(guò)最大化當(dāng)前批次的回報(bào)來(lái)進(jìn)行在線更新。
圖5 強(qiáng)化學(xué)習(xí)微調(diào)框架
語(yǔ)言模型經(jīng)過(guò)PPO算法的不斷自我迭代,外加獎(jiǎng)勵(lì)函數(shù)的不斷人工糾偏,這個(gè)語(yǔ)言模型將如同AlphaGo那樣不斷完成進(jìn)行自我進(jìn)化,最終達(dá)到令人驚艷的效果。
總結(jié)
1?? ChatGPT向業(yè)界證明了GPT路線的優(yōu)越性。實(shí)際上從GPT3開(kāi)始,GPT技術(shù)路線在通用人工智能上已經(jīng)成為一種演進(jìn)趨勢(shì)。
2?? ChatGPT以其卓越的表現(xiàn)將RLHF方法重新帶入到了研究人員的視野,接下來(lái)可能會(huì)在更多的場(chǎng)合發(fā)光發(fā)熱,比如將RLHF與圖像領(lǐng)域的Diffusion結(jié)合,或?qū)⑴鲎渤鲆庀氩坏降幕鸹ā?/p>
3?? RLHF在很大程度上解決了語(yǔ)言模型的對(duì)齊問(wèn)題,使通用大模型走進(jìn)人們的生活成為可能,但由于嚴(yán)重依賴(lài)人工標(biāo)注者的偏好,這將影響到模型的公平性,或存在安全隱患。
參考文獻(xiàn)
[1] Paul Christiano, Jan Leike, Tom B. Brown et al.?Deep reinforcement learning from human preferences. arXiv preprint arXiv:1706.03741.
[2] Long Ouyang, Jeff Wu, Xu Jiang, Diogo Almeida et al.Training language models to follow instructions with human feedback. arXiv preprint arXiv:2203.02155.
[3]《Illustrating Reinforcement Learning from Human Feedback (RLHF)》,https://huggingface.co/blog/rlhf.
[4] John Schulman, Filip Wolski, Prafulla Dhariwal, et al.?Proximal Policy Optimization Algorithms. arXiv preprint arXiv:1707.06347.
作者:豐陽(yáng)露 魯銀冰
單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心安全產(chǎn)品部
來(lái)源:移動(dòng)Labs