對(duì)比GPT-1,GPT-2并未在模型結(jié)構(gòu)上大作文章,只是使用了更多參數(shù)的模型和更多的訓(xùn)練數(shù)據(jù)(表1)。GPT-2最重要的思想是提出了“所有的有監(jiān)督學(xué)習(xí)都是無(wú)監(jiān)督語(yǔ)言模型的一個(gè)子集”的思想,這個(gè)思想也是提示學(xué)習(xí)(Prompt Learning)的前身。
前言
GPT系列是OpenAI的一系列預(yù)訓(xùn)練文章,GPT的全稱(chēng)是Generative Pre-Trained Transformer,顧名思義,GPT的目的就是通過(guò)Transformer為基礎(chǔ)模型,使用預(yù)訓(xùn)練技術(shù)得到通用的文本模型。目前已經(jīng)公布論文的有文本預(yù)訓(xùn)練GPT-1,GPT-2,GPT-3,以及圖像預(yù)訓(xùn)練iGPT。據(jù)傳還未發(fā)布的GPT-4是一個(gè)多模態(tài)模型。最近非常火的ChatGPT和今年年初公布的[1]是一對(duì)姐妹模型,是在GPT-4之前發(fā)布的預(yù)熱模型,有時(shí)候也被叫做GPT3.5。ChatGPT和InstructGPT在模型結(jié)構(gòu),訓(xùn)練方式上都完全一致,即都使用了指示學(xué)習(xí)(Instruction Learning)和人工反饋的強(qiáng)化學(xué)習(xí)(Reinforcement Learning from Human Feedback,RLHF)來(lái)指導(dǎo)模型的訓(xùn)練,它們不同的僅僅是采集數(shù)據(jù)的方式上有所差異。所以要搞懂ChatGPT,我們必須要先讀懂InstructGPT。
1. 背景知識(shí)
在介紹ChatGPT/InstructGPT之前,我們先介紹它們依賴(lài)的基礎(chǔ)算法。
1.1 GPT系列
基于文本預(yù)訓(xùn)練的GPT-1[2],GPT-2[3],GPT-3[4]三代模型都是采用的以Transformer為核心結(jié)構(gòu)的模型(圖1),不同的是模型的層數(shù)和詞向量長(zhǎng)度等超參,它們具體的內(nèi)容如表1。
圖1:GPT系列的模型結(jié)構(gòu)(其中Trm是一個(gè)Transformer結(jié)構(gòu))
表1:歷代GPT的發(fā)布時(shí)間,參數(shù)量以及訓(xùn)練量
模型 |
發(fā)布時(shí)間 |
層數(shù) |
頭數(shù) |
詞向量長(zhǎng)度 |
參數(shù)量 |
預(yù)訓(xùn)練數(shù)據(jù)量 |
GPT-1 |
2018 年 6 月 |
12 |
12 |
768 |
1.17 億 |
約 5GB |
GPT-2 |
2019 年 2 月 |
48 |
- |
1600 |
15 億 |
40GB |
GPT-3 |
2020 年 5 月 |
96 |
96 |
12888 |
1,750 億 |
45TB |
GPT-1比BERT誕生略早幾個(gè)月。它們都是采用了Transformer為核心結(jié)構(gòu),不同的是GPT-1通過(guò)自左向右生成式的構(gòu)建預(yù)訓(xùn)練任務(wù),然后得到一個(gè)通用的預(yù)訓(xùn)練模型,這個(gè)模型和BERT一樣都可用來(lái)做下游任務(wù)的微調(diào)。GPT-1當(dāng)時(shí)在9個(gè)NLP任務(wù)上取得了SOTA的效果,但GPT-1使用的模型規(guī)模和數(shù)據(jù)量都比較小,這也就促使了GPT-2的誕生。
對(duì)比GPT-1,GPT-2并未在模型結(jié)構(gòu)上大作文章,只是使用了更多參數(shù)的模型和更多的訓(xùn)練數(shù)據(jù)(表1)。GPT-2最重要的思想是提出了“所有的有監(jiān)督學(xué)習(xí)都是無(wú)監(jiān)督語(yǔ)言模型的一個(gè)子集”的思想,這個(gè)思想也是提示學(xué)習(xí)(Prompt Learning)的前身。GPT-2在誕生之初也引發(fā)了不少的轟動(dòng),它生成的新聞足以欺騙大多數(shù)人類(lèi),達(dá)到以假亂真的效果。甚至當(dāng)時(shí)被稱(chēng)為“AI界最危險(xiǎn)的武器”,很多門(mén)戶(hù)網(wǎng)站也命令禁止使用GPT-2生成的新聞。
GPT-3被提出時(shí),除了它遠(yuǎn)超GPT-2的效果外,引起更多討論的是它1750億的參數(shù)量。GPT-3除了能完成常見(jiàn)的NLP任務(wù)外,研究者意外的發(fā)現(xiàn)GPT-3在寫(xiě)SQL,JAVAScript等語(yǔ)言的代碼,進(jìn)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算上也有不錯(cuò)的表現(xiàn)效果。GPT-3的訓(xùn)練使用了情境學(xué)習(xí)(In-context Learning),它是元學(xué)習(xí)(Meta-learning)的一種,元學(xué)習(xí)的核心思想在于通過(guò)少量的數(shù)據(jù)尋找一個(gè)合適的初始化范圍,使得模型能夠在有限的數(shù)據(jù)集上快速擬合,并獲得不錯(cuò)的效果。
通過(guò)上面的分析我們可以看出從性能角度上講,GPT有兩個(gè)目標(biāo):
- 提升模型在常見(jiàn)NLP任務(wù)上的表現(xiàn)效果;
- 提升模型在其他非典型NLP任務(wù)(例如代碼編寫(xiě),數(shù)學(xué)運(yùn)算)上的泛化能力。
另外,預(yù)訓(xùn)練模型自誕生之始,一個(gè)備受詬病的問(wèn)題就是預(yù)訓(xùn)練模型的偏見(jiàn)性。因?yàn)轭A(yù)訓(xùn)練模型都是通過(guò)海量數(shù)據(jù)在超大參數(shù)量級(jí)的模型上訓(xùn)練出來(lái)的,對(duì)比完全由人工規(guī)則控制的專(zhuān)家系統(tǒng)來(lái)說(shuō),預(yù)訓(xùn)練模型就像一個(gè)黑盒子。沒(méi)有人能夠保證預(yù)訓(xùn)練模型不會(huì)生成一些包含種族歧視,性別歧視等危險(xiǎn)內(nèi)容,因?yàn)樗膸资瓽B甚至幾十TB的訓(xùn)練數(shù)據(jù)里幾乎肯定包含類(lèi)似的訓(xùn)練樣本。這也就是InstructGPT和ChatGPT的提出動(dòng)機(jī),論文中用3H概括了它們的優(yōu)化目標(biāo):
- 有用的(Helpful);
- 可信的(Honest);
- 無(wú)害的(Harmless)。
OpenAI的GPT系列模型并沒(méi)有開(kāi)源,但是它們提供了模型的試用網(wǎng)站,有條件的同學(xué)可以自行試用。
1.2 指示學(xué)習(xí)(Instruct Learning)和提示(Prompt Learning)學(xué)習(xí)
指示學(xué)習(xí)是谷歌Deepmind的Quoc V.Le團(tuán)隊(duì)在2021年的一篇名為《F.NETuned Language Models Are Zero-Shot Learners》[5]文章中提出的思想。指示學(xué)習(xí)和提示學(xué)習(xí)的目的都是去挖掘語(yǔ)言模型本身具備的知識(shí)。不同的是Prompt是激發(fā)語(yǔ)言模型的補(bǔ)全能力,例如根據(jù)上半句生成下半句,或是完形填空等。Instruct是激發(fā)語(yǔ)言模型的理解能力,它通過(guò)給出更明顯的指令,讓模型去做出正確的行動(dòng)。我們可以通過(guò)下面的例子來(lái)理解這兩個(gè)不同的學(xué)習(xí)方式:
- 提示學(xué)習(xí):給女朋友買(mǎi)了這個(gè)項(xiàng)鏈,她很喜歡,這個(gè)項(xiàng)鏈太____了。
- 指示學(xué)習(xí):判斷這句話的情感:給女朋友買(mǎi)了這個(gè)項(xiàng)鏈,她很喜歡。選項(xiàng):A=好;B=一般;C=差。
指示學(xué)習(xí)的優(yōu)點(diǎn)是它經(jīng)過(guò)多任務(wù)的微調(diào)后,也能夠在其他任務(wù)上做zero-shot,而提示學(xué)習(xí)都是針對(duì)一個(gè)任務(wù)的。泛化能力不如指示學(xué)習(xí)。我們可以通過(guò)圖2來(lái)理解微調(diào),提示學(xué)習(xí)和指示學(xué)習(xí)。
圖2:模型微調(diào),提示學(xué)習(xí),指示學(xué)習(xí)三者的異同
1.3 人工反饋的強(qiáng)化學(xué)習(xí)
因?yàn)橛?xùn)練得到的模型并不是非常可控的,模型可以看做對(duì)訓(xùn)練集分布的一個(gè)擬合。那么反饋到生成模型中,訓(xùn)練數(shù)據(jù)的分布便是影響生成內(nèi)容的質(zhì)量最重要的一個(gè)因素。有時(shí)候我們希望模型并不僅僅只受訓(xùn)練數(shù)據(jù)的影響,而是人為可控的,從而保證生成數(shù)據(jù)的有用性,真實(shí)性和無(wú)害性。論文中多次提到了對(duì)齊(Alignment)問(wèn)題,我們可以理解為模型的輸出內(nèi)容和人類(lèi)喜歡的輸出內(nèi)容的對(duì)齊,人類(lèi)喜歡的不止包括生成內(nèi)容的流暢性和語(yǔ)法的正確性,還包括生成內(nèi)容的有用性、真實(shí)性和無(wú)害性。
我們知道強(qiáng)化學(xué)習(xí)通過(guò)獎(jiǎng)勵(lì)(Reward)機(jī)制來(lái)指導(dǎo)模型訓(xùn)練,獎(jiǎng)勵(lì)機(jī)制可以看做傳統(tǒng)模訓(xùn)練機(jī)制的損失函數(shù)。獎(jiǎng)勵(lì)的計(jì)算要比損失函數(shù)更靈活和多樣(AlphaGO的獎(jiǎng)勵(lì)是對(duì)局的勝負(fù)),這帶來(lái)的代價(jià)是獎(jiǎng)勵(lì)的計(jì)算是不可導(dǎo)的,因此不能直接拿來(lái)做反向傳播。強(qiáng)化學(xué)習(xí)的思路是通過(guò)對(duì)獎(jiǎng)勵(lì)的大量采樣來(lái)擬合損失函數(shù),從而實(shí)現(xiàn)模型的訓(xùn)練。同樣人類(lèi)反饋也是不可導(dǎo)的,那么我們也可以將人工反饋?zhàn)鳛閺?qiáng)化學(xué)習(xí)的獎(jiǎng)勵(lì),基于人工反饋的強(qiáng)化學(xué)習(xí)便應(yīng)運(yùn)而生。
RLHF最早可以追溯到google在2017年發(fā)表的《Deep Reinforcement Learning from Human Preferences》[6],它通過(guò)人工標(biāo)注作為反饋,提升了強(qiáng)化學(xué)習(xí)在模擬機(jī)器人以及雅達(dá)利游戲上的表現(xiàn)效果。
圖3:人工反饋的強(qiáng)化學(xué)習(xí)的基本原理
InstructGPT/ChatGPT中還用到了強(qiáng)化學(xué)習(xí)中一個(gè)經(jīng)典的算法:OpenAI提出的最近策略?xún)?yōu)化(Proximal Policy Optimization,PPO)[7]。PPO算法是一種新型的Policy Gradient算法,Policy Gradient算法對(duì)步長(zhǎng)十分敏感,但是又難以選擇合適的步長(zhǎng),在訓(xùn)練過(guò)程中新舊策略的的變化差異如果過(guò)大則不利于學(xué)習(xí)。PPO提出了新的目標(biāo)函數(shù)可以在多個(gè)訓(xùn)練步驟實(shí)現(xiàn)小批量的更新,解決了Policy Gradient算法中步長(zhǎng)難以確定的問(wèn)題。其實(shí)TRPO也是為了解決這個(gè)思想但是相比于TRPO算法PPO算法更容易求解。
2. InstructGPT/ChatGPT原理解讀
有了上面這些基礎(chǔ)知識(shí),我們?cè)偃チ私釯nstructGPT和ChatGPT就會(huì)簡(jiǎn)單很多。簡(jiǎn)單來(lái)說(shuō),InstructGPT/ChatGPT都是采用了GPT-3的網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)指示學(xué)習(xí)構(gòu)建訓(xùn)練樣本來(lái)訓(xùn)練一個(gè)反應(yīng)預(yù)測(cè)內(nèi)容效果的獎(jiǎng)勵(lì)模型(RM),最后通過(guò)這個(gè)獎(jiǎng)勵(lì)模型的打分來(lái)指導(dǎo)強(qiáng)化學(xué)習(xí)模型的訓(xùn)練。InstructGPT/ChatGPT的訓(xùn)練流程如圖4所示。
圖4:InstructGPT的計(jì)算流程:(1)有監(jiān)督微調(diào)(SFT);(2)獎(jiǎng)勵(lì)模型(RM)訓(xùn)練;(3)通過(guò)PPO根據(jù)獎(jiǎng)勵(lì)模型進(jìn)行強(qiáng)化學(xué)習(xí)。
從圖4中我們可以看出,InstructGPT/ChatGPT的訓(xùn)練可以分成3步,其中第2步和第3步是的獎(jiǎng)勵(lì)模型和強(qiáng)化學(xué)習(xí)的SFT模型可以反復(fù)迭代優(yōu)化。
- 根據(jù)采集的SFT數(shù)據(jù)集對(duì)GPT-3進(jìn)行有監(jiān)督的微調(diào)(Supervised FineTune,SFT);
- 收集人工標(biāo)注的對(duì)比數(shù)據(jù),訓(xùn)練獎(jiǎng)勵(lì)模型(Reword Model,RM);
- 使用RM作為強(qiáng)化學(xué)習(xí)的優(yōu)化目標(biāo),利用PPO算法微調(diào)SFT模型。
根據(jù)圖4,我們將分別介紹InstructGPT/ChatGPT的數(shù)據(jù)集采集和模型訓(xùn)練兩個(gè)方面的內(nèi)容。
2.1 數(shù)據(jù)集采集
如圖4所示,InstructGPT/ChatGPT的訓(xùn)練分成3步,每一步需要的數(shù)據(jù)也有些許差異,下面我們分別介紹它們。
2.1.1 SFT數(shù)據(jù)集
SFT數(shù)據(jù)集是用來(lái)訓(xùn)練第1步有監(jiān)督的模型,即使用采集的新數(shù)據(jù),按照GPT-3的訓(xùn)練方式對(duì)GPT-3進(jìn)行微調(diào)。因?yàn)镚PT-3是一個(gè)基于提示學(xué)習(xí)的生成模型,因此SFT數(shù)據(jù)集也是由提示-答復(fù)對(duì)組成的樣本。SFT數(shù)據(jù)一部分來(lái)自使用OpenAI的PlayGround的用戶(hù),另一部分來(lái)自O(shè)penAI雇傭的40名標(biāo)注工(labeler)。并且他們對(duì)labeler進(jìn)行了培訓(xùn)。在這個(gè)數(shù)據(jù)集中,標(biāo)注工的工作是根據(jù)內(nèi)容自己編寫(xiě)指示,并且要求編寫(xiě)的指示滿(mǎn)足下面三點(diǎn):
- 簡(jiǎn)單任務(wù):labeler給出任意一個(gè)簡(jiǎn)單的任務(wù),同時(shí)要確保任務(wù)的多樣性;
- Few-shot任務(wù):labeler給出一個(gè)指示,以及該指示的多個(gè)查詢(xún)-相應(yīng)對(duì);
- 用戶(hù)相關(guān)的:從接口中獲取用例,然后讓labeler根據(jù)這些用例編寫(xiě)指示。
2.1.2 RM數(shù)據(jù)集
RM數(shù)據(jù)集用來(lái)訓(xùn)練第2步的獎(jiǎng)勵(lì)模型,我們也需要為InstructGPT/ChatGPT的訓(xùn)練設(shè)置一個(gè)獎(jiǎng)勵(lì)目標(biāo)。這個(gè)獎(jiǎng)勵(lì)目標(biāo)不必可導(dǎo),但是一定要盡可能全面且真實(shí)的對(duì)齊我們需要模型生成的內(nèi)容。很自然的,我們可以通過(guò)人工標(biāo)注的方式來(lái)提供這個(gè)獎(jiǎng)勵(lì),通過(guò)人工對(duì)可以給那些涉及偏見(jiàn)的生成內(nèi)容更低的分從而鼓勵(lì)模型不去生成這些人類(lèi)不喜歡的內(nèi)容。InstructGPT/ChatGPT的做法是先讓模型生成一批候選文本,讓后通過(guò)labeler根據(jù)生成數(shù)據(jù)的質(zhì)量對(duì)這些生成內(nèi)容進(jìn)行排序。
2.1.3 PPO數(shù)據(jù)集
InstructGPT的PPO數(shù)據(jù)沒(méi)有進(jìn)行標(biāo)注,它均來(lái)自GPT-3的API的用戶(hù)。既又不同用戶(hù)提供的不同種類(lèi)的生成任務(wù),其中占比最高的包括生成任務(wù)(45.6%),QA(12.4%),頭腦風(fēng)暴(11.2%),對(duì)話(8.4%)等。
2.1.4 數(shù)據(jù)分析
因?yàn)镮nstructGPT/ChatGPT是在GPT-3基礎(chǔ)上做的微調(diào),而且因?yàn)樯婕傲巳斯?biāo)注,它們數(shù)據(jù)總量并不大,表2展示了三份數(shù)據(jù)的來(lái)源及其數(shù)據(jù)量。
表2:InstructGPT的數(shù)據(jù)分布
論文的附錄A對(duì)數(shù)據(jù)的分布進(jìn)行了更詳細(xì)的討論,這里我列出幾個(gè)可能影響模型效果的幾項(xiàng):
- 數(shù)據(jù)中96%以上是英文,其它20個(gè)語(yǔ)種例如中文,法語(yǔ),西班牙語(yǔ)等加起來(lái)不到4%,這可能導(dǎo)致InstructGPT/ChatGPT能進(jìn)行其它語(yǔ)種的生成,但效果應(yīng)該遠(yuǎn)不如英文;
- 提示種類(lèi)共有9種,而且絕大多數(shù)是生成類(lèi)任務(wù),可能會(huì)導(dǎo)致模型有覆蓋不到的任務(wù)類(lèi)型;
- 40名外包員工來(lái)自美國(guó)和東南亞,分布比較集中且人數(shù)較少, InstructGPT/ChatGPT的目標(biāo)是訓(xùn)練一個(gè)價(jià)值觀正確的預(yù)訓(xùn)練模型,它的價(jià)值觀是由這40個(gè)外包員工的價(jià)值觀組合而成。而這個(gè)比較窄的分布可能會(huì)生成一些其他地區(qū)比較在意的歧視,偏見(jiàn)問(wèn)題。
此外,ChatGPT的博客中講到ChatGPT和InstructGPT的訓(xùn)練方式相同,不同點(diǎn)僅僅是它們采集數(shù)據(jù)上有所不同,但是并沒(méi)有更多的資料來(lái)講數(shù)據(jù)采集上有哪些細(xì)節(jié)上的不同。考慮到ChatGPT僅僅被用在對(duì)話領(lǐng)域,這里我猜測(cè)ChatGPT在數(shù)據(jù)采集上有兩個(gè)不同:1. 提高了對(duì)話類(lèi)任務(wù)的占比;2. 將提示的方式轉(zhuǎn)換Q&A的方式。當(dāng)然這里也僅僅是猜測(cè),更準(zhǔn)確的描述要等到ChatGPT的論文、源碼等更詳細(xì)的資料公布我們才能知道。
2.2 訓(xùn)練任務(wù)
我們剛介紹到InstructGPT/ChatGPT有三步訓(xùn)練方式。這三步訓(xùn)練會(huì)涉及三個(gè)模型:SFT,RM以及PPO,下面我們?cè)敿?xì)介紹它們。
2.2.1 有監(jiān)督微調(diào)(SFT)
這一步的訓(xùn)練和GPT-3一致,而且作者發(fā)現(xiàn)讓模型適當(dāng)過(guò)擬合有助于后面兩步的訓(xùn)練。
2.2.2 獎(jiǎng)勵(lì)模型(RM)
因?yàn)橛?xùn)練RM的數(shù)據(jù)是一個(gè)labeler根據(jù)生成結(jié)果排序的形式,所以它可以看做一個(gè)回歸模型。RM結(jié)構(gòu)是將SFT訓(xùn)練后的模型的最后的嵌入層去掉后的模型。它的輸入是prompt和Reponse,輸出是獎(jiǎng)勵(lì)值。具體的講,對(duì)弈每個(gè)prompt,InstructGPT/ChatGPT會(huì)隨機(jī)生成 K 個(gè)輸出( 4≤K≤9 ),然后它們向每個(gè)labeler成對(duì)的展示輸出結(jié)果,也就是每個(gè)prompt共展示 CK2 個(gè)結(jié)果,然后用戶(hù)從中選擇效果更好的輸出。在訓(xùn)練時(shí),InstructGPT/ChatGPT將每個(gè)prompt的 CK2 個(gè)響應(yīng)對(duì)作為一個(gè)batch,這種按prompt為batch的訓(xùn)練方式要比傳統(tǒng)的按樣本為batch的方式更不容易過(guò)擬合,因?yàn)檫@種方式每個(gè)prompt會(huì)且僅會(huì)輸入到模型中一次。
獎(jiǎng)勵(lì)模型的損失函數(shù)表示為式(1)。這個(gè)損失函數(shù)的目標(biāo)是最大化labeler更喜歡的響應(yīng)和不喜歡的響應(yīng)之間的差值。
(1)loss?(θ)=−1(K2)E(x,yw,yl)∼D[log?(σ(rθ(x,yw)−rθ(x,yl)))]
其中 rθ(x,y) 是提示 x 和響應(yīng) y 在參數(shù)為 θ 的獎(jiǎng)勵(lì)模型下的獎(jiǎng)勵(lì)值, yw 是labeler更喜歡的響應(yīng)結(jié)果, yl 是labeler不喜歡的響應(yīng)結(jié)果。 D 是整個(gè)訓(xùn)練數(shù)據(jù)集。
2.2.3 強(qiáng)化學(xué)習(xí)模型(PPO)
強(qiáng)化學(xué)習(xí)和預(yù)訓(xùn)練模型是最近兩年最為火熱的AI方向之二,之前不少科研工作者說(shuō)強(qiáng)化學(xué)習(xí)并不是一個(gè)非常適合應(yīng)用到預(yù)訓(xùn)練模型中,因?yàn)楹茈y通過(guò)模型的輸出內(nèi)容建立獎(jiǎng)勵(lì)機(jī)制。而InstructGPT/ChatGPT反直覺(jué)的做到了這點(diǎn),它通過(guò)結(jié)合人工標(biāo)注,將強(qiáng)化學(xué)習(xí)引入到預(yù)訓(xùn)練語(yǔ)言模型是這個(gè)算法最大的創(chuàng)新點(diǎn)。
如表2所示,PPO的訓(xùn)練集完全來(lái)自API。它通過(guò)第2步得到的獎(jiǎng)勵(lì)模型來(lái)指導(dǎo)SFT模型的繼續(xù)訓(xùn)練。很多時(shí)候強(qiáng)化學(xué)習(xí)是非常難訓(xùn)練的,InstructGPT/ChatGPT在訓(xùn)練過(guò)程中就遇到了兩個(gè)問(wèn)題:
- 問(wèn)題1:隨著模型的更新,強(qiáng)化學(xué)習(xí)模型產(chǎn)生的數(shù)據(jù)和訓(xùn)練獎(jiǎng)勵(lì)模型的數(shù)據(jù)的差異會(huì)越來(lái)越大。作者的解決方案是在損失函數(shù)中加入KL懲罰項(xiàng) βlog?(π?RL(y∣x)/πSFT(y∣x)) 來(lái)確保PPO模型的輸出和SFT的輸出差距不會(huì)很大。
- 問(wèn)題2:只用PPO模型進(jìn)行訓(xùn)練的話,會(huì)導(dǎo)致模型在通用NLP任務(wù)上性能的大幅下降,作者的解決方案是在訓(xùn)練目標(biāo)中加入了通用的語(yǔ)言模型目標(biāo) γEx∼Dpretrain [log?(π?RL(x))] ,這個(gè)變量在論文中被叫做PPO-ptx。
綜上,PPO的訓(xùn)練目標(biāo)為式(2)。 (2) objective (?)=E(x,y)∼Dπ?RL[rθ(x,y)−βlog?(π?RL(y∣x)/πSFT(y∣x))]+γEx∼Dpretrain [log?(π?RL(x))]
3. InstructGPT/ChatGPT的性能分析
不可否認(rèn)的是,InstructGPT/ChatGPT的效果是非常棒的,尤其是引入了人工標(biāo)注之后,讓模型的“價(jià)值觀”和的正確程度和人類(lèi)行為模式的“真實(shí)性”上都大幅的提升。那么,僅僅根據(jù)InstructGPT/ChatGPT的技術(shù)方案和訓(xùn)練方式,我們就可以分析出它可以帶來(lái)哪些效果提升呢?
3.1 優(yōu)點(diǎn)
- InstructGPT/ChatGPT的效果比GPT-3更加真實(shí):這個(gè)很好理解,因?yàn)镚PT-3本身就具有非常強(qiáng)的泛化能力和生成能力,再加上InstructGPT/ChatGPT引入了不同的labeler進(jìn)行提示編寫(xiě)和生成結(jié)果排序,而且還是在GPT-3之上進(jìn)行的微調(diào),這使得我們?cè)谟?xùn)練獎(jiǎng)勵(lì)模型時(shí)對(duì)更加真實(shí)的數(shù)據(jù)會(huì)有更高的獎(jiǎng)勵(lì)。作者也在TruthfulQA數(shù)據(jù)集上對(duì)比了它們和GPT-3的效果,實(shí)驗(yàn)結(jié)果表明甚至13億小尺寸的PPO-ptx的效果也要比GPT-3要好。
- InstructGPT/ChatGPT在模型的無(wú)害性上比GPT-3效果要有些許提升:原理同上。但是作者發(fā)現(xiàn)InstructGPT在歧視、偏見(jiàn)等數(shù)據(jù)集上并沒(méi)有明顯的提升。這是因?yàn)镚PT-3本身就是一個(gè)效果非常好的模型,它生成帶有有害、歧視、偏見(jiàn)等情況的有問(wèn)題樣本的概率本身就會(huì)很低。僅僅通過(guò)40個(gè)labeler采集和標(biāo)注的數(shù)據(jù)很可能無(wú)法對(duì)模型在這些方面進(jìn)行充分的優(yōu)化,所以會(huì)帶來(lái)模型效果的提升很少或者無(wú)法察覺(jué)。
- InstructGPT/ChatGPT具有很強(qiáng)的Coding能力:首先GPT-3就具有很強(qiáng)的Coding能力,基于GPT-3制作的API也積累了大量的Coding代碼。而且也有部分OpenAI的內(nèi)部員工參與了數(shù)據(jù)采集工作。通過(guò)Coding相關(guān)的大量數(shù)據(jù)以及人工標(biāo)注,訓(xùn)練出來(lái)的InstructGPT/ChatGPT具有非常強(qiáng)的Coding能力也就不意外了。
3.2 缺點(diǎn)
- InstructGPT/ChatGPT會(huì)降低模型在通用NLP任務(wù)上的效果:我們?cè)赑PO的訓(xùn)練的時(shí)候討論了這點(diǎn),雖然修改損失函數(shù)可以緩和,但這個(gè)問(wèn)題并沒(méi)有得到徹底解決。
- 有時(shí)候InstructGPT/ChatGPT會(huì)給出一些荒謬的輸出:雖然InstructGPT/ChatGPT使用了人類(lèi)反饋,但限于人力資源有限。影響模型效果最大的還是有監(jiān)督的語(yǔ)言模型任務(wù),人類(lèi)只是起到了糾正作用。所以很有可能受限于糾正數(shù)據(jù)的有限,或是有監(jiān)督任務(wù)的誤導(dǎo)(只考慮模型的輸出,沒(méi)考慮人類(lèi)想要什么),導(dǎo)致它生成內(nèi)容的不真實(shí)。就像一個(gè)學(xué)生,雖然有老師對(duì)他指導(dǎo),但也不能確定學(xué)生可以學(xué)會(huì)所有知識(shí)點(diǎn)。
- 模型對(duì)指示非常敏感:這個(gè)也可以歸結(jié)為labeler標(biāo)注的數(shù)據(jù)量不夠,因?yàn)橹甘臼悄P彤a(chǎn)生輸出的唯一線索,如果指示的數(shù)量和種類(lèi)訓(xùn)練的不充分的話,就可能會(huì)讓模型存在這個(gè)問(wèn)題。
- 模型對(duì)簡(jiǎn)單概念的過(guò)分解讀:這可能是因?yàn)閘abeler在進(jìn)行生成內(nèi)容的比較時(shí),傾向于給給長(zhǎng)的輸出內(nèi)容更高的獎(jiǎng)勵(lì)。
- 對(duì)有害的指示可能會(huì)輸出有害的答復(fù):例如InstructGPT/ChatGPT也會(huì)對(duì)用戶(hù)提出的“AI毀滅人類(lèi)計(jì)劃書(shū)”給出行動(dòng)方案(圖5)。這個(gè)是因?yàn)镮nstructGPT/ChatGPT假設(shè)labeler編寫(xiě)的指示是合理且價(jià)值觀正確的,并沒(méi)有對(duì)用戶(hù)給出的指示做更詳細(xì)的判斷,從而會(huì)導(dǎo)致模型會(huì)對(duì)任意輸入都給出答復(fù)。雖然后面的獎(jiǎng)勵(lì)模型可能會(huì)給這類(lèi)輸出較低的獎(jiǎng)勵(lì)值,但模型在生成文本時(shí),不僅要考慮模型的價(jià)值觀,也要考慮生成內(nèi)容和指示的匹配度,有時(shí)候生成一些價(jià)值觀有問(wèn)題的輸出也是可能的。
圖5:ChatGPT編寫(xiě)的毀滅人類(lèi)計(jì)劃書(shū)。
3.3 未來(lái)工作
我們已經(jīng)分析了InstrcutGPT/ChatGPT的技術(shù)方案和它的問(wèn)題,那么我們也可以看出InstrcutGPT/ChatGPT的優(yōu)化角度有哪些了。
- 人工標(biāo)注的降本增效:InstrcutGPT/ChatGPT雇傭了40人的標(biāo)注團(tuán)隊(duì),但從模型的表現(xiàn)效果來(lái)看,這40人的團(tuán)隊(duì)是不夠的。如何讓人類(lèi)能夠提供更有效的反饋方式,將人類(lèi)表現(xiàn)和模型表現(xiàn)有機(jī)和巧妙的結(jié)合起來(lái)是非常重要的。
- 模型對(duì)指示的泛化/糾錯(cuò)等能力:指示作為模型產(chǎn)生輸出的唯一線索,模型對(duì)他的依賴(lài)是非常嚴(yán)重的,如何提升模型對(duì)指示的泛化能力以及對(duì)錯(cuò)誤指示示的糾錯(cuò)能力是提升模型體驗(yàn)的一個(gè)非常重要的工作。這不僅可以讓模型能夠擁有更廣泛的應(yīng)用場(chǎng)景,還可以讓模型變得更“智能”。
- 避免通用任務(wù)性能下降:這里可能需要設(shè)計(jì)一個(gè)更合理的人類(lèi)反饋的使用方式,或是更前沿的模型結(jié)構(gòu)。因?yàn)槲覀冇懻摿薎nstrcutGPT/ChatGPT的很多問(wèn)題可以通過(guò)提供更多l(xiāng)abeler標(biāo)注的數(shù)據(jù)來(lái)解決,但這會(huì)導(dǎo)致通用NLP任務(wù)更嚴(yán)重的性能下降,所以需要方案來(lái)讓生成結(jié)果的3H和通用NLP任務(wù)的性能達(dá)到平衡。
3.4 InstrcutGPT/ChatGPT的熱點(diǎn)話題解答
- ChatGPT的出現(xiàn)會(huì)不會(huì)導(dǎo)致底層程序員失業(yè)?從ChatGPT的原理和網(wǎng)上漏出的生成內(nèi)容來(lái)看,ChatGPT生成的代碼很多可以正確運(yùn)行。但程序員的工作不止是寫(xiě)代碼,更重要的是找到問(wèn)題的解決方案。所以ChatGPT并不會(huì)取代程序員,尤其是高階程序員。相反它會(huì)向現(xiàn)在很多的代碼生成工具一樣,成為程序員寫(xiě)代碼非常有用的工具。
- Stack Overflow 宣布臨時(shí)規(guī)則:禁止 ChatGPT。ChatGPT本質(zhì)上還是一個(gè)文本生成模型,對(duì)比生成代碼,它更擅長(zhǎng)生成以假亂真的文本。而且文本生成模型生成的代碼或者解決方案并不能保證是可運(yùn)行而且是可以解決問(wèn)題的,但它以假亂真的文本又會(huì)迷惑很多查詢(xún)這個(gè)問(wèn)題的人。Stack Overflow為了維持論壇的質(zhì)量,封禁ChatGPT也是清理之中。
- 聊天機(jī)器人 ChatGPT 在誘導(dǎo)下寫(xiě)出「毀滅人類(lèi)計(jì)劃書(shū)」,并給出代碼,AI 發(fā)展有哪些問(wèn)題需關(guān)注?ChatGPT的「毀滅人類(lèi)計(jì)劃書(shū)」是它在不可遇見(jiàn)的指示下根據(jù)海量數(shù)據(jù)強(qiáng)行擬合出來(lái)的生成內(nèi)容。雖然這些內(nèi)容看起來(lái)很真實(shí),表達(dá)也很流暢,這說(shuō)明的只是ChatGPT具有非常強(qiáng)的生成效果,并不表示ChatGPT具備毀滅人類(lèi)的思想。因?yàn)樗麅H僅是一個(gè)文本生成模型,并不是一個(gè)決策模型。
4. 總結(jié)
就像很多人們算法剛誕生時(shí)一樣,ChatGPT憑借有用性,真實(shí)性,無(wú)害性的效果,引起了業(yè)內(nèi)廣泛的關(guān)注和人類(lèi)對(duì)AI的思考。但是當(dāng)我們看完它的算法原理之后,發(fā)現(xiàn)它并沒(méi)有業(yè)內(nèi)宣傳的那么恐怖。反而我們可以從它的技術(shù)方案中學(xué)到很多有價(jià)值的東西。InstrcutGPT/ChatGPT在AI界最重要的貢獻(xiàn)是將強(qiáng)化學(xué)習(xí)和預(yù)訓(xùn)練模型巧妙的結(jié)合起來(lái)。而且通過(guò)人工反饋提升了模型的有用性,真實(shí)性和無(wú)害性。ChatGPT也進(jìn)一步提升大模型的成本,之前還只是比拼數(shù)據(jù)量和模型規(guī)模,現(xiàn)在甚至也引入了雇傭的外包這一支出,讓個(gè)體工作者更加望而卻步。
參考
- ^Ouyang, Long, et al. "Training language models to follow instructions with human feedback." *arXiv preprint arXiv:2203.02155* (2022). https://arxiv.org/pdf/2203.02155.pdf
- ^Radford, A., Narasimhan, K., Salimans, T. and Sutskever, I., 2018. Improving language understanding by generative pre-training. https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
- ^Radford, A., Wu, J., Child, R., Luan, D., Amodei, D. and Sutskever, I., 2019. Language models are unsupervised multitask learners. *OpenAI blog*, *1*(8), p.9. https://life-extension.github.io/2020/05/27/GPT%E6%8A%80%E6%9C%AF%E5%88%9D%E6%8E%A2/language-models.pdf
- ^Brown, Tom B., Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan et al. “Language models are few-shot learners.” *arXiv preprint arXiv:2005.14165* (2020). https://proceedings.neurips.cc/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf
- ^Wei, Jason, et al. "Finetuned language models are zero-shot learners." *arXiv preprint arXiv:2109.01652* (2021). https://arxiv.org/pdf/2109.01652.pdf
- ^Christiano, Paul F., et al. "Deep reinforcement learning from human preferences." *Advances in neural information processing systems* 30 (2017). https://arxiv.org/pdf/1706.03741.pdf
- ^Schulman, John, et al. "Proximal policy optimization algorithms." *arXiv preprint arXiv:1707.06347* (2017). https://arxiv.org/pdf/1707.06347.pdf?