ChatGPT是基于GPT(生成式預(yù)訓(xùn)練語(yǔ)言模型)和RLHF(基于人工反饋的強(qiáng)化學(xué)習(xí)),這里我們重點(diǎn)從這兩方面來(lái)分析chatGPT的結(jié)構(gòu)及其原理。
1、GPT架構(gòu)及其原理?????????????????????????????????????????????????????????
GPT可以簡(jiǎn)單理解為一套數(shù)學(xué)模型,數(shù)據(jù)輸入給GPT,GPT輸出一套數(shù)據(jù)。例如:輸入一段話,GPT模型根據(jù)語(yǔ)言/語(yǔ)料概率來(lái)自動(dòng)生成回答的每一個(gè)字(詞句)。即利用已經(jīng)說(shuō)過(guò)的一段話作為輸入條件,預(yù)測(cè)下一個(gè)時(shí)刻不同語(yǔ)句甚至語(yǔ)言集合出現(xiàn)的概率分布。
GPT是生成式預(yù)訓(xùn)練語(yǔ)言模型,到目前,有GPT-1、GPT-2、GPT-3三個(gè)版本。三個(gè)版本首先,都是用無(wú)監(jiān)督的方法,即在大量無(wú)標(biāo)注的語(yǔ)料數(shù)據(jù)中,預(yù)訓(xùn)練出一個(gè)與下游任務(wù)無(wú)關(guān)的模型,三個(gè)版本在這里的主要區(qū)別是模型的參數(shù)越來(lái)越大。其次,在使用階段,三個(gè)版本分別試驗(yàn)了在具體任務(wù)中通過(guò)任務(wù)數(shù)據(jù)微調(diào)模型、不通過(guò)具體任務(wù)數(shù)據(jù)來(lái)微調(diào)模型以及通過(guò)少量任務(wù)數(shù)據(jù)交互來(lái)解決具體任務(wù)應(yīng)用問(wèn)題。
GPT模型架構(gòu)如圖1,它采用的以Transformer為核心結(jié)構(gòu)的模型,其中Trm是一個(gè)Transformer結(jié)構(gòu),一個(gè)Trm可以簡(jiǎn)單理解為一套數(shù)據(jù)流轉(zhuǎn)的結(jié)構(gòu)。
圖1 GPT系列的模型架構(gòu)
GPT-1的完整結(jié)構(gòu)如圖2,其中左邊是GPT使用的12層Transformer結(jié)構(gòu),右圖是預(yù)訓(xùn)練模型根據(jù)不同任務(wù)進(jìn)行微調(diào)的結(jié)構(gòu)。這里重點(diǎn)是構(gòu)建了一套具有強(qiáng)大自然語(yǔ)言理解能力的與任務(wù)無(wú)關(guān)的單模型框架:生成式預(yù)訓(xùn)練和判別式微調(diào)。預(yù)訓(xùn)練與微調(diào)的定義如下:
預(yù)訓(xùn)練:用標(biāo)準(zhǔn)的語(yǔ)言模型的目標(biāo)函數(shù),即似然函數(shù),根據(jù)前k個(gè)詞預(yù)測(cè)下一個(gè)詞的概率。GPT預(yù)訓(xùn)練階段其作者使用語(yǔ)言模型(LM)的訓(xùn)練方式,模型使用的是transformer的變體,即多層transformer-decoder。
微調(diào):用的是完整的輸入序列+標(biāo)簽。目標(biāo)函數(shù)=有監(jiān)督的目標(biāo)函數(shù)+λ*無(wú)監(jiān)督的目標(biāo)函數(shù)。
通過(guò)上面可以看出,對(duì)預(yù)訓(xùn)練好的模型,疊加對(duì)應(yīng)下游任務(wù)的層,就可實(shí)現(xiàn)不同下游任務(wù)。預(yù)訓(xùn)練語(yǔ)言模型能夠充分利用大規(guī)模的無(wú)標(biāo)注數(shù)據(jù)學(xué)習(xí)通用的語(yǔ)言模型,然后再使用下游任務(wù)的少量有標(biāo)注數(shù)據(jù)進(jìn)行模型微調(diào),來(lái)使具體的任務(wù)獲得較好的效果。
圖2 GPT-1模型架構(gòu)
GPT-2、GPT-3主要是增大了模型的容量,并去掉了監(jiān)督微調(diào)。其作者認(rèn)為大的模型應(yīng)該能學(xué)習(xí)出多任務(wù)的能力,而不需要大的標(biāo)注數(shù)據(jù)集來(lái)解決具體的任務(wù)問(wèn)題,當(dāng)然到此為止,實(shí)際上還沒(méi)有達(dá)到預(yù)期。
2、GPT發(fā)展階段
這里我們通過(guò)一個(gè)GPT模型的發(fā)展歷程,介紹chatGPT的主要經(jīng)歷了哪些變化。這里我們先看一下chatGPT的發(fā)展史:
圖3 chatGPT歷代版本及區(qū)別
如上圖所示,基于文本預(yù)訓(xùn)練的GPT-1,GPT-2,GPT-3三代模型都是采用的以Transformer為核心結(jié)構(gòu)的模型(圖3),主要的不同的是參數(shù)方面,也就是后邊的版本模型非常大了。而ChatGPT則在此基礎(chǔ)上,增加了人工強(qiáng)化學(xué)習(xí)的反饋(RLHF)。
GPT-1是在無(wú)標(biāo)注的文本語(yǔ)料中進(jìn)行生成式預(yù)訓(xùn)練,然后進(jìn)行判別式微調(diào),在具體的任務(wù)場(chǎng)景上獲得能力的提升。
GPT-2相對(duì)于GPT-1,模型結(jié)構(gòu)并沒(méi)有做大的調(diào)整,只是使用了更多參數(shù)的模型和更多的訓(xùn)練數(shù)據(jù)。GPT-2在誕生之初也引發(fā)了不少的轟動(dòng),它生成的新聞足以欺騙大多數(shù)人類,達(dá)到以假亂真的效果。當(dāng)時(shí)得出了一個(gè)結(jié)論:當(dāng)一個(gè)大型語(yǔ)言模型在足夠大的多樣化數(shù)據(jù)集上進(jìn)行無(wú)監(jiān)督訓(xùn)練,就能在很多領(lǐng)域數(shù)據(jù)集上執(zhí)行任務(wù)。
基于上述結(jié)論,提出了GPT-3,GPT-3大大加大了參數(shù)的數(shù)量,擁有1750億。GPT-3除了能完成常見的NLP任務(wù)外,研究者意外的發(fā)現(xiàn)GPT-3在寫SQL,JavaScript等語(yǔ)言的代碼,進(jìn)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算上也有不錯(cuò)的表現(xiàn)效果。GPT-3的基本訓(xùn)練方法,包括模型,數(shù)據(jù),訓(xùn)練都類似于GPT-2。
上面介紹了GPT系列模型,主要是參數(shù)的增大、數(shù)據(jù)量及其多樣性的增加。這個(gè)預(yù)測(cè)和實(shí)驗(yàn)結(jié)果,帶來(lái)了良好的效果,但仍然達(dá)不到使用的預(yù)期,于是,研究者又在此基礎(chǔ)上,利用人工反饋的強(qiáng)化學(xué)習(xí)方法來(lái)對(duì)體系進(jìn)行優(yōu)化。下面重點(diǎn)介紹RLHF。
3、基于人工反饋的強(qiáng)化學(xué)習(xí)訓(xùn)練過(guò)程
除了上述GPT越來(lái)越大的模型外,ChatGPT使用來(lái)自人類反饋的強(qiáng)化學(xué)習(xí)進(jìn)行訓(xùn)練,這種方法通過(guò)人類干預(yù)來(lái)增強(qiáng)機(jī)器學(xué)習(xí)以獲得更好的效果。在訓(xùn)練過(guò)程中,人類訓(xùn)練者扮演著用戶和人工智能助手的角色,并通過(guò)近端策略優(yōu)化算法進(jìn)行微調(diào)。RLHF的訓(xùn)練步驟如如圖4所示,其過(guò)程主要包括:收集數(shù)據(jù)訓(xùn)練監(jiān)督策略模型(SFT)、收集比較數(shù)據(jù)并訓(xùn)練獎(jiǎng)勵(lì)模型(RM)和采用PPO強(qiáng)化學(xué)習(xí)算法針對(duì)獎(jiǎng)勵(lì)模型來(lái)優(yōu)化策略三個(gè)階段。
圖4?ChatGPT的訓(xùn)練優(yōu)化過(guò)程
1)收集數(shù)據(jù)訓(xùn)練監(jiān)督策略模型(SFT)
這里OpenAI是先設(shè)計(jì)了一個(gè)prompt dataset,里面有大量的提示樣本,給出了各種各樣的任務(wù)描述;其次,找了一個(gè)標(biāo)注團(tuán)隊(duì)對(duì)這個(gè)prompt dataset進(jìn)行標(biāo)注(本質(zhì)就是人工回答高質(zhì)量答案);最后,用這個(gè)標(biāo)注過(guò)的數(shù)據(jù)集微調(diào)GPT-3.5,這個(gè)微調(diào)好的GPT-3.5我們稱之為SFT模型(監(jiān)督微調(diào),全稱Supervised fine-tuning,簡(jiǎn)稱SFT),此時(shí)的模型在遵循指令/對(duì)話方面已經(jīng)優(yōu)于GPT-3,但不一定符合人類偏好。具體步驟如下:
1、從數(shù)據(jù)集中抽取問(wèn)題;
2、標(biāo)引員寫出高質(zhì)量答案;
3、使用這些數(shù)據(jù)微調(diào)gpt-3.5。
2)收集比較數(shù)據(jù)并訓(xùn)練獎(jiǎng)勵(lì)模型(Reward Mode,RM)
這個(gè)階段主要是通過(guò)人工標(biāo)注訓(xùn)練數(shù)據(jù)(約33K個(gè)數(shù)據(jù)),來(lái)訓(xùn)練獎(jiǎng)勵(lì)模型。首先,在數(shù)據(jù)集中隨機(jī)抽取問(wèn)題,然后使用第一階段生成的模型,對(duì)于每個(gè)問(wèn)題,生成多個(gè)不同的回答。最后,人類標(biāo)注者對(duì)這些結(jié)果綜合考慮給出排名順序。
接下來(lái),使用這個(gè)排序結(jié)果數(shù)據(jù)來(lái)訓(xùn)練獎(jiǎng)勵(lì)模型。對(duì)多個(gè)排序結(jié)果,兩兩組合,形成多個(gè)訓(xùn)練數(shù)據(jù)對(duì)。RM模型接受一個(gè)輸入,給出評(píng)價(jià)回答質(zhì)量的分?jǐn)?shù)。這樣,對(duì)于一對(duì)訓(xùn)練數(shù)據(jù),調(diào)節(jié)參數(shù)使得高質(zhì)量回答的打分比低質(zhì)量的打分要高。具體步驟如下:
1、采樣問(wèn)題和模型的多個(gè)回答;
2、標(biāo)引員對(duì)輸出進(jìn)行打分并排序;
3、使用排序比較數(shù)據(jù)訓(xùn)練獎(jiǎng)勵(lì)模型。
3)采用PPO(Proximal Policy Optimization,近端策略優(yōu)化)強(qiáng)化學(xué)習(xí)算法針對(duì)獎(jiǎng)勵(lì)模型來(lái)優(yōu)化策略。
這一階段利用第二階段訓(xùn)練好的獎(jiǎng)勵(lì)模型,靠獎(jiǎng)勵(lì)打分來(lái)更新預(yù)訓(xùn)練模型參數(shù)。具體做法是,再次讓SFT模型去回答prompt dataset某個(gè)問(wèn)題,然后此時(shí)不再讓人工評(píng)估好壞,而是讓階段2訓(xùn)練好的獎(jiǎng)勵(lì)模型去給SFT模型的預(yù)測(cè)結(jié)果進(jìn)行打分排序。具體步驟如下:
1、采樣一個(gè)新的問(wèn)題;
2、基于有監(jiān)督策略初始化ppo模型;
3、讓策略模型(SFT)生成回答;
4、獎(jiǎng)勵(lì)模型數(shù)據(jù)對(duì)產(chǎn)生的回答計(jì)算獎(jiǎng)勵(lì);
5、獎(jiǎng)勵(lì)模型使用ppo更新策略模型(SFT)。
最后,如果我們不斷重復(fù)第二和第三階段,即以一個(gè)獎(jiǎng)勵(lì)模型(RM)來(lái)判斷模型生成的文本是否優(yōu)質(zhì)(迎合人類偏好),這樣不斷生成、評(píng)估、優(yōu)化,如此循環(huán)進(jìn)行迭代,最終訓(xùn)練出更高質(zhì)量的ChatGPT模型。