簡介
- 2022年11月,OpenAI推出了一款A(yù)I聊天機器人程序,其強大的問答能力瞬間引爆全網(wǎng)關(guān)注度。
- 組成部分:GPT3.5 + 大型語言模型(LLM) + 強化學(xué)習(xí)微調(diào)訓(xùn)練
- 實現(xiàn)方法:目前沒有開源,也沒有對應(yīng)論文,僅在試運行推廣收集數(shù)據(jù)??磳崿F(xiàn)方式可參考其前身 InstructGPT(GPT+RLHF:模型參數(shù)量1.3B遠小于GPT-3的 175B),ChatGPT在其基礎(chǔ)上可以減少有害和誤導(dǎo)性的回答。
- 優(yōu)勢:相比較其他聊天機器人,ChatGPT可以記住之前和用戶對話的內(nèi)容,且輸入內(nèi)容由審核API過濾避免有冒犯性的言論(如種族注意或性別歧視)
- 局限:Reward圍繞人類監(jiān)督而設(shè)計,可能導(dǎo)致過度優(yōu)化,從而影響性能(古德哈特定律)。比如訓(xùn)練中審核者都偏向于更長的答案。
可參考的官方鏈接
- 官網(wǎng)(可試用,需國外手機注冊):https://openai.com/blog/chatgpt/
- OpenAI的RLHF博客:https://huggingface.co/blog/rlhf
- 由于ChatGPT沒有開源,我們只能通過InstructGPT來近似了解ChatGPT的實現(xiàn)
(1)InstructGPT blog:https://openai.com/blog/instruction-following/
(2)InstructGPT paper:https://arxiv.org/abs/2203.02155
(3)InstructGPT code:https://github.com/openai/following-instructions-human-feedback - 大型語言模型Large Language Model(LLM)一般使用倉庫:https://huggingface.co/
使用的數(shù)據(jù)集
- 開源數(shù)據(jù)集 TruthfulQA 和 RealToxicity
什么是GPT
- Generative Pre-trained Transformer (GPT) 是一個深度學(xué)習(xí)模型,用互聯(lián)網(wǎng)語料數(shù)據(jù)訓(xùn)練,可以用于問答、文本摘要生成、機器翻譯、分類、代碼生成和對話 AI。
-
歷史
(1)2018 年6月,GPT-1 誕生(參數(shù)量117M,約1.1億),這一年也是 NLP(自然語言處理)的預(yù)訓(xùn)練模型元年。性能方面,GPT-1 有著一定的泛化能力,能夠用于和監(jiān)督任務(wù)無關(guān)的 NLP 任務(wù)中。其常用任務(wù)包括:推理(判斷兩個句子是包含、矛盾、中立關(guān)系)、問答(輸入文章和幾個答案,選擇一個答案)、語義相似度識別(兩個句子語義是否相關(guān))、分類。GPT-1在未經(jīng)調(diào)試的新任務(wù)上具有一些效果,但泛化能力遠遠低于微調(diào)過的,所以只能算個工具不能算對話式AI
(2)2019年2月GPT-2如期而至,沒有對網(wǎng)絡(luò)做結(jié)構(gòu)創(chuàng)新,僅僅是加大網(wǎng)絡(luò)參數(shù)(參數(shù)量1.5B,15億),大力出奇跡,除了閱讀理解之外,在摘要、聊天、續(xù)寫、編故事、假新聞等都非常強。
(3)2020年5月,GPT-3出現(xiàn)了,作為一個無監(jiān)督模型(現(xiàn)在經(jīng)常被稱為自監(jiān)督),幾乎可以完成NLP絕大部分任務(wù),比如面向問題搜索、閱讀理解、語義推斷、機器翻譯、文章生成、自動問答,尤其在翻譯上能達到無法辨認機翻的程度。讓人看到了AGI的希望
(4)據(jù)說,GPT-4 會在明年發(fā)布,它能夠通過圖靈測試,并且能夠先進到和人類沒有區(qū)別,除此之外,企業(yè)引進 GPT-4 的成本也將大規(guī)模下降。
什么是ChatGPT
- 本質(zhì)是一個對話模型,它可以回答日常問題、進行多輪閑聊,也可以承認錯誤回復(fù)、挑戰(zhàn)不正確的問題,甚至?xí)芙^不適當(dāng)?shù)恼埱?。在上周公布博文和試用接口后,ChatGPT很快以令人驚嘆的對話能力“引爆”網(wǎng)絡(luò)。
- 主要特點:
(1)有強大的語言理解和生成系統(tǒng)
(2)降低人類學(xué)習(xí)成本和時間成本,可以幫助人類快速改寫查錯,生成小說摘要,定位代碼bug
(3)具有安全機制和去除偏見的能力:對于偷東西的行為表示責(zé)怪,對于模糊的提問圓滑的回答,對于未知的問題拒絕回答 - 主要缺點
(1)仍存在一些簡單的邏輯錯誤,比如把numbers這個字母數(shù)量算成8個。但比GPT3好很多,多輪對話下來還是能修正。
(2)有時候會給出看似合理,但是并不正確甚至荒謬的答案,如果用戶本身對答案未知,容易被誤導(dǎo)
(3)抵抗不安全prompt的能力比較差,還存在過分猜測用戶意圖的問題,而不是進一步的提問
(4)容易回答廢話較多,固定句式,主要是因為構(gòu)造訓(xùn)練數(shù)據(jù)時候,用戶傾向于選擇更長的回復(fù)。 - 和InstructGPT的區(qū)別:InstructGPT整體流程和ChatGPT流程基本相同,但是在數(shù)據(jù)收集、基座模型(GPT3 vs GPT 3.5)以及第三步初始化PPO模型時略有不同。
- ChatGPT是站在InstructGPT以及以上理論的肩膀上完成的一項出色的工作,它們將LLM(large language model)/PTM(pretrain language model)與RL(reinforcement learning)出色結(jié)合證明這條方向可行。當(dāng)然,這也是未來還將持續(xù)發(fā)展的NLP甚至通用智能體的方向。
- ChatGPT應(yīng)用:
(1)ChatGPT對于文字模態(tài)的AIGC應(yīng)用具有重要意義:包括但不限于內(nèi)容創(chuàng)作、客服機器人、虛擬人、機器翻譯、游戲、社交、教育、家庭陪護等領(lǐng)域。比如機器翻譯以助手問答的形式出現(xiàn),甚至只是翻譯個大概
(2)ChatGPT作為文字形態(tài)的基礎(chǔ)模型,自然可以與其他多模態(tài)結(jié)合:比如Stable Diffusion模型,利用ChatGPT生成較佳的Prompt,對于AIGC內(nèi)容和日趨火熱的藝術(shù)創(chuàng)作。
(3)ChatGPT可以作為搜索引擎的有效補充,從效果上來說為時尚早。有答案的query對結(jié)果排序就好,沒有答案的query也沒人能保證ChatGPT是不是對的。
(4)ChatGPT本身的升級:與WebGPT的結(jié)合對信息進行實時更新,并且對于事實真假進行判斷。現(xiàn)在的ChatGPT沒有實時更新和事實判斷能力,而這如果結(jié)合WebGPT的自動搜索能力,讓ChatGPT學(xué)會自己去海量知識庫中探索和學(xué)習(xí),預(yù)測可能會是GPT-4的一項能力。 - ChatGPT思考:
(1)基于LLM和RLHF,是非常有趣的方向,RL大概率在即將發(fā)布分GPT-4中扮演關(guān)鍵角色
(2)目前沒有任何信息能確定ChatGPT的規(guī)模大小,最早的GPT-3代號Davinci大小175B,InstructGPT的模型代號是Davinci-text-002/003屬于GPT3.5,GhatGPT可能是其中一個模型微調(diào)得到的,因此猜測應(yīng)該也是千億模型。
(3)ChatGPT不算突破式的創(chuàng)新,是近兩年業(yè)界發(fā)展的成果匯總,同一時期的工作還有Deepmind的Sparrow和Google的LaMDA,效果與ChatGPT應(yīng)該不相上下。
(4)每次聊天過程需要幾美分的成本(GPT3.5(Davinci)的成本推測:1k tokens≈700 words為0.02美元)
ChatGPT歷史
-
2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences工作就提出了RLHF(reinforcement learning from human feedback )的思想,核心思想是利用人類的反饋判斷最接近視頻行為目標(biāo)的片段;通過訓(xùn)練來找到最能解釋人類判斷的獎勵函數(shù),然后使用RL來學(xué)習(xí)如何實現(xiàn)這個目標(biāo)。
-
2019年GPT2問世后,OpenAI 就嘗試了GPT2+PPO:
(1)NeurIPS 2020的 Learning to Summarize with Human Feedback
(2)三步走的核心思想:收集反饋數(shù)據(jù) -> 訓(xùn)練獎勵模型 -> PPO強化學(xué)習(xí)。
(3)RLHF第一階段是針對多個候選摘要人工排序(這里就體現(xiàn)出OpenAI的鈔能力,按標(biāo)注時間計費,標(biāo)注過快的會被開除);第二階段是訓(xùn)練排序模型(依舊使用GPT模型);第三階段是利用PPO算法學(xué)習(xí)Policy(在摘要任務(wù)上微調(diào)過的GPT)。
(4)文中模型可以產(chǎn)生比10倍更大模型容量更好的摘要效果。但文中也同樣指出,模型的成功部分歸功于增大了獎勵模型的規(guī)模。但這需要很大量級的計算資源——訓(xùn)練6.7B的強化學(xué)習(xí)模型需要320 GPU-days的成本。
-
2020年初的OpenAI的Fine-Tuning GPT-2 from Human Preferences可看出,它同樣首先利用預(yù)訓(xùn)練模型來訓(xùn)練reward模型,進而使用PPO策略進行強化學(xué)習(xí)。整體步驟初見ChatGPT的雛形!
2021年底OpenAI的提出 WebGPT,核心思想是使用GPT3模型強大的生成能力,學(xué)習(xí)人類使用搜索引擎的一系列行為,通過訓(xùn)練獎勵模型來預(yù)測人類的偏好,使WebGPT可以自己搜索網(wǎng)頁來回答開放域的問題,而產(chǎn)生的答案盡可能滿足人類的喜好。
什么是RLHF
- Reinforcement Learning from Human Feedback
- RLHF是Hugging Face這家美國公司(最著名的是構(gòu)建了Transformer庫)在一篇發(fā)布的博客中提出的概念,旨在于講述ChatGPT背后的技術(shù)原理。
- 過去幾年里,基于prompt范式的AI生成模型取得了巨大成功,以語言模型LM為例,大多采用『自回歸生成』方式,通過循環(huán)解碼的方式基于上下文信息預(yù)測下一個詞,用交叉熵來計算每個詞的loss,但token-level的loss不能很好的刻畫整體輸出質(zhì)量,人們往往用BLEU或者ROUGH等評價指標(biāo)來刻畫模型輸出和人類偏好的相近程度。所以如果能直接用這些指標(biāo)作為reward,引入RL訓(xùn)練去微調(diào)LM,理論上比交叉熵的監(jiān)督學(xué)習(xí)訓(xùn)練方式更好。
- RLHF訓(xùn)練過程分為3個核心步驟:
(1)預(yù)訓(xùn)練語言模型(LM):這些語言模型往往見過大量的 [Prompt,Text] 對,輸入一個prompt(提示),模型往往能輸出還不錯的一段文本。可以在人工精心撰寫的語料上進行微調(diào),但不是必要的,因為成本非常貴
(2)收集數(shù)據(jù)并訓(xùn)練獎勵模型:一個獎勵模型(RM)的目標(biāo)是刻畫模型的輸出是否在人類看來表現(xiàn)不錯。即,輸入 [提示(prompt),模型生成的文本] ,輸出一個刻畫文本質(zhì)量的標(biāo)量數(shù)字。OpenAI的Prompt數(shù)據(jù)主要來自那些調(diào)用GPT API的用戶。獎勵模型可以基于預(yù)訓(xùn)練語言模型熱啟,在 [x=[prompt,模型回答], y=人類滿意度] 構(gòu)成的標(biāo)注語料上去微調(diào),也可以直接隨機初始化在語料上訓(xùn)。標(biāo)注人員的任務(wù)則是對初始語言模型生成的文本進行排序『pair-wise』,而不是直接打分,因為不同標(biāo)注人員評價標(biāo)準不一。有趣的是,獎勵模型的大小最好是跟生成模型的大小相近,這樣效果會比較好。
(3)通過強化學(xué)習(xí)微調(diào) LM:策略就是基于該語言模型,接收prompt作為輸入,然后輸出一系列文本(或文本的概率分布);而動作空間就是詞表所有token在所有輸出位置的排列組合(單個位置通常有50k左右的token候選);觀察空間則是可能的輸入token序列(即prompt),顯然也相當(dāng)大,為詞表所有token在所有輸入位置的排列組合;獎勵函數(shù)(reward)基于RM模型,再疊加一個約束項。約束項基于前面提到的預(yù)先富集的數(shù)據(jù),從里面采樣prompt輸入,同時丟給初始的語言模型和我們當(dāng)前訓(xùn)練中的語言模型(policy),得到倆模型的輸出文本y1,y2。然后用獎勵模型RM對y1、y2打分,判斷誰更優(yōu)秀。顯然,打分的差值便可以作為訓(xùn)練策略模型參數(shù)的信號,這個約束項信號一般通過KL散度來計算“獎勵/懲罰”的大小,loss=r(θ) - λ·r(KL),目的是為了不要讓模型通過『取巧』的方式小修小改騙RM的高額RL獎勵。 - OpenAI的第一個RLHF模型是InstructGPT,用小規(guī)模參數(shù)版本的GPT3
- DeepMind的第一個RLHF模型則使用了2800億個參數(shù)的Gopher模型
- RLHF的局限性:仍然可能輸出有害或者事實上不準確的文本。人類標(biāo)注成本非常高昂,RLHF最多達到標(biāo)注人員的知識水平。PPO算法已經(jīng)比較老了,但目前沒有其他更好RL算法來優(yōu)化RLHF了。
RLHF整體框架(參考InstructGPT)
根據(jù)OpenAI的思路,RLHF里分3步:

-
1、花錢招人給問題(prompt)寫回答(demonstration),然后finetune一個GPT3。這一步大家都懂,就不用說了。這一步可以多訓(xùn)幾個版本,第二步會用到。
-
2、用多個模型(可以是初始模型、finetune模型和人工等等)給出問題的多個回答,然后人工給這些問答對按一些標(biāo)準(可讀性、無害、正確性blabla)進行排序,訓(xùn)練一個獎勵模型/偏好模型來打分(reward model)
(1)不直接打分是因為主觀需要歸一化,從排序變成獎勵分數(shù)用到了Elo排名系統(tǒng)打分
(2)RM模型一般直接用LM+回歸,可以從零訓(xùn)練也可以用老LM做finetune,RM模型和LM模型需要大小差不多,因為它倆的輸入都是所有文本,需要差不多的理解能力
(3)除了用Elo打分,也可以對偏序樣本直接用pairwise Learning to Rank來打分。 - 3、用強化學(xué)習(xí)訓(xùn)練上面那個finetune后的GPT3模型。用強化學(xué)習(xí)做LM訓(xùn)練的一種思路是用Policy Gradient做,這一塊OpenAI用的是他們在17年提出的PPO算法,即Proximal Policy Optimization。
(1)policy是給GPT輸入文本后輸出結(jié)果的過程;
(2)action space是全詞表(~50k);
(3)observation space是輸入文本序列的空間(全詞表大小 x 序列長度);
(4)reward function則是一個基于RM輸出的一個函數(shù)。具體而言,把問題分別輸入第一步finetune的模型和正在訓(xùn)練的模型得到輸出,把
輸入RM得到評分
,然后這里我們期望
別差太多,所以加一個KL散度的懲罰項
,即
:
-
GPT3只是個語言模型,它被用來預(yù)測下一個單詞,絲毫沒有考慮用戶想要的答案;當(dāng)使用代表用戶喜好的三類人工標(biāo)注為微調(diào)數(shù)據(jù)后,1.3B參數(shù)的InstructGPT在多場景下的效果超越175B的GPT3:
- InstuctGPT的工作也很有開創(chuàng)性:它在“解鎖”(unlock)和挖掘GPT3學(xué)到的海量數(shù)據(jù)中的知識和能力,但這些僅通過快速的In-context的方式較難獲得。InstuctGPT找到了一種面向主觀任務(wù)來挖掘GPT3強大語言能力的方式。
- OpenAI博文中有這樣一段原話:當(dāng)我們要解決的安全和對齊問題是復(fù)雜和主觀,它的好壞無法完全被自動指標(biāo)衡量的時候,此時需要用人類的偏好來作為獎勵信號來微調(diào)我們的模型。
什么是 PPO
PPO(Proximal Policy Optimization) 一種新型的Policy Gradient算法(Policy Gradient是一種強化學(xué)習(xí)算法,通過優(yōu)化智能體的行為策略來解決在環(huán)境中實現(xiàn)目標(biāo)的問題)。我們只需了解普通的Policy Gradient算法對步長十分敏感,但是又難以選擇合適的步長。在訓(xùn)練過程中新舊策略的的變化差異如果過大則不利于學(xué)習(xí)。
而PPO提出了新的目標(biāo)函數(shù)可以在多個訓(xùn)練步驟實現(xiàn)小批量的更新,解決了Policy Gradient算法中步長難以確定的問題。由于其實現(xiàn)簡單、性能穩(wěn)定、能同時處理離散/連續(xù)動作空間問題、利于大規(guī)模訓(xùn)練等優(yōu)勢,近年來受到廣泛關(guān)注,成為OpenAI默認強化學(xué)習(xí)算法。
幾個做RLHF的項目
- (1)https://github.com/openai/lm-human-preferences
- (2)https://github.com/lucidrains/PaLM-rlhf-pytorch 在機器之心宣傳
- (3)https://github.com/allenai/RL4LMs
- (4)https://github.com/CarperAI/trlx
- (5)https://github.com/lvwerra/trl
幾篇RLHF最熱門的必讀論文
- (0)迭代式的更新獎勵模型(RM)和策略模型(policy),讓獎勵模型對模型輸出質(zhì)量的刻畫愈加精確,策略模型的輸出則愈能與初始模型拉開差距,使得輸出文本變得越來越符合人的認知。Anthropic就曾經(jīng)在論文里討論了這種做法,并命名為 "Iterated Online RLHF (2022.04.12)"
- (1)Deep Reinforcement Learning from Human Preferences (Christiano et al. NeurIPS 2017) :RLHF用于Atari,使用一些規(guī)則標(biāo)注的不同軌跡之間的pair-wise方式來微調(diào)策略。
- (2)Fine-Tuning Language Models from Human Preferences(Zieglar et al. arXiv 2019) (配一篇 OpenAI Blog):一篇早期的文章,研究reward Learning在4個具體任務(wù)(continuing text with positive sentiment or physically descriptive language, and summarization tasks on the TL;DR and CNN/Daily Mail datasets.)上的影響,通過5,000 次人類的比較評估就取得了非常好的reasonable ROUGE scores
- (3)Learning to summarize with human feedback (Stiennon et al., NeurIPS 2020) RLHF方法應(yīng)用于 summarize 任務(wù),用ROUGE指標(biāo)來微調(diào)策略提升summarize質(zhì)量,使用的是GPT-2和PPO。另外一篇文章 Recursively Summarizing Books with Human Feedback(OpenAI Alignment Team, arXiv preprint 2021) 做了這篇文章的后續(xù)工作,在GPT3上微調(diào),生成章節(jié)摘要再生成整本書摘要,研究表明人類只需要標(biāo)注5%的摘要數(shù)據(jù),就可以在 NarrativeQA 基準上取得先進性效果。
- (4)WebGPT: Browser-assisted question-answering with human feedback (OpenAI, arXiv 2021) 允許GPT3模型根據(jù)搜索引擎實時拿到的結(jié)果來預(yù)測,并在ELI5(Reddit 用戶提出的問題的數(shù)據(jù)集)上訓(xùn)練,根據(jù)人類標(biāo)注偏好的數(shù)據(jù),用behavior cloning的方式微調(diào)模型,結(jié)果65%的情況下都取得很好的效果。
- (5)InstructGPT: Training language models to follow instructions with human feedback (OpenAI Alignment Team 2022) 講述RLHF應(yīng)用在通用語言生成模型上。1.3B 參數(shù) InstructGPT 模型的輸出優(yōu)于 175B GPT-3 的輸出,因為通過了人類反饋標(biāo)記數(shù)據(jù),用RL來微調(diào)GPT,雖然仍然會犯一些低級錯誤,但是不真實性和有毒性都明顯降低了很多。OpenAI的博客 Aligning Language Models to Follow Instructions 2022.07.27
- (6)GopherCite: Teaching language models to support answers with verified quotes (Menick et al. 2022(配一篇Google的技術(shù)博客 ):把RLHF應(yīng)用于訓(xùn)練“開卷式”QA 模型, 2800 億參數(shù)模型 GopherCite 能夠生成具有高質(zhì)量支持證據(jù)的答案,并在不確定時放棄回答。對 NaturalQuestions 和 ELI5 數(shù)據(jù)集的一個子集中的問題答案進行人工評估來衡量 GopherCite 的性能,對抗性 TruthfulQA 數(shù)據(jù)集的分析安全和可信度
- (7)Sparrow: Improving alignment of dialogue agents via targeted human judgements (Glaese et al. arXiv 2022) 用RLHF微調(diào)對話Agent,an information-seeking dialogue agent。從 70B 語言模型 Dialogue Prompted Chinchilla (DPC) 開始,再訓(xùn)練兩個同樣大小的RM模型來近似人類判斷:偏好獎勵模型 (Preference RM)預(yù)測分數(shù) 和 規(guī)則違反獎勵模型 (Rule RM) 預(yù)估違反規(guī)則的概率,用A2C訓(xùn)練。
- (8)ChatGPT: Optimizing Language Models for Dialogue (OpenAI 2022) 使用RLHF來訓(xùn)練一個LM(language Model)并合理的應(yīng)用于所有的對話場景
- (9)Scaling Laws for Reward Model Overoptimization (Gao et al. arXiv 2022) 研究了縮放獎勵偏好在RLHF中的影響,避免古德哈特定律(Goodhart's law)的影響
- (10)Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback (Anthropic, 2022) 一個詳細的文檔研究了如何用RLHF訓(xùn)練LM,偏好模型RM和RL一周訓(xùn)練一次,并確定了 RL 獎勵與策略及其初始化之間 KL 散度的平方根之間的大致線性關(guān)系
- (11)Red Teaming Language Models to Reduce Harms: Methods, Scaling Behaviors, and Lessons Learned (Ganguli et al. 2022) :詳細的研究了如何在訓(xùn)練LM中『發(fā)現(xiàn)、測量、減少有害行為』,論文研究了3 種模型大小(2.7B、13B 和 52B 參數(shù))和 4 種模型類型:普通語言模型(LM);LM 提示樂于助人、誠實且無害;具有拒絕抽樣的 LM;以及使用人類反饋強化學(xué)習(xí) (RLHF) 訓(xùn)練有幫助和無害的模型。
- (12)Dynamic Planning in Open-Ended Dialogue using Reinforcement Learning (Cohen at al. 2022) 使用RL去提升一個實時開放式的對話系統(tǒng)的對話技能。
- (13)RL4LM的論文:Is Reinforcement Learning (Not) for Natural Language Processing?: Benchmarks, Baselines, and Building Blocks for Natural Language Policy Optimization (Ramamurthy and Ammanabrolu et al. 2022) 討論RLHF開源工具的設(shè)計空間,提出一個新的算法NLPO來代替PPO
參考
抱抱臉:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷論文 https://zhuanlan.zhihu.com/p/592671478
從零實現(xiàn)ChatGPT——RLHF技術(shù)筆記 https://zhuanlan.zhihu.com/p/591474085
算法工程師深度解構(gòu)ChatGPT技術(shù) https://juejin.cn/post/7176077467092779068







