簡介
- 2022年11月,OpenAI推出了一款AI聊天機器人程序,其強大的問答能力瞬間引爆全網關注度。
- 組成部分:GPT3.5 + 大型語言模型(LLM) + 強化學習微調訓練
- 實現方法:目前沒有開源,也沒有對應論文,僅在試運行推廣收集數據。看實現方式可參考其前身 InstructGPT(GPT+RLHF:模型參數量1.3B遠小于GPT-3的 175B),ChatGPT在其基礎上可以減少有害和誤導性的回答。
- 優勢:相比較其他聊天機器人,ChatGPT可以記住之前和用戶對話的內容,且輸入內容由審核API過濾避免有冒犯性的言論(如種族注意或性別歧視)
- 局限:Reward圍繞人類監督而設計,可能導致過度優化,從而影響性能(古德哈特定律)。比如訓練中審核者都偏向于更長的答案。
可參考的官方鏈接
- 官網(可試用,需國外手機注冊):https://openai.com/blog/chatgpt/
- OpenAI的RLHF博客:https://huggingface.co/blog/rlhf
- 由于ChatGPT沒有開源,我們只能通過InstructGPT來近似了解ChatGPT的實現
(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/
使用的數據集
- 開源數據集 TruthfulQA 和 RealToxicity
什么是GPT
- Generative Pre-trained Transformer (GPT) 是一個深度學習模型,用互聯網語料數據訓練,可以用于問答、文本摘要生成、機器翻譯、分類、代碼生成和對話 AI。
-
歷史
(1)2018 年6月,GPT-1 誕生(參數量117M,約1.1億),這一年也是 NLP(自然語言處理)的預訓練模型元年。性能方面,GPT-1 有著一定的泛化能力,能夠用于和監督任務無關的 NLP 任務中。其常用任務包括:推理(判斷兩個句子是包含、矛盾、中立關系)、問答(輸入文章和幾個答案,選擇一個答案)、語義相似度識別(兩個句子語義是否相關)、分類。GPT-1在未經調試的新任務上具有一些效果,但泛化能力遠遠低于微調過的,所以只能算個工具不能算對話式AI
(2)2019年2月GPT-2如期而至,沒有對網絡做結構創新,僅僅是加大網絡參數(參數量1.5B,15億),大力出奇跡,除了閱讀理解之外,在摘要、聊天、續寫、編故事、假新聞等都非常強。
(3)2020年5月,GPT-3出現了,作為一個無監督模型(現在經常被稱為自監督),幾乎可以完成NLP絕大部分任務,比如面向問題搜索、閱讀理解、語義推斷、機器翻譯、文章生成、自動問答,尤其在翻譯上能達到無法辨認機翻的程度。讓人看到了AGI的希望
(4)據說,GPT-4 會在明年發布,它能夠通過圖靈測試,并且能夠先進到和人類沒有區別,除此之外,企業引進 GPT-4 的成本也將大規模下降。
什么是ChatGPT
- 本質是一個對話模型,它可以回答日常問題、進行多輪閑聊,也可以承認錯誤回復、挑戰不正確的問題,甚至會拒絕不適當的請求。在上周公布博文和試用接口后,ChatGPT很快以令人驚嘆的對話能力“引爆”網絡。
- 主要特點:
(1)有強大的語言理解和生成系統
(2)降低人類學習成本和時間成本,可以幫助人類快速改寫查錯,生成小說摘要,定位代碼bug
(3)具有安全機制和去除偏見的能力:對于偷東西的行為表示責怪,對于模糊的提問圓滑的回答,對于未知的問題拒絕回答 - 主要缺點
(1)仍存在一些簡單的邏輯錯誤,比如把numbers這個字母數量算成8個。但比GPT3好很多,多輪對話下來還是能修正。
(2)有時候會給出看似合理,但是并不正確甚至荒謬的答案,如果用戶本身對答案未知,容易被誤導
(3)抵抗不安全prompt的能力比較差,還存在過分猜測用戶意圖的問題,而不是進一步的提問
(4)容易回答廢話較多,固定句式,主要是因為構造訓練數據時候,用戶傾向于選擇更長的回復。 - 和InstructGPT的區別:InstructGPT整體流程和ChatGPT流程基本相同,但是在數據收集、基座模型(GPT3 vs GPT 3.5)以及第三步初始化PPO模型時略有不同。
- ChatGPT是站在InstructGPT以及以上理論的肩膀上完成的一項出色的工作,它們將LLM(large language model)/PTM(pretrain language model)與RL(reinforcement learning)出色結合證明這條方向可行。當然,這也是未來還將持續發展的NLP甚至通用智能體的方向。
- ChatGPT應用:
(1)ChatGPT對于文字模態的AIGC應用具有重要意義:包括但不限于內容創作、客服機器人、虛擬人、機器翻譯、游戲、社交、教育、家庭陪護等領域。比如機器翻譯以助手問答的形式出現,甚至只是翻譯個大概
(2)ChatGPT作為文字形態的基礎模型,自然可以與其他多模態結合:比如Stable Diffusion模型,利用ChatGPT生成較佳的Prompt,對于AIGC內容和日趨火熱的藝術創作。
(3)ChatGPT可以作為搜索引擎的有效補充,從效果上來說為時尚早。有答案的query對結果排序就好,沒有答案的query也沒人能保證ChatGPT是不是對的。
(4)ChatGPT本身的升級:與WebGPT的結合對信息進行實時更新,并且對于事實真假進行判斷。現在的ChatGPT沒有實時更新和事實判斷能力,而這如果結合WebGPT的自動搜索能力,讓ChatGPT學會自己去海量知識庫中探索和學習,預測可能會是GPT-4的一項能力。 - ChatGPT思考:
(1)基于LLM和RLHF,是非常有趣的方向,RL大概率在即將發布分GPT-4中扮演關鍵角色
(2)目前沒有任何信息能確定ChatGPT的規模大小,最早的GPT-3代號Davinci大小175B,InstructGPT的模型代號是Davinci-text-002/003屬于GPT3.5,GhatGPT可能是其中一個模型微調得到的,因此猜測應該也是千億模型。
(3)ChatGPT不算突破式的創新,是近兩年業界發展的成果匯總,同一時期的工作還有Deepmind的Sparrow和Google的LaMDA,效果與ChatGPT應該不相上下。
(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 )的思想,核心思想是利用人類的反饋判斷最接近視頻行為目標的片段;通過訓練來找到最能解釋人類判斷的獎勵函數,然后使用RL來學習如何實現這個目標。
-
2019年GPT2問世后,OpenAI 就嘗試了GPT2+PPO:
(1)NeurIPS 2020的 Learning to Summarize with Human Feedback
(2)三步走的核心思想:收集反饋數據 -> 訓練獎勵模型 -> PPO強化學習。
(3)RLHF第一階段是針對多個候選摘要人工排序(這里就體現出OpenAI的鈔能力,按標注時間計費,標注過快的會被開除);第二階段是訓練排序模型(依舊使用GPT模型);第三階段是利用PPO算法學習Policy(在摘要任務上微調過的GPT)。
(4)文中模型可以產生比10倍更大模型容量更好的摘要效果。但文中也同樣指出,模型的成功部分歸功于增大了獎勵模型的規模。但這需要很大量級的計算資源——訓練6.7B的強化學習模型需要320 GPU-days的成本。
-
2020年初的OpenAI的Fine-Tuning GPT-2 from Human Preferences可看出,它同樣首先利用預訓練模型來訓練reward模型,進而使用PPO策略進行強化學習。整體步驟初見ChatGPT的雛形!
2021年底OpenAI的提出 WebGPT,核心思想是使用GPT3模型強大的生成能力,學習人類使用搜索引擎的一系列行為,通過訓練獎勵模型來預測人類的偏好,使WebGPT可以自己搜索網頁來回答開放域的問題,而產生的答案盡可能滿足人類的喜好。
什么是RLHF
- Reinforcement Learning from Human Feedback
- RLHF是Hugging Face這家美國公司(最著名的是構建了Transformer庫)在一篇發布的博客中提出的概念,旨在于講述ChatGPT背后的技術原理。
- 過去幾年里,基于prompt范式的AI生成模型取得了巨大成功,以語言模型LM為例,大多采用『自回歸生成』方式,通過循環解碼的方式基于上下文信息預測下一個詞,用交叉熵來計算每個詞的loss,但token-level的loss不能很好的刻畫整體輸出質量,人們往往用BLEU或者ROUGH等評價指標來刻畫模型輸出和人類偏好的相近程度。所以如果能直接用這些指標作為reward,引入RL訓練去微調LM,理論上比交叉熵的監督學習訓練方式更好。
- RLHF訓練過程分為3個核心步驟:
(1)預訓練語言模型(LM):這些語言模型往往見過大量的 [Prompt,Text] 對,輸入一個prompt(提示),模型往往能輸出還不錯的一段文本。可以在人工精心撰寫的語料上進行微調,但不是必要的,因為成本非常貴
(2)收集數據并訓練獎勵模型:一個獎勵模型(RM)的目標是刻畫模型的輸出是否在人類看來表現不錯。即,輸入 [提示(prompt),模型生成的文本] ,輸出一個刻畫文本質量的標量數字。OpenAI的Prompt數據主要來自那些調用GPT API的用戶。獎勵模型可以基于預訓練語言模型熱啟,在 [x=[prompt,模型回答], y=人類滿意度] 構成的標注語料上去微調,也可以直接隨機初始化在語料上訓。標注人員的任務則是對初始語言模型生成的文本進行排序『pair-wise』,而不是直接打分,因為不同標注人員評價標準不一。有趣的是,獎勵模型的大小最好是跟生成模型的大小相近,這樣效果會比較好。
(3)通過強化學習微調 LM:策略就是基于該語言模型,接收prompt作為輸入,然后輸出一系列文本(或文本的概率分布);而動作空間就是詞表所有token在所有輸出位置的排列組合(單個位置通常有50k左右的token候選);觀察空間則是可能的輸入token序列(即prompt),顯然也相當大,為詞表所有token在所有輸入位置的排列組合;獎勵函數(reward)基于RM模型,再疊加一個約束項。約束項基于前面提到的預先富集的數據,從里面采樣prompt輸入,同時丟給初始的語言模型和我們當前訓練中的語言模型(policy),得到倆模型的輸出文本y1,y2。然后用獎勵模型RM對y1、y2打分,判斷誰更優秀。顯然,打分的差值便可以作為訓練策略模型參數的信號,這個約束項信號一般通過KL散度來計算“獎勵/懲罰”的大小,loss=r(θ) - λ·r(KL),目的是為了不要讓模型通過『取巧』的方式小修小改騙RM的高額RL獎勵。 - OpenAI的第一個RLHF模型是InstructGPT,用小規模參數版本的GPT3
- DeepMind的第一個RLHF模型則使用了2800億個參數的Gopher模型
- RLHF的局限性:仍然可能輸出有害或者事實上不準確的文本。人類標注成本非常高昂,RLHF最多達到標注人員的知識水平。PPO算法已經比較老了,但目前沒有其他更好RL算法來優化RLHF了。
RLHF整體框架(參考InstructGPT)
根據OpenAI的思路,RLHF里分3步:
-
1、花錢招人給問題(prompt)寫回答(demonstration),然后finetune一個GPT3。這一步大家都懂,就不用說了。這一步可以多訓幾個版本,第二步會用到。
-
2、用多個模型(可以是初始模型、finetune模型和人工等等)給出問題的多個回答,然后人工給這些問答對按一些標準(可讀性、無害、正確性blabla)進行排序,訓練一個獎勵模型/偏好模型來打分(reward model)
(1)不直接打分是因為主觀需要歸一化,從排序變成獎勵分數用到了Elo排名系統打分
(2)RM模型一般直接用LM+回歸,可以從零訓練也可以用老LM做finetune,RM模型和LM模型需要大小差不多,因為它倆的輸入都是所有文本,需要差不多的理解能力
(3)除了用Elo打分,也可以對偏序樣本直接用pairwise Learning to Rank來打分。 - 3、用強化學習訓練上面那個finetune后的GPT3模型。用強化學習做LM訓練的一種思路是用Policy Gradient做,這一塊OpenAI用的是他們在17年提出的PPO算法,即Proximal Policy Optimization。
(1)policy是給GPT輸入文本后輸出結果的過程;
(2)action space是全詞表(~50k);
(3)observation space是輸入文本序列的空間(全詞表大小 x 序列長度);
(4)reward function則是一個基于RM輸出的一個函數。具體而言,把問題分別輸入第一步finetune的模型和正在訓練的模型得到輸出,把
輸入RM得到評分
,然后這里我們期望
別差太多,所以加一個KL散度的懲罰項
,即
:
-
GPT3只是個語言模型,它被用來預測下一個單詞,絲毫沒有考慮用戶想要的答案;當使用代表用戶喜好的三類人工標注為微調數據后,1.3B參數的InstructGPT在多場景下的效果超越175B的GPT3:
- InstuctGPT的工作也很有開創性:它在“解鎖”(unlock)和挖掘GPT3學到的海量數據中的知識和能力,但這些僅通過快速的In-context的方式較難獲得。InstuctGPT找到了一種面向主觀任務來挖掘GPT3強大語言能力的方式。
- OpenAI博文中有這樣一段原話:當我們要解決的安全和對齊問題是復雜和主觀,它的好壞無法完全被自動指標衡量的時候,此時需要用人類的偏好來作為獎勵信號來微調我們的模型。
什么是 PPO
PPO(Proximal Policy Optimization) 一種新型的Policy Gradient算法(Policy Gradient是一種強化學習算法,通過優化智能體的行為策略來解決在環境中實現目標的問題)。我們只需了解普通的Policy Gradient算法對步長十分敏感,但是又難以選擇合適的步長。在訓練過程中新舊策略的的變化差異如果過大則不利于學習。
而PPO提出了新的目標函數可以在多個訓練步驟實現小批量的更新,解決了Policy Gradient算法中步長難以確定的問題。由于其實現簡單、性能穩定、能同時處理離散/連續動作空間問題、利于大規模訓練等優勢,近年來受到廣泛關注,成為OpenAI默認強化學習算法。
幾個做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),讓獎勵模型對模型輸出質量的刻畫愈加精確,策略模型的輸出則愈能與初始模型拉開差距,使得輸出文本變得越來越符合人的認知。Anthropic就曾經在論文里討論了這種做法,并命名為 "Iterated Online RLHF (2022.04.12)"
- (1)Deep Reinforcement Learning from Human Preferences (Christiano et al. NeurIPS 2017) :RLHF用于Atari,使用一些規則標注的不同軌跡之間的pair-wise方式來微調策略。
- (2)Fine-Tuning Language Models from Human Preferences(Zieglar et al. arXiv 2019) (配一篇 OpenAI Blog):一篇早期的文章,研究reward Learning在4個具體任務(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方法應用于 summarize 任務,用ROUGE指標來微調策略提升summarize質量,使用的是GPT-2和PPO。另外一篇文章 Recursively Summarizing Books with Human Feedback(OpenAI Alignment Team, arXiv preprint 2021) 做了這篇文章的后續工作,在GPT3上微調,生成章節摘要再生成整本書摘要,研究表明人類只需要標注5%的摘要數據,就可以在 NarrativeQA 基準上取得先進性效果。
- (4)WebGPT: Browser-assisted question-answering with human feedback (OpenAI, arXiv 2021) 允許GPT3模型根據搜索引擎實時拿到的結果來預測,并在ELI5(Reddit 用戶提出的問題的數據集)上訓練,根據人類標注偏好的數據,用behavior cloning的方式微調模型,結果65%的情況下都取得很好的效果。
- (5)InstructGPT: Training language models to follow instructions with human feedback (OpenAI Alignment Team 2022) 講述RLHF應用在通用語言生成模型上。1.3B 參數 InstructGPT 模型的輸出優于 175B GPT-3 的輸出,因為通過了人類反饋標記數據,用RL來微調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的技術博客 ):把RLHF應用于訓練“開卷式”QA 模型, 2800 億參數模型 GopherCite 能夠生成具有高質量支持證據的答案,并在不確定時放棄回答。對 NaturalQuestions 和 ELI5 數據集的一個子集中的問題答案進行人工評估來衡量 GopherCite 的性能,對抗性 TruthfulQA 數據集的分析安全和可信度
- (7)Sparrow: Improving alignment of dialogue agents via targeted human judgements (Glaese et al. arXiv 2022) 用RLHF微調對話Agent,an information-seeking dialogue agent。從 70B 語言模型 Dialogue Prompted Chinchilla (DPC) 開始,再訓練兩個同樣大小的RM模型來近似人類判斷:偏好獎勵模型 (Preference RM)預測分數 和 規則違反獎勵模型 (Rule RM) 預估違反規則的概率,用A2C訓練。
- (8)ChatGPT: Optimizing Language Models for Dialogue (OpenAI 2022) 使用RLHF來訓練一個LM(language Model)并合理的應用于所有的對話場景
- (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訓練LM,偏好模型RM和RL一周訓練一次,并確定了 RL 獎勵與策略及其初始化之間 KL 散度的平方根之間的大致線性關系
- (11)Red Teaming Language Models to Reduce Harms: Methods, Scaling Behaviors, and Lessons Learned (Ganguli et al. 2022) :詳細的研究了如何在訓練LM中『發現、測量、減少有害行為』,論文研究了3 種模型大小(2.7B、13B 和 52B 參數)和 4 種模型類型:普通語言模型(LM);LM 提示樂于助人、誠實且無害;具有拒絕抽樣的 LM;以及使用人類反饋強化學習 (RLHF) 訓練有幫助和無害的模型。
- (12)Dynamic Planning in Open-Ended Dialogue using Reinforcement Learning (Cohen at al. 2022) 使用RL去提升一個實時開放式的對話系統的對話技能。
- (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開源工具的設計空間,提出一個新的算法NLPO來代替PPO
參考
抱抱臉:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷論文 https://zhuanlan.zhihu.com/p/592671478
從零實現ChatGPT——RLHF技術筆記 https://zhuanlan.zhihu.com/p/591474085
算法工程師深度解構ChatGPT技術 https://juejin.cn/post/7176077467092779068