ChatGPT筆記

簡(jiǎn)介

  • 2022年11月,OpenAI推出了一款A(yù)I聊天機(jī)器人程序,其強(qiáng)大的問(wèn)答能力瞬間引爆全網(wǎng)關(guān)注度。
  • 組成部分:GPT3.5 + 大型語(yǔ)言模型(LLM) + 強(qiáng)化學(xué)習(xí)微調(diào)訓(xùn)練
  • 實(shí)現(xiàn)方法:目前沒(méi)有開源,也沒(méi)有對(duì)應(yīng)論文,僅在試運(yùn)行推廣收集數(shù)據(jù)。看實(shí)現(xiàn)方式可參考其前身 InstructGPT(GPT+RLHF:模型參數(shù)量1.3B遠(yuǎn)小于GPT-3的 175B),ChatGPT在其基礎(chǔ)上可以減少有害和誤導(dǎo)性的回答。
  • 優(yōu)勢(shì):相比較其他聊天機(jī)器人,ChatGPT可以記住之前和用戶對(duì)話的內(nèi)容,且輸入內(nèi)容由審核API過(guò)濾避免有冒犯性的言論(如種族注意或性別歧視)
  • 局限:Reward圍繞人類監(jiān)督而設(shè)計(jì),可能導(dǎo)致過(guò)度優(yōu)化,從而影響性能(古德哈特定律)。比如訓(xùn)練中審核者都偏向于更長(zhǎng)的答案。

可參考的官方鏈接

使用的數(shù)據(jù)集

  • 開源數(shù)據(jù)集 TruthfulQA 和 RealToxicity

什么是GPT

  • Generative Pre-trained Transformer (GPT) 是一個(gè)深度學(xué)習(xí)模型,用互聯(lián)網(wǎng)語(yǔ)料數(shù)據(jù)訓(xùn)練,可以用于問(wèn)答、文本摘要生成、機(jī)器翻譯、分類、代碼生成和對(duì)話 AI。
  • 歷史
    (1)2018 年6月,GPT-1 誕生(參數(shù)量117M,約1.1億),這一年也是 NLP(自然語(yǔ)言處理)的預(yù)訓(xùn)練模型元年。性能方面,GPT-1 有著一定的泛化能力,能夠用于和監(jiān)督任務(wù)無(wú)關(guān)的 NLP 任務(wù)中。其常用任務(wù)包括:推理(判斷兩個(gè)句子是包含、矛盾、中立關(guān)系)、問(wèn)答(輸入文章和幾個(gè)答案,選擇一個(gè)答案)、語(yǔ)義相似度識(shí)別(兩個(gè)句子語(yǔ)義是否相關(guān))、分類。GPT-1在未經(jīng)調(diào)試的新任務(wù)上具有一些效果,但泛化能力遠(yuǎn)遠(yuǎn)低于微調(diào)過(guò)的,所以只能算個(gè)工具不能算對(duì)話式AI
    (2)2019年2月GPT-2如期而至,沒(méi)有對(duì)網(wǎng)絡(luò)做結(jié)構(gòu)創(chuàng)新,僅僅是加大網(wǎng)絡(luò)參數(shù)(參數(shù)量1.5B,15億),大力出奇跡,除了閱讀理解之外,在摘要、聊天、續(xù)寫、編故事、假新聞等都非常強(qiáng)。
    (3)2020年5月,GPT-3出現(xiàn)了,作為一個(gè)無(wú)監(jiān)督模型(現(xiàn)在經(jīng)常被稱為自監(jiān)督),幾乎可以完成NLP絕大部分任務(wù),比如面向問(wèn)題搜索、閱讀理解、語(yǔ)義推斷、機(jī)器翻譯、文章生成、自動(dòng)問(wèn)答,尤其在翻譯上能達(dá)到無(wú)法辨認(rèn)機(jī)翻的程度。讓人看到了AGI的希望
    (4)據(jù)說(shuō),GPT-4 會(huì)在明年發(fā)布,它能夠通過(guò)圖靈測(cè)試,并且能夠先進(jìn)到和人類沒(méi)有區(qū)別,除此之外,企業(yè)引進(jìn) GPT-4 的成本也將大規(guī)模下降。


什么是ChatGPT

  • 本質(zhì)是一個(gè)對(duì)話模型,它可以回答日常問(wèn)題、進(jìn)行多輪閑聊,也可以承認(rèn)錯(cuò)誤回復(fù)、挑戰(zhàn)不正確的問(wèn)題,甚至?xí)芙^不適當(dāng)?shù)恼?qǐng)求。在上周公布博文和試用接口后,ChatGPT很快以令人驚嘆的對(duì)話能力“引爆”網(wǎng)絡(luò)。
  • 主要特點(diǎn):
    (1)有強(qiáng)大的語(yǔ)言理解和生成系統(tǒng)
    (2)降低人類學(xué)習(xí)成本和時(shí)間成本,可以幫助人類快速改寫查錯(cuò),生成小說(shuō)摘要,定位代碼bug
    (3)具有安全機(jī)制和去除偏見(jiàn)的能力:對(duì)于偷東西的行為表示責(zé)怪,對(duì)于模糊的提問(wèn)圓滑的回答,對(duì)于未知的問(wèn)題拒絕回答
  • 主要缺點(diǎn)
    (1)仍存在一些簡(jiǎn)單的邏輯錯(cuò)誤,比如把numbers這個(gè)字母數(shù)量算成8個(gè)。但比GPT3好很多,多輪對(duì)話下來(lái)還是能修正。
    (2)有時(shí)候會(huì)給出看似合理,但是并不正確甚至荒謬的答案,如果用戶本身對(duì)答案未知,容易被誤導(dǎo)
    (3)抵抗不安全prompt的能力比較差,還存在過(guò)分猜測(cè)用戶意圖的問(wèn)題,而不是進(jìn)一步的提問(wèn)
    (4)容易回答廢話較多,固定句式,主要是因?yàn)闃?gòu)造訓(xùn)練數(shù)據(jù)時(shí)候,用戶傾向于選擇更長(zhǎng)的回復(fù)。
  • 和InstructGPT的區(qū)別:InstructGPT整體流程和ChatGPT流程基本相同,但是在數(shù)據(jù)收集、基座模型(GPT3 vs GPT 3.5)以及第三步初始化PPO模型時(shí)略有不同。
  • ChatGPT是站在InstructGPT以及以上理論的肩膀上完成的一項(xiàng)出色的工作,它們將LLM(large language model)/PTM(pretrain language model)與RL(reinforcement learning)出色結(jié)合證明這條方向可行。當(dāng)然,這也是未來(lái)還將持續(xù)發(fā)展的NLP甚至通用智能體的方向。
  • ChatGPT應(yīng)用:
    (1)ChatGPT對(duì)于文字模態(tài)的AIGC應(yīng)用具有重要意義:包括但不限于內(nèi)容創(chuàng)作、客服機(jī)器人、虛擬人、機(jī)器翻譯、游戲、社交、教育、家庭陪護(hù)等領(lǐng)域。比如機(jī)器翻譯以助手問(wèn)答的形式出現(xiàn),甚至只是翻譯個(gè)大概
    (2)ChatGPT作為文字形態(tài)的基礎(chǔ)模型,自然可以與其他多模態(tài)結(jié)合:比如Stable Diffusion模型,利用ChatGPT生成較佳的Prompt,對(duì)于AIGC內(nèi)容和日趨火熱的藝術(shù)創(chuàng)作。
    (3)ChatGPT可以作為搜索引擎的有效補(bǔ)充,從效果上來(lái)說(shuō)為時(shí)尚早。有答案的query對(duì)結(jié)果排序就好,沒(méi)有答案的query也沒(méi)人能保證ChatGPT是不是對(duì)的。
    (4)ChatGPT本身的升級(jí):與WebGPT的結(jié)合對(duì)信息進(jìn)行實(shí)時(shí)更新,并且對(duì)于事實(shí)真假進(jìn)行判斷?,F(xiàn)在的ChatGPT沒(méi)有實(shí)時(shí)更新和事實(shí)判斷能力,而這如果結(jié)合WebGPT的自動(dòng)搜索能力,讓ChatGPT學(xué)會(huì)自己去海量知識(shí)庫(kù)中探索和學(xué)習(xí),預(yù)測(cè)可能會(huì)是GPT-4的一項(xiàng)能力。
  • ChatGPT思考:
    (1)基于LLM和RLHF,是非常有趣的方向,RL大概率在即將發(fā)布分GPT-4中扮演關(guān)鍵角色
    (2)目前沒(méi)有任何信息能確定ChatGPT的規(guī)模大小,最早的GPT-3代號(hào)Davinci大小175B,InstructGPT的模型代號(hào)是Davinci-text-002/003屬于GPT3.5,GhatGPT可能是其中一個(gè)模型微調(diào)得到的,因此猜測(cè)應(yīng)該也是千億模型。
    (3)ChatGPT不算突破式的創(chuàng)新,是近兩年業(yè)界發(fā)展的成果匯總,同一時(shí)期的工作還有Deepmind的Sparrow和Google的LaMDA,效果與ChatGPT應(yīng)該不相上下。
    (4)每次聊天過(guò)程需要幾美分的成本(GPT3.5(Davinci)的成本推測(cè):1k tokens≈700 words為0.02美元)

ChatGPT歷史

  • 2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences工作就提出了RLHF(reinforcement learning from human feedback )的思想,核心思想是利用人類的反饋判斷最接近視頻行為目標(biāo)的片段;通過(guò)訓(xùn)練來(lái)找到最能解釋人類判斷的獎(jiǎng)勵(lì)函數(shù),然后使用RL來(lái)學(xué)習(xí)如何實(shí)現(xiàn)這個(gè)目標(biāo)。

  • 2019年GPT2問(wèn)世后,OpenAI 就嘗試了GPT2+PPO:
    (1)NeurIPS 2020的 Learning to Summarize with Human Feedback
    (2)三步走的核心思想:收集反饋數(shù)據(jù) -> 訓(xùn)練獎(jiǎng)勵(lì)模型 -> PPO強(qiáng)化學(xué)習(xí)。
    (3)RLHF第一階段是針對(duì)多個(gè)候選摘要人工排序(這里就體現(xiàn)出OpenAI的鈔能力,按標(biāo)注時(shí)間計(jì)費(fèi),標(biāo)注過(guò)快的會(huì)被開除);第二階段是訓(xùn)練排序模型(依舊使用GPT模型);第三階段是利用PPO算法學(xué)習(xí)Policy(在摘要任務(wù)上微調(diào)過(guò)的GPT)。
    (4)文中模型可以產(chǎn)生比10倍更大模型容量更好的摘要效果。但文中也同樣指出,模型的成功部分歸功于增大了獎(jiǎng)勵(lì)模型的規(guī)模。但這需要很大量級(jí)的計(jì)算資源——訓(xùn)練6.7B的強(qiáng)化學(xué)習(xí)模型需要320 GPU-days的成本。

  • 2020年初的OpenAI的Fine-Tuning GPT-2 from Human Preferences可看出,它同樣首先利用預(yù)訓(xùn)練模型來(lái)訓(xùn)練reward模型,進(jìn)而使用PPO策略進(jìn)行強(qiáng)化學(xué)習(xí)。整體步驟初見(jiàn)ChatGPT的雛形!

  • 2021年底OpenAI的提出 WebGPT,核心思想是使用GPT3模型強(qiáng)大的生成能力,學(xué)習(xí)人類使用搜索引擎的一系列行為,通過(guò)訓(xùn)練獎(jiǎng)勵(lì)模型來(lái)預(yù)測(cè)人類的偏好,使WebGPT可以自己搜索網(wǎng)頁(yè)來(lái)回答開放域的問(wèn)題,而產(chǎn)生的答案盡可能滿足人類的喜好。

什么是RLHF

  • Reinforcement Learning from Human Feedback
  • RLHF是Hugging Face這家美國(guó)公司(最著名的是構(gòu)建了Transformer庫(kù))在一篇發(fā)布的博客中提出的概念,旨在于講述ChatGPT背后的技術(shù)原理。
  • 過(guò)去幾年里,基于prompt范式的AI生成模型取得了巨大成功,以語(yǔ)言模型LM為例,大多采用『自回歸生成』方式,通過(guò)循環(huán)解碼的方式基于上下文信息預(yù)測(cè)下一個(gè)詞,用交叉熵來(lái)計(jì)算每個(gè)詞的loss,但token-level的loss不能很好的刻畫整體輸出質(zhì)量,人們往往用BLEU或者ROUGH等評(píng)價(jià)指標(biāo)來(lái)刻畫模型輸出和人類偏好的相近程度。所以如果能直接用這些指標(biāo)作為reward,引入RL訓(xùn)練去微調(diào)LM,理論上比交叉熵的監(jiān)督學(xué)習(xí)訓(xùn)練方式更好。
  • RLHF訓(xùn)練過(guò)程分為3個(gè)核心步驟:
    (1)預(yù)訓(xùn)練語(yǔ)言模型(LM):這些語(yǔ)言模型往往見(jiàn)過(guò)大量的 [Prompt,Text] 對(duì),輸入一個(gè)prompt(提示),模型往往能輸出還不錯(cuò)的一段文本??梢栽谌斯ぞ淖珜懙恼Z(yǔ)料上進(jìn)行微調(diào),但不是必要的,因?yàn)槌杀痉浅YF
    (2)收集數(shù)據(jù)并訓(xùn)練獎(jiǎng)勵(lì)模型:一個(gè)獎(jiǎng)勵(lì)模型(RM)的目標(biāo)是刻畫模型的輸出是否在人類看來(lái)表現(xiàn)不錯(cuò)。即,輸入 [提示(prompt),模型生成的文本] ,輸出一個(gè)刻畫文本質(zhì)量的標(biāo)量數(shù)字。OpenAI的Prompt數(shù)據(jù)主要來(lái)自那些調(diào)用GPT API的用戶。獎(jiǎng)勵(lì)模型可以基于預(yù)訓(xùn)練語(yǔ)言模型熱啟,在 [x=[prompt,模型回答], y=人類滿意度] 構(gòu)成的標(biāo)注語(yǔ)料上去微調(diào),也可以直接隨機(jī)初始化在語(yǔ)料上訓(xùn)。標(biāo)注人員的任務(wù)則是對(duì)初始語(yǔ)言模型生成的文本進(jìn)行排序『pair-wise』,而不是直接打分,因?yàn)椴煌瑯?biāo)注人員評(píng)價(jià)標(biāo)準(zhǔn)不一。有趣的是,獎(jiǎng)勵(lì)模型的大小最好是跟生成模型的大小相近,這樣效果會(huì)比較好。
    (3)通過(guò)強(qiáng)化學(xué)習(xí)微調(diào) LM:策略就是基于該語(yǔ)言模型,接收prompt作為輸入,然后輸出一系列文本(或文本的概率分布);而動(dòng)作空間就是詞表所有token在所有輸出位置的排列組合(單個(gè)位置通常有50k左右的token候選);觀察空間則是可能的輸入token序列(即prompt),顯然也相當(dāng)大,為詞表所有token在所有輸入位置的排列組合;獎(jiǎng)勵(lì)函數(shù)(reward)基于RM模型,再疊加一個(gè)約束項(xiàng)。約束項(xiàng)基于前面提到的預(yù)先富集的數(shù)據(jù),從里面采樣prompt輸入,同時(shí)丟給初始的語(yǔ)言模型和我們當(dāng)前訓(xùn)練中的語(yǔ)言模型(policy),得到倆模型的輸出文本y1,y2。然后用獎(jiǎng)勵(lì)模型RM對(duì)y1、y2打分,判斷誰(shuí)更優(yōu)秀。顯然,打分的差值便可以作為訓(xùn)練策略模型參數(shù)的信號(hào),這個(gè)約束項(xiàng)信號(hào)一般通過(guò)KL散度來(lái)計(jì)算“獎(jiǎng)勵(lì)/懲罰”的大小,loss=r(θ) - λ·r(KL),目的是為了不要讓模型通過(guò)『取巧』的方式小修小改騙RM的高額RL獎(jiǎng)勵(lì)。
  • OpenAI的第一個(gè)RLHF模型是InstructGPT,用小規(guī)模參數(shù)版本的GPT3
  • DeepMind的第一個(gè)RLHF模型則使用了2800億個(gè)參數(shù)的Gopher模型
  • RLHF的局限性:仍然可能輸出有害或者事實(shí)上不準(zhǔn)確的文本。人類標(biāo)注成本非常高昂,RLHF最多達(dá)到標(biāo)注人員的知識(shí)水平。PPO算法已經(jīng)比較老了,但目前沒(méi)有其他更好RL算法來(lái)優(yōu)化RLHF了。

RLHF整體框架(參考InstructGPT)

根據(jù)OpenAI的思路,RLHF里分3步:


InstructGPT
  • 1、花錢招人給問(wèn)題(prompt)寫回答(demonstration),然后finetune一個(gè)GPT3。這一步大家都懂,就不用說(shuō)了。這一步可以多訓(xùn)幾個(gè)版本,第二步會(huì)用到。
  • 2、用多個(gè)模型(可以是初始模型、finetune模型和人工等等)給出問(wèn)題的多個(gè)回答,然后人工給這些問(wèn)答對(duì)按一些標(biāo)準(zhǔn)(可讀性、無(wú)害、正確性blabla)進(jìn)行排序,訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型/偏好模型來(lái)打分(reward model)

    (1)不直接打分是因?yàn)橹饔^需要?dú)w一化,從排序變成獎(jiǎng)勵(lì)分?jǐn)?shù)用到了Elo排名系統(tǒng)打分
    (2)RM模型一般直接用LM+回歸,可以從零訓(xùn)練也可以用老LM做finetune,RM模型和LM模型需要大小差不多,因?yàn)樗鼈z的輸入都是所有文本,需要差不多的理解能力
    (3)除了用Elo打分,也可以對(duì)偏序樣本直接用pairwise Learning to Rank來(lái)打分。

  • 3、用強(qiáng)化學(xué)習(xí)訓(xùn)練上面那個(gè)finetune后的GPT3模型。用強(qiáng)化學(xué)習(xí)做LM訓(xùn)練的一種思路是用Policy Gradient做,這一塊OpenAI用的是他們?cè)?7年提出的PPO算法,即Proximal Policy Optimization。

    (1)policy是給GPT輸入文本后輸出結(jié)果的過(guò)程;
    (2)action space是全詞表(~50k);
    (3)observation space是輸入文本序列的空間(全詞表大小 x 序列長(zhǎng)度);
    (4)reward function則是一個(gè)基于RM輸出的一個(gè)函數(shù)。具體而言,把問(wèn)題分別輸入第一步finetune的模型和正在訓(xùn)練的模型得到輸出y_1,y_2,把y_2輸入RM得到評(píng)分r_\theta,然后這里我們期望y_1, y_2別差太多,所以加一個(gè)KL散度的懲罰項(xiàng)r_{KL},即r = r_\theta - \lambda r_{KL}
  • GPT3只是個(gè)語(yǔ)言模型,它被用來(lái)預(yù)測(cè)下一個(gè)單詞,絲毫沒(méi)有考慮用戶想要的答案;當(dāng)使用代表用戶喜好的三類人工標(biāo)注為微調(diào)數(shù)據(jù)后,1.3B參數(shù)的InstructGPT在多場(chǎng)景下的效果超越175B的GPT3:
  • InstuctGPT的工作也很有開創(chuàng)性:它在“解鎖”(unlock)和挖掘GPT3學(xué)到的海量數(shù)據(jù)中的知識(shí)和能力,但這些僅通過(guò)快速的In-context的方式較難獲得。InstuctGPT找到了一種面向主觀任務(wù)來(lái)挖掘GPT3強(qiáng)大語(yǔ)言能力的方式。
  • OpenAI博文中有這樣一段原話:當(dāng)我們要解決的安全和對(duì)齊問(wèn)題是復(fù)雜和主觀,它的好壞無(wú)法完全被自動(dòng)指標(biāo)衡量的時(shí)候,此時(shí)需要用人類的偏好來(lái)作為獎(jiǎng)勵(lì)信號(hào)來(lái)微調(diào)我們的模型。

什么是 PPO

PPO(Proximal Policy Optimization) 一種新型的Policy Gradient算法(Policy Gradient是一種強(qiáng)化學(xué)習(xí)算法,通過(guò)優(yōu)化智能體的行為策略來(lái)解決在環(huán)境中實(shí)現(xiàn)目標(biāo)的問(wèn)題)。我們只需了解普通的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í)現(xiàn)簡(jiǎn)單、性能穩(wěn)定、能同時(shí)處理離散/連續(xù)動(dòng)作空間問(wèn)題、利于大規(guī)模訓(xùn)練等優(yōu)勢(shì),近年來(lái)受到廣泛關(guān)注,成為OpenAI默認(rèn)強(qiáng)化學(xué)習(xí)算法。

幾個(gè)做RLHF的項(xiàng)目

幾篇RLHF最熱門的必讀論文

參考

抱抱臉:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷論文 https://zhuanlan.zhihu.com/p/592671478
從零實(shí)現(xiàn)ChatGPT——RLHF技術(shù)筆記 https://zhuanlan.zhihu.com/p/591474085
算法工程師深度解構(gòu)ChatGPT技術(shù) https://juejin.cn/post/7176077467092779068

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容