RL 是 LLM 的新范式
隨著人工智能技術的飛速發(fā)展,RL(強化學習)逐漸成為LLM(大型語言模型)提升智能的關鍵技術,而本文就深入探討了RLHF(基于人類反饋的強化學習)在LLM發(fā)展中的重要性和應用。
AGI 正在迎來新范式,RL 是 LLM 的秘密武器。
最近幾個月,我們能明顯感受到頭部 AI labs 在形成一些新共識:post training 的重要程度在提高,需要的計算資源可能在未來超過 pre training;RL 成為提高模型 reasoning 能力的重要范式,需要大量的探索和突破。今天我們討論的 Agent 也是從強化學習中最早被定義的。
曾在 OpenAI 負責 post-traning 的 John Schulman 是 RL 的擁躉和布道者,他認為,post-training 是模型變得越來越聰明的重要原因,而 RLHF 是這其中最重要的技術 tricks。
John Schulman 對 RLHF 的信仰來自他在 OpenAI 的親身實踐:GPT-4 的 Elo 分數(shù)之所以能比第一代 GPT 高出 100 分也和 post-traning 的提升相關。
Scaling law 讓 AI 更聰明,而 RL 讓 AI 更有用。我們相信,RL 會在 LLM 發(fā)展中扮演越來越重要的作用。
為了更全面地理解 RL,海外獨角獸邀請到邊塞科技的創(chuàng)始人及 CEO 吳翼來分享 RL 的基本原理和 RLHF 的最佳實踐:
- PPO RLHF 是目前為止最強大的訓練方法,它是真正提升 AI 能力的關鍵;
- RLHF 同樣面臨著算法、系統(tǒng)和數(shù)據(jù)層面的挑戰(zhàn);
- 在 RLHF 范式下,高質(zhì)量數(shù)據(jù)的重要性進一步提升,高質(zhì)量數(shù)據(jù)能顯著提升智能水平;
- 長期來看,RLHF 是實現(xiàn)超級智能的關鍵,它讓 AI 有希望成為真正和人類協(xié)同的 agents。
?? 目錄 ??
- 強化學習及語言模型技術回顧
- 指令遵從:LLM 與 RL 的相遇
- 預訓練,后訓練和 RLHF
- Why do we need RLHF?
- PPO RLHF 的核心挑戰(zhàn)
- 廣義上的對齊
一、強化學習及語言模型技術回顧
強化學習的核心是 exploration and exploitation
強化學習的前置內(nèi)容是機器學習(Machine Learning)。上一波的 AI 浪潮主要討論的是 ML,它是通過人標注、給定任務,通過 AI 去學習的過程,這類方式十分任務導向。比如,標注一張動物圖片,判斷是貓還是狗,訓練一個神經(jīng)網(wǎng)絡去做判別。
但我們?nèi)粘I钪胁⒉皇撬腥蝿斩际峭ㄟ^圖片判斷貓狗的任務,大部分的任務是一個有序列決策的 sequential decision making,也就是說完成一個任務需要做出很多決策。比如讓機器人遞一杯水的任務,或者玩打磚塊游戲的任務。
遞水、把游戲中的磚塊打掉這種復雜的目標需要做很多的動作和決策。在圖片分類任務里,有判斷一張圖片中是貓還是狗的簡單能力就足夠了。
但是換到機器人遞水這件事情上,判斷機器人是左手遞水還是右手遞水、打磚塊游戲到底是從左還是從右打能夠打碎磚塊其實是沒關系的,只要能夠完成任務就可以了,并沒有標準答案。
我們希望通過一個算法的方式讓 AI 能夠自行找到滿足條件的答案,這就是強化學習需要解決的問題。
抽象來講,強化學習需要一些關鍵因素:
- 環(huán)境(environment):環(huán)境即為任務。比如, AI 想去玩吃豆人游戲,那環(huán)境首先會有 observation(觀測),AI 會看到環(huán)境里面存在的物體。此外,環(huán)境會有 transition(變化)。AI 會從環(huán)境中收到 reward(獎勵)。
- Agent / Policy:AI 也叫做 policy,或者 agent。Agent 也是從強化學習中最早被定義的。作為 agent / policy,會對環(huán)境輸入觀測,進行感知,最后輸出一個動作,目標是得到更多的獎勵。
比如,吃豆人 AI 就希望吃到更多的豆子,或者在打磚塊游戲中,AI 希望得到盡量多的磚塊,AI 做咖啡的目標是希望能夠把咖啡做出來。這里有幾個核心要素:
- 環(huán)境:AI 需要一個任務,比如打游戲、或者做咖啡。
- 需要有動作、有觀測、有獎勵。
經(jīng)典 RL 算法
強化學習算法是希望用一種方法找到可以有高獎勵策略的方式。目前有很多經(jīng)典算法。
比如 2014 年強化學習第一次出圈的 DQN 算法,它是由 Deepmind 提出的。DQN 算法成功打通關了雅達利游戲。
- DQN 算法:Deep Q-Network 是一種結(jié)合深度學習和強化學習的算法,被用于解決復雜的順序決策問題。DQN 推出后在多個領域取得了突破性成果,尤其是在游戲 AI 中展現(xiàn)出超人類水平的性能。盡管需要大量計算資源,但 DQN 為解決復雜的強化學習任務提供了強大而靈活的方法。
第二個出圈的算法則是 2016-2017 年 Deepmind 提出的 AlphaGo,以及它的通用版算法 AlphaZero。AlphaGo 在當時在圍棋項目上擊敗了世界冠軍。
之后出現(xiàn)的,便是現(xiàn)在最廣泛使用的強化學習的算法 PPO 算法。PPO 算法是 2017 年由 OpenAI 提出的,OpenAI 使用這個算法去打了 Dota 游戲,并在 Hide and Seek Game 這一項目中也使用了 PPO 算法。從 2017 年開始,PPO 算法一直是 OpenAI 內(nèi)部在使用的強化學習的算法。
- PPO 算法:即 Proximal Policy Optimization,PPO 算法提出后應用場景相當廣泛,包含各種序列規(guī)劃問題、機械臂控制、電子游戲以及今天的 ChatGPT。OpenAI 基于 PPO 算法設計的 OpenAI Five 在2019年4月13日擊敗了Dota 2 世界冠軍戰(zhàn)隊OG。
所有的強化學習算法都有三個階段:exploration、value estimation、exploitation。整個過程相當于在很多飯店中挑選出最好吃的菜,那就需要考慮是探索新的飯店,還是去吃之前經(jīng)常去的飯店:
- 第一階段:反復嘗試新飯店叫做 Trail-and- Error,可以看作是強化學習開始的探索階段;
- 再經(jīng)過一段時間,AI 通過已有經(jīng)歷去計算預期收益,即為 value estimation,或者叫 value learning。比如,前面吃了 100 家飯店后,會評判哪家飯店最好吃;
- 最后,根據(jù)經(jīng)驗選擇價值最高的動作就是 exploitation,比如,吃過 100 家餐廳后最終發(fā)現(xiàn)了其中有 10 家最好吃,最后就決定了以后只去這 10 家餐廳 。
這就是強化學習的基本步驟。在 RLHF 中也會有類似的階段出現(xiàn),強化學習的核心是,為了獲得更高的獎勵,如何在 exploration 和 exploitation 之間進行平衡和取舍。
語言模型
語言模型,從定義上解釋是一個描述自然語言的概率模型。概率模型能夠?qū)θ魏谓o定的序列 X 輸出一個介于 0 和 1 之間的實數(shù),表示 X 比較像一個自然語言的概率。
比如,“清華大學”這樣符合常規(guī)的字符序列會有較大的概率是正確的,而“華學清大”的序列概率則會較小。
因為字都是單個輸出的,所以,語言模型輸出詞的時候是從左到右一個個字出來的,這個是鏈式法則的計算。
如果要通過機器學習的方法去建立一個語言模型,一般會通過最大概率的方式,即收集大量自然語言數(shù)據(jù),來學一個模型使得這些自然語言數(shù)據(jù)在模型上的概率盡量大。
其實相當于“熟讀唐詩三百首,不會作詩也會吟”。唐詩只要讀的多,差不多也能自己寫一個。
因此,語言模型的核心變成了 Next Token Prediction,因為所有的字都是單個輸出的,是在一個 context 下來預測下一個詞是什么詞。
之前出現(xiàn)的詞就會叫 context,要預測的下一個詞就叫 next token。Next Token Prediction Problem 也是學習語言模型中最標準的優(yōu)化目標。
語言模型在過去的發(fā)展進程中,核心可以概括為兩個關鍵點:
- 需要大量的數(shù)據(jù),即為人類給定的自然語言語料;
- 通過 Next Token Prediction 方法,即為通過監(jiān)督學習的方式,使得預測概率最大化。
從 90 年代開始有基于神經(jīng)網(wǎng)絡的概率自然語言模型出現(xiàn),到目前的大模型,這條技術路線上主要的重大進展基本都圍繞著兩件事情:
- 需要更大的數(shù)據(jù),有同樣的監(jiān)督學習方式;
- 希望找到新的架構(gòu)和訓練模式,使得模型可以消耗這么大量的數(shù)據(jù)。
強化學習與語言模型的區(qū)別
強化學習的特點在于,AI 在一個環(huán)境中自我測試,不斷嘗試,有的成功,有的失敗。所以它也是有大量訓練數(shù)據(jù)的。
但和語言模型不同,強化學習的所有數(shù)據(jù)是 AI 和環(huán)境交互產(chǎn)生的,是 AI 產(chǎn)生的巨大數(shù)據(jù),并且這個過程是 Trail-and-Error,有好有壞。
AI 知道好的數(shù)據(jù)要多嘗試,壞的數(shù)據(jù)少嘗試。強化學習要有 task 或者環(huán)境,同時也要有獎勵函數(shù)。
獎勵函數(shù)是指引 AI 最后學出好的 policy 的關鍵原因。語言模型也有非常大量的數(shù)據(jù),但訓練語言模型的大量的數(shù)據(jù)是人為預先給定的。
其次,語言模型具有非常明確的目標,因為只有好的數(shù)據(jù),所以我們所有 prediction problem 都是在預測好的數(shù)據(jù),并沒有壞的數(shù)據(jù)。
此外,因為目標非常明確,即為 Next Token Prediction要預測好的數(shù)據(jù)。所以是沒有一個特別明確帶有任務導向的訓練目標的,也沒有獎勵函數(shù),只要做 Next Token Prediction 這一任務就可以了。
乍一看,好像從數(shù)據(jù)的類型、是否具有 task、是否有 reward function 這些因素對比下來,強化學習和語言模型之間好像沒有什么關系,但最后強化學習和語言模型走到了一起。后面我會詳細講為什么兩種方式可以相互結(jié)合。
二、指令遵從:語言模型與強化學習的相遇
指令遵從 (instruction following)在早期階段,如果用通俗的描述去介紹,相當于我們希望訓練一個智能體,智能體能夠完成用語言描述的任務。
早期就有很多人已經(jīng)在研究相關的主題了,最早做自然語言+強化學習+instruction following 這種工作都來源于 Berkeley。Berkeley 是最早開始研究強化學習的研究大本營,大家都希望從強化學習的角度去考慮問題。
這里提一些比較早期的工作。首先是 2016 年的 VIN,因為這篇內(nèi)容我也獲得了當年的 NIPS Best Paper。其中我們用VIN處理了一個叫作 WebNav的任務。
WebNav 的核心是,給定一個 Wikipedia 頁面,并給一句話,希望 AI 通過點擊鏈接的方式找到這句話所在的 Wikipedia 頁面 ,這個其實就是很典型的給定語言描述、通過決策,在網(wǎng)頁上找到對應頁面的 agent 工作。
2017 年還有一篇很著名的工作,作者是 Jacob Andreas,Jacob 是我 Berkeley 的師兄,目前在 MIT 做教授。
Jacob 在 2D 簡化版 Minecraft 內(nèi)通過強化學習使得 AI 完成一些基于語言指定的工作任務,比如“make a pot”,“make sticks”,做一些工具。中間有一些小步驟需要 AI 達到,從而完成它負責制作的工具。
Semantic Navigation 是 2017 年的一個工作,是我在 Facebook 的時候和同事一起做的。我們搭建了一個 3D 的仿真環(huán)境,并且會問 AI:車的顏色是什么?AI 需要在 3D 環(huán)境內(nèi)找到對應的 object,找準車的顏色。
我們當時還做了一些別的任務:找書房、找臥室、找杯子等。讓 AI 在 3D 環(huán)境中找到語言描述的東西。
我回到清華后,也做過更多有趣的研究。比如用指令控制 AI 玩簡化版的星際爭霸游戲。我們會給 AI 發(fā)出指示,比如,“你要撤退、你要挖礦、你要造房子”,進而 AI 聽到指令后就去完成對應的任務。
任務可能很復雜,但是本質(zhì)還是一個通過說話傳遞自然語言指令讓 AI 去完成的任務。
其實這些研究出現(xiàn)的很早了,在 ChatGPT 誕生之前就有很多這樣的工作。它們的特點是雖然是語言描述的任務,但是任務語言都比較簡單,比如“retrieve、color of the car”,所有這樣的任務都是 template-based、只有幾個詞按照某種模版組合就能簡單描述。
其次,這些所有任務的特點是我們有特別容易、標準化、能夠計算的 reward, 或判斷 AI 是否完成的獎勵函數(shù)。這就是早期的 instruction following的工作。
把 instruction following 和 GPT 結(jié)合,就會發(fā)生更多有趣的創(chuàng)新。
GPT 時代開端于 2020 年,當時 GPT-3 的著名論文:Language Models are Few-Shot Learners 拿到了NeurIPS 2020 best paper reward,并在全球引起了轟動。
OpenAI 也提出了一個新的概念:“Few-Shot Learners”,即訓練了 GPT-3 后,用戶可以直接給 AI 一個任務描述,比如,“translate English to French”,并且給一些英譯法的例子,這個時候大模型可以自動幫用戶完成一些任務,因此被稱為 Few-Shot Learners。
LLM 通過大規(guī)模計算后可以自然涌現(xiàn)出 few-shot learning 的能力,模型看幾個例子、加上語言描述后,就可以自動完成任務。當時有很多相關的 case,甚至模型可以寫代碼。
當然也有人會問,為什么 LLM 需要 “few-shot”?這里有一個有趣的故事。2022 年我去和人交流,當時我說 GPT-3 非常厲害,但有些使用過 GPT-3的非 AI 背景的朋友,卻認為 GPT-3 的表現(xiàn)并不怎么樣。
這也是為什么 GPT-3 論文中會提到 “Few-Shot Learner”,因為 GPT-3 的 zero-shot 能力還不好,你必須非常小心的給出 few-shot 的例子才能讓GPT-3輸出好的結(jié)果。
舉一個 Zero-shot 的例子:比如我們給 GPT-3 輸入“explain the moon landing to a 6 year old in a few sentences”,這個任務表述得很明白,但模型可能會重復一些與任務無關的信息,如“explain a series of gravity”,這也是為什么有人會覺得 GPT-3 不好用。
所以,論文中提到,如果讓 GPT 做一些有意義的事情,需要比較重的 prompt engineering。
GPT 當時給人感覺不好,本質(zhì)上是因為它的 instruction following 做得很差。大部分的用戶是輸入了語言指令,發(fā)現(xiàn) GPT 說胡話,其實是用戶不知道怎么去用那個時候的初代 GPT。
這里的核心挑戰(zhàn)就是讓 GPT “聽話”。我們?nèi)绻麖?instruction following 的角度去理解,“explain the moon landing to a 6 year old”就是一個 instruction,之后 GPT 的輸出的內(nèi)容就是一個強化學習 agent 根據(jù)這個 instruction 所輸出的所有 action。
有了 task 和 aciton,接下來就是關于 reward 的問題。過往簡單 instruction following 的任務是否完成往往是很好評估的,但在 GPT 情況下,用戶的 instruction 可能是 arbitrary 的,所以 reward 很難計算。
所以對于 GPT 做 instruction following 就會有很大的挑戰(zhàn),即需要面對極其復雜與多樣的指令,評估獎勵的完成度也非常困難,因為很難定義是否完成。比如,“explain the moon landing to a 6 year old” 這個任務,評估一個答案好不好這件事本身就挺不容易的。
為了解決這個問題,2022 年,OpenAI 推出了 InstructGPT。InstructGPT 采用了一種直接的方法:讓人類來評判 GPT 的輸出是否成功完成了人的指令。
為此,研究者收集了大量人類對 GPT 輸出的反饋,用來訓練模型,使其能夠更好地理解和響應人類的指令。例如向六歲兒童解釋登月這樣的任務,InstructGPT 能夠提供更加合理的輸出。
InstructGPT 的核心思想是利用人類的判斷來指導模型的訓練,因為這些 instruction following 的任務本身就是人類給出的指令。InstructGPT 能夠處理復雜的指令,包括寫代碼等任務,很多在 zero-shot 設定上 GPT-3 做不了的任務都可以被完成。
InstructGPT 有兩個步驟,首先是收集指令,也就是人類輸入的 prompts,接著還需要收集反饋,明確什么樣的模型輸出是滿足了人類指令。
經(jīng)過訓練,InstructGPT 減少了模型的 hallucination 現(xiàn)象,即模型不再產(chǎn)生與指令無關的輸出。
三、預訓練,后訓練和 RLHF
InstructGPT 的目標是微調(diào) GPT 模型,使其能夠產(chǎn)生滿足人類指令的輸出。為了使 GPT 完成指令遵從,技術挑戰(zhàn)集中在:我們該如何收集數(shù)據(jù)?
為了實現(xiàn)這一目標,需要完成兩件事情:
- 指令,fine-tuning 首先需要收集指令,即人類的 prompts 或 instructions。
- 反饋,需要收集好的反饋來滿足 human instructions。
從訓練語言模型的角度來看,我們需要收集大量的人類指令(human instructions),以及對應的人類反饋。這些對應好的數(shù)據(jù)將被作為 Next Token Prediction 的訓練數(shù)據(jù),通過傳統(tǒng)語言模型訓練方法,即 SFT (Supervised Fine-Tuning),來進行訓練。
SFT 是通過傳統(tǒng)語言模型角度進行指令遵從訓練的。這種方法直接且有效。那么從強化學習的角度來看會怎么樣呢?
直覺上,我們相信強化學習是可以取得很好的效果的,因為,強化學習是一個讓 AI 自己探索的過程,有很大的潛力。
但也會遇到一個問題:一個強化學習問題需要定義 task、action、reward。這里 task 和 action 都是比較容易定義的,剩下的就需要找到一個 reward,使我們可以在 GPT 的 instruction following 挑戰(zhàn)上運用到強化學習。
OpenAI 在 InstructGPT 提出了一個簡單的想法,即通過機器學習的方法來構(gòu)建一個 reward model。盡管沒有標準答案,但可以通過學習人類的反饋信息來獲得比較接近的 reward。InstructGPT 采用了一個三步走的方式來收集人類反饋,通過機器學習的方法學一個 reward function。
- 第一步,讓 AI 生成多種輸出。
- 第二步,讓人類對這些輸出進行排序,例如 D 優(yōu)于 C,C 優(yōu)于 A,A、B 排序一致,以表達人類對輸出的偏好。
- 第三步,通過人類對輸出的偏好數(shù)據(jù),進而學習一個獎勵模型。獎勵模型的輸出,即給出的分數(shù),應該能夠滿足人類的所有偏好排序。AI 通過學習到的打分機制對語言模型進行訓練,使語言模型的輸出能滿足人類的反饋。
這個過程被稱為 RLHF(Reinforcement Learning from Human Feedback)。RLHF 的核心是通過強化學習訓練語言模型,但由于缺乏獎勵函數(shù)這一必要因素,因此需要通過收集人類的反饋來學習一個獎勵函數(shù)。
以 InstructGPT paper 中的一個標注界面示例。在這個例子中,AI 生成了五個可能的輸出,并讓用戶進行排序,也給用戶提供“我覺得分別不出來”的排序選項。通過這種方式,可以獲得大量的偏序?qū)?,用于訓練獎勵模型。
InstructGPT 的訓練過程包括以下幾個步驟,首先,有一個預訓練的模型,然后:
- 第一步,通過 SFT 收集 human demostration data 進行 SFT。
- 第二步,收集人類偏好數(shù)據(jù),利用數(shù)據(jù)學習一個獎勵模型。
- 第三步,使用 reward model 進行強化學習的 RLHF 訓練。
最終就可以得到優(yōu)化后的 InstructGPT 模型。
InstructGPT 以及之后的 ChatGPT 的總體訓練流程可以概括為兩個主要部分。
- Pre-training :這一階段涉及使用大量的數(shù)據(jù),通過語言模型的訓練方法來訓練一個基礎模型。
- Post-training:也就是 InstructGPT 和 ChatGPT 所執(zhí)行的步驟,即利用人類的標注數(shù)據(jù)或高質(zhì)量的人類反饋數(shù)據(jù)進行后訓練。這一過程通常包括至少兩個步驟:1)SFT 步驟,通過 human demonstration 的方法進行監(jiān)督學習;2)RLHF 步驟,通過 human preference data 的方法進行獎勵學習。
預訓練與后訓練之間也存在區(qū)別:
- 數(shù)據(jù)方面:預訓練階段需要處理海量的數(shù)據(jù),這可能需要大量的計算資源和較長的時間。而在后訓練部分,大量的數(shù)據(jù)是人類標注或通過某種方式構(gòu)造出來的數(shù)據(jù),數(shù)據(jù)質(zhì)量通常較高,但與預訓練階段相比,數(shù)量會少很多。預訓練和后訓練在數(shù)據(jù)的質(zhì)量和數(shù)量上存在差異。
- 訓練目標方面:預訓練階段的目標是壓縮和 Next Token Prediction;而后訓練的目標主要是 instruction following。通過訓練激發(fā)大模型的能力與智能,使模型 usable,能夠尊從人類指令。
- 訓練過程方面 (dynamics):預訓練通常是固定的,需要收集一個龐大的數(shù)據(jù)集進行訓練,這些數(shù)據(jù)通常是靜態(tài)的。對應 post-training,尤其是 RLHF ,其反饋是在線的,需要不斷收集人的反饋,不斷迭代,逐漸進化模型,這是一個動態(tài)的在線過程。
最后, post-training phase 也被稱為對齊(alignment phase)。對齊的目的是將 LLM 的能力和人類的偏好保持一致,希望大模型的輸出能夠滿足人類的價值取向和意圖,確保模型的輸出與人類的偏好一致。
四、Why do we need RLHF?
預訓練階段是模型訓練,是一個壓縮訓練的過程,SFT 也是語言模型的壓縮訓練。SFT 非常直接,在原來數(shù)據(jù)的基礎上整合人工標注數(shù)據(jù)繼續(xù)訓練。那 SFT 為何不夠,RLHF 的必要性在何處?
從數(shù)據(jù)來看,InstructGPT 的實驗結(jié)果中顯示:在遵循人類指令方面,無論在什么 scale 上,pre-trained GPT 的表現(xiàn)最差,經(jīng)過 prompting 之后有較大的提升,經(jīng)過 SFT 后能提升更多。
但這三者與 PPO 算法,即經(jīng)過 RLHF,都有一個較大的差距。從數(shù)據(jù)的角度出發(fā),RLHF 的表現(xiàn)更好。
這也就引出了一個問題:為什么 RLHF 的效果優(yōu)于 SFT?
PPO 算法的提出者是 John Schulman,他曾經(jīng)也在 OpenAI 工作,也是 Berkeley 的PhD,他 2024 年回到 Berkeley 做過一場講座,在這場講座中他仔細討論了 RLHF PPO 的重要性,他主要提出了兩個觀點:
第一, SFT 會導致 hallucination
John Schulman 認為,大型模型之所以會產(chǎn)生幻覺,是因為它們在 SFT 階段學到了一些不正確的認知。
John Schulman 在這里舉了一個例子,當 GPT-3 被要求 “ write a bio of AI researcher John Schulman”時,GPT 錯誤地輸出:John 從 2009 年開始在 CMU 任職 associate professor,從 2012 年開始任職 professor。
但是真實情況是,John 在完成 PHD 學位后就在 OpenAI 工作,并未在其他地方工作(注:最近John剛加入了Anthropic)。GPT-3 輸出的內(nèi)容與實際明顯不符。
為何大型模型會生成這樣的錯誤信息?John Schulman 這里提了一個思維實驗,假設在預訓練階段,就存在一個 knowledge cut off。
比如,我們假設 ChatGPT 的所有的知識和數(shù)據(jù)都截止于 2023 年。到 2024 年,我們希望通過 SFT 的方式 fine-tune ChatGPT,讓它來描述 2024 年歐洲杯的情況。
但因為 GPT 在預訓練過程中沒有任何關于 2024 年歐洲杯的信息,它自然也不知道西班牙是否奪冠,也不知道是否有進球等具體情況。
如果我們使用現(xiàn)有的數(shù)據(jù)進行簡單的 SFT,實際上 GPT 并不知道 2024 年發(fā)生了什么,但由于 SFT 的數(shù)據(jù)中包含了其他歐洲杯相關的問答數(shù)據(jù),這些回答都是精準的,因此大模型可能會覺得,對于2024年歐洲杯的問題也應該給出一個準確答案才可以,但它本身可能在預訓練階段并沒有掌握正確的信息,于是就鸚鵡學舌地說一些錯誤的內(nèi)容。
這種情況下,SFT 過強的監(jiān)督信號導致人類實際上在引導 ChatGPT 說它不知道的東西。
另外還存在一種可能性,即 GPT 實際上知道答案,但提供標注的人員不知道。例如,如果問到 2022 年某場足球聯(lián)賽的問題,標注人員可能不了解答案,而 GPT 反而可能知道。
在這種情況下,標注人員可能會給出 “I don’t know ” 的人類反饋。這反倒可能導致 GPT 產(chǎn)生混淆,因為它明明知道答案卻被要求說不知道。這兩種原因綜合來看就可能導致模型在經(jīng)過 SFT 階段后非常容易出現(xiàn) hallucination 現(xiàn)象。
第二:RLHF helps uncertainty awareness,讓大模型“知道”自己“確實不知道”
在這里我們還是用歐洲杯的例子來說明。如果大模型不知道 2024 年歐洲杯的情況,用戶卻讓大模型去描述歐洲杯的情況,例如:在2024年歐洲杯上哪位運動員有進球,那大模型就可能會產(chǎn)生幻覺,這是因為模型實際上并不了解 2024 年歐洲杯的具體事件但被 SFT 引導說一個貌似正確的回復。
RLHF 如何防止 hallucination 的出現(xiàn)?John Schulman 認為,如果存在一個設計良好的獎勵函數(shù),情況就會不同。例如,如果模型給出正確答案,就給予正向的獎勵分數(shù) 1 分;如果模型表示“我不知道”,就給予0分;如果模型給出錯誤答案,則扣除分數(shù) 4 分。
在這種情況下,如果模型不知道 2024 年發(fā)生了什么,在強化學習過程中無法提供正確的回答,選擇“不知道”成為更合理的策略。
這種機制鼓勵模型在不知道答案時能夠提供“不知道”的回答。John 認為這種方式能幫助模型保留了一定的不確定性,使模型能夠產(chǎn)生正確的自我認知,來判斷是否真的知道一個問題的答案。
這些觀點是 2023 年 4 月 John Schulman 在 Berkeley 講座中提出的。到現(xiàn)在時間過去了一年多,從現(xiàn)在回頭重新審視 John 的觀點的話,這些觀點可能是有些不完整的。
首先,SFT 可能導致 hallucination ,這一觀點是絕對正確的。
長期以來的經(jīng)驗表明,hallucination 確實是由 SFT 這樣的監(jiān)督訓練導致的。這種現(xiàn)象的核心原因可以這么理解:一個問題可能 GPT 確實不懂也不會,但卻在 SFT 階段記住了答案而不是真正理解概念,因而在用戶使用的時候會產(chǎn)生幻覺現(xiàn)象。
就像學校中的學生可能通過刷題背誦答案而不是真正理解問題一樣,在看到新題時直接抄上背誦的答案,導致問題回答錯誤。因此,如果模型沒有充分學習,就容易出現(xiàn)不懂裝懂的情況。所以,SFT 確實很容易造成 hallucination。
但是,John Schulman 遺漏了一部分內(nèi)容,SFT 確實容易導致 halluciantion,但這不一定完全是由于預訓練階段數(shù)據(jù)的 knowledge cut off 導致的。
John 之前舉例認為,如果大模型只知道 2023 年之前的信息,如果有部分新信息大模型并不知道,在這個基礎上去做 SFT 可能會產(chǎn)生幻覺。
但這種觀點并不完全正確。因為在過去一年中,人們發(fā)現(xiàn) SFT 階段是可以教授模型一些新知識的。例如,如果 SFT 數(shù)據(jù)集中包含了足夠多的關于2024歐洲杯的信息,SFT 后的模型在被問及 2024 年歐洲杯的內(nèi)容時,也是能夠提供答案的。因而,SFT 不一定會產(chǎn)生 halluciation。
這就引出了一個問題:大模型在是否學會新知識這個問題上存在一個非常微妙的邊界。如果不提供數(shù)據(jù),大模型就不能夠提供答案;
如果提供數(shù)據(jù)不完整,可能導致模型出現(xiàn)幻覺;如果數(shù)據(jù)提供足夠多,模型就可能會學會新知識。因此,到底給多少的數(shù)據(jù)是很難判斷的,SFT 的高質(zhì)量數(shù)據(jù)集也是非常難構(gòu)建的,這里就有一個非常不容易的數(shù)據(jù)挑戰(zhàn)( a non-trivial data challenge for building a good SFT dataset)。
我們期望通過 SFT 使模型掌握新的能力或知識。但是,如果數(shù)據(jù)集構(gòu)建的不完整可能會導致模型出現(xiàn) halluciation 的問題。
關于 RLHF 幫助模型識別不確定性的觀點。這個觀點基本上是正確的,盡管John 的解釋可能不完全準確。RLHF 所帶來的不僅僅是處理知識邊界的不確定性的能力(not only handle the knowledge cut off problem)。
我們可以再做一次思維實驗,討論一個尚未發(fā)生的問題,例如“2026 年誰贏得了世界杯?”對于一個只預訓練到 2023 年的模型來說,它不會知道 2026 年的冠軍是誰。所以模型可能會給出幾種猜測,比如:
- 30% 概率模型會說“西班牙奪冠”,因為西班牙剛贏得歐洲杯,
- 40% 概率模型會說“阿根廷奪冠”,因為阿根廷獲得上屆世界杯的冠軍,
- 還有30% 概率模型會表示“我不知道”;
- ………
如果使用 SFT 來訓練這個語言模型,并在 “我不知道” 這個答案上訓練一條數(shù)據(jù),大概率會觀察到模型輸出“不知道”的概率顯著提高了,而輸出西班牙和阿根廷奪冠的概率下降了,但沒有下降至 0。
那是否可以在“我不知道”這個正確答案上進行反復訓練,最終將“我不知道”的概率提高到 100%呢?
雖然理論上可以這么做,但在實踐中反復學習類似的數(shù)據(jù)也可能導致模型 ovefit 或者 generalization 出現(xiàn)問題。如何把控模型把每一個 SFT 數(shù)據(jù)集里的問題都能答對,還是希望模型具有一定的泛化能力,這里的邊界是比較難把控的。
如果將 RLHF 運用到同樣的模型和問題上,會出現(xiàn)什么結(jié)果?首先需要聲明的是,這個思維實驗是一個 high level 的討論,建立在我們有一個好的 reward model 的假設上,但在現(xiàn)實情況中這是一個復雜的問題。所以這里會先呈現(xiàn)比較宏觀的感受,暫時不涉及到特別底層的技術細節(jié)。
可以先假設有一個設計得比較好的 reward model。在這種假設下,模型在回答 “who won the 2026 World Cup?”這樣的問題時,AI 會嘗試不同的答案。例如:
- 回答 “I don’t know”,發(fā)現(xiàn)被賦予 +0.5 的 reward;
- 回答 “Spain”,發(fā)現(xiàn)被賦予 -4 的的 reward;
- 回答 “Argentina”,發(fā)現(xiàn)被賦予 -4 的的 reward
……
在經(jīng)過很多次嘗試后,模型可能會發(fā)展出一個更合理的答案分布,其中“I don’t know”的概率較高,而其他猜測的概率較低。
我們來思考一下 RLHF 與 SFT 實驗的區(qū)別。在 RLHF 訓練過程中間,每一個 prompt ,比如說 “who won the World Cup?” 的問題,AI 會進行多次嘗試,并且,reward model 會給予不同回復正向或者負向的反饋,其中,不僅僅是正確的回答,這些錯誤回答收到的負向reward也會幫助模型減少幻覺。這樣的訓練過程能夠極大地增強模型的能力。
這里我會提出一個新的觀點,RLHF 的過程不僅幫助模型意識到不確定性,更重要的事情是 RLHF 幫助模型提高了 reasoning 能力。
什么是 reasoning 能力?
這里涉及到有相關性和因果性的概念,相關性不代表因果性。很多時候大家會希望大模型掌握因果性,而不希望僅僅看到相關性。
因果性指什么?在傳統(tǒng)的統(tǒng)計學習里面有一個判斷因果性的過程,叫 counter-factual reasoning。
我們可以從這個角度進行一些 high-level 的解釋。
比如,為了判斷一種藥物是否對治療頭痛有效,必須在所有其他條件保持不變的情況下對于用藥與否和是否康復進行因果推斷。
具體操作可以是:在相同的環(huán)境下,讓一位患者服用該藥物,觀察其頭痛癥狀是否得到緩解。隨后,在保持環(huán)境不變,讓患者不服用藥物,然后觀察是不是頭疼沒有好,綜合吃藥康復和不吃藥不康復兩個觀察才能推導出該藥物是有效的這個結(jié)論。
只有通過正向和反向的雙重實驗,我們才可以判斷這種藥物對頭痛有效。如果只有正向的例子,例如說患者吃了感冒藥,感冒變好了,并不能證明感冒藥能治好感冒。
只能說明,感冒藥與患者感冒的好轉(zhuǎn)有一定相關性。而 RLHF 正是成功利用了負向數(shù)據(jù),使得模型有機會真正掌握因果性。
總結(jié)來說,RLHF 的過程有以下三點好處:
- 使用 negative signal 進行對比學習,通過對比的過程可以幫助模型降低 halluciation。
- 強化學習不是一個固定的過程。它允許模型隨著能力的不斷提升,通過不斷地問問題、不斷地給出答案、不斷地評判,從而讓模型不停地從當前能力的邊界進行主動探索,并不斷拓寬自己的能力邊界。
- 這兩個因素共同作用能夠形成 counter-factual reasoning 的作用,有可能解鎖因果學習(casual learning)的巨大潛力,讓模型具備更強的 reasoning 能力。
那么就有這樣一個問題存在:模型訓練上利用 negative signal 和 online exploration 兩件事上,是否可以舍棄 online attempt ?即只通過正反饋和負反饋是否足夠,而不需要模型持續(xù)在線嘗試。只通過 contrasted learning,在 SFT 上加上負向案例,能否達到預期效果?
DPO( Direct Policy Optimization)就是這么做的。它與 PPO 算法的主要區(qū)別在于 DPO 去除了在線嘗試的部分。
DPO 算法其實很簡單,它基本遵從了SFT的訓練流程,但是在收集正例之外還會收集負例,對于每一個 prompt 都要求標注員提供好的和壞的兩個答案。對于好的答案提升概率,對于壞的答案則是讓模型“不說”。
那么,DPO 算法是否能達到與 PPO 相同的效果?我在今年的 ICML2024 大會上的論文,Is DPO Superior to PPO for LLM Alignment?A Comprehensive Study 就在討論了這個問題。這篇論文也是今年被選中的 4 篇有關 alignment 的 oral papers 的其中之一。
先說結(jié)論,如果能夠?qū)崿F(xiàn) PPO 算法,PPO 的效果將會遠遠超過 DPO。因為正例反例和在線探索兩件事都非常重要。
我們還是以“2026 年世界杯誰奪冠”為例。假設預訓練模型中,阿根廷有 80%的概率奪冠,“I don’t know”是 20%的概率。
如果運用 DPO 算法,標注“I don’t know” 會比“阿根廷奪冠”更好,將會得到這樣的結(jié)果:阿根廷奪冠的回答概率下降,“I don’t know” 的回答概率被提升,但是西班牙的回答概率也會被提升。
這是因為 AI 可能會認為輸出西班牙也會帶來比較好的效果,導致西班牙奪冠的概率被提升。
但 PPO 算法不會出現(xiàn)這樣的問題,因為當 AI 嘗試西班牙奪冠的選項時,也會被 reward model 拒絕。因此,AI 會知道在這種情況下,不能說西班牙,只能說 “I don’t know”,所以,這是一個在線探索的過程。
那是否將 “I don’t know” 的概率大于阿根廷奪冠、大于西班牙奪冠的標注都加入 DPO 算法的訓練數(shù)據(jù)中,就能夠解決上述的問題呢?
這個問題理論上可以,但由于 LLM 輸出的可能性太多,如果僅僅希望通過靜態(tài)數(shù)據(jù)收集 cover LLM 所有可能的輸出是非常困難的。因此,在線探索和及時獎勵反饋是一種更加高效讓 LLM 學會說正確答案的方法。
另外,我們使用 PPO 和 Code Llama 在 Coding Contest 上做了測試,發(fā)現(xiàn)使用開源模型加上 PPO 可以比 AlphaCode 這樣的閉源模型在很難的 CodeForce 競賽題上通過率提高 6%。
這是一個純開源模型加 RLHF 的嘗試,并未添加任何新的數(shù)據(jù)。在這種很難的、需要強調(diào) reasoning 能力的任務上,DPO 完全沒有效果。
五、PPO RLHF 框架的核心挑戰(zhàn)
PPO RLHF 的框架有哪些挑戰(zhàn)?
首先從算法角度來看,PPO RLHF 的算法流程相對復雜。PPO 比起 SFT、比起 DPO,它的算法、流程都相對麻煩,多了很多流程。
不僅需要正反饋、負反饋、需要獎勵模型,并且涉及在線探索過程。因此,整個算法的實現(xiàn)過程非常復雜,實現(xiàn)算法的過程,其中涉及到的細節(jié)非常 non-trivial。算法實現(xiàn)過程中也會涉及許多調(diào)試步驟,需要正確執(zhí)行許多操作。
我們在 ICML 的論文中也給出了一些建議。比如,需要 advantage normalization、需要一個大的 training batch;reference model 需要 moving average 等。具體而言,不同情況下需要的技術會很多,因為傳統(tǒng)的強化學習本身就需要大量的 implementation techniques。
第二點,就系統(tǒng)層面而言,強化學習訓練系統(tǒng)與傳統(tǒng)的 SFT 有不太一樣。
SFT 或 DPO 模型通常只包含一個 policy 模型,只需將數(shù)據(jù)輸入語言模型即可,其訓練邏輯相對簡單。然而,對于強化學習,或者對于 PPO RLHF,情況則更為復雜。
如果熟悉 PPO 算法,就會知道 PPO 包含四個模型:actor、critic、value network 和 reference network。不同的模型還有不同的dependencies,也就是前后依賴關系;
不同模型也有不同的吞吐量,比如,actor 是一個傳統(tǒng)的大模型,需要輸出所有 response,而 critic 則只需要做評分。評分的吞吐量會遠小于需要輸出 response 的模型。因此,不同模塊的計算量存在顯著差異。將這四個模塊 scale up,并且做好算力平衡是具有挑戰(zhàn)的。
我們在今年另一篇論文中討論了一個我們新開發(fā)的 RLHF 系統(tǒng),對比現(xiàn)有的開源框架,我們在 70B 模型的 RLHF 訓練任務上,可以做到同等計算量實現(xiàn)十倍的 speed up。
對照下圖,RLHF 的過程有很多的模型,不同顏色的圈代表不同的模型,它們有不同的 computation dependency。這種 dependency 會導致算法在運行過程中,機器有很多灰色的區(qū)域,也就是 computation bubble。
這些bubble 的存在表明很多時候 GPU 沒有被充分利用,因此我們需要把不同的模型和他們之間的 dependency 不斷進行適配和調(diào)整,從而用滿整個 GPU 的帶寬。這是一個復雜的過程,我們的開發(fā)也投入了很多時間。
第三點,就數(shù)據(jù)層面而言,除了預訓練,對于 post-training, 或者說對于 PPO RLHF 來說,數(shù)據(jù)也是非常重要。
RLHF 的數(shù)據(jù)實際上包括兩部分:一是 prompt,即人寫的 instruction。二是指模型的 responses。這兩部分都相當復雜。
首先,prompt design 至關重要
我們從強化學習中經(jīng)常討論的一個角度——課程學習(curriculum learning)入手。課程學習是強化學習里面提高 policy 泛化能力的經(jīng)典算法之一。
在課程學習中有一個特別重要的 principle,即如何讓一個 policy 更好地泛化。我們需要保證策略每次學習的時候,學習內(nèi)容都是在它會與不會的邊界狀態(tài),這是最好、效率最高的方式。課程學習的名稱來自于正常的教育體系中對人的訓練方式。
比如,我們?nèi)绻麑σ粋€剛畢業(yè)的初中生講抽象代數(shù),正常情況下,這名初中生是無法理解的,除非他是天才。但如果與初中畢業(yè)的學生講小學的題目,也是浪費時間。這里正確的訓練方式,是讓初中畢業(yè)生學習高中內(nèi)容,或是高中競賽題,讓高中的學生學大學的內(nèi)容,而不要跳過步驟。
因此,出題的難度非常重要。既不能太簡單,也不能太難,訓練需要保證訓練數(shù)的題目里總是能 hit the right boundary of model ability。
其次,無論是 DPO,PPO 還是 SFT,數(shù)據(jù)都很重要
對于 PPO RLHF 來說,數(shù)據(jù)有正例也有負例,這樣的 response pairs 對模型訓練的效率和能力有重要影響。
當我們收集 pairs 時,也需要保證正例和負例都能踩在 reward model 判別的邊界。我們需要保證無論是 positive pair 還是 negative pair 都剛好能不斷提升 reward model 的模型邊界。
比如說,在評估一個高中生解答高中題目的能力時,如果僅提供小學水平的題目,無論是正確答案還是錯誤答案,都無法幫助訓練出一個更好的獎勵模型。
又或是一個完全正確的答案與單寫“解”字,正確的答案應該得分,僅寫一個“解”字,顯然不應該得分。但上述事情無法幫助我們訓練一個更好的 reward model。
因此,找到合適的 positive and negative pair,并來幫助我們訓練 reward model,使其能夠準確評估大模型的輸出至關重要。
總結(jié)來說,PPO RLHF 面臨的挑戰(zhàn)主要分為算法、系統(tǒng)和數(shù)據(jù)三個方面:?
- 算法層面:關鍵在于如何穩(wěn)定訓練過程,并調(diào)整算法的細節(jié)以提高性能。
- 系統(tǒng)設計:由于強化學習 PPO,RLHF 的計算流程非常復雜,系統(tǒng)設計需要提高整體的訓練效率。
- 數(shù)據(jù):數(shù)據(jù)分為兩部分,一部分是 prompt,一部分是 response。兩部分都很關鍵,只有將它們結(jié)合起來,才能形成一個完整的,比較成功的 PPO RLHF 的 training process。
除此之外,還有許多細節(jié)需要考慮。例如訓練過程可能不穩(wěn)定,RLHF 可能出現(xiàn) reward hacking,即出現(xiàn)一些意料之外的異常表現(xiàn),比如,模型可能會忘記之前的技巧,有時會 over fitting,可能總是回答 “I don’t know”。這些都是容易出現(xiàn)的問題,也是這個領域充滿挑戰(zhàn)的原因之一。
六、廣義上的對齊
前面的內(nèi)容都是圍繞 instruction following,我們希望大模型能尊重這些指令。事實上,instruction following 是 alignment (對齊)的一個特殊形式,但它并不構(gòu)成對齊的全部內(nèi)容。其中包含一些有趣的問題。例如,對齊是什么?
對齊問題原本被稱為價值對齊 (value alignment),這指的是一個 AI 系統(tǒng)的訓練目標可能與其實際需要面對的核心價值并不一致。
換句話說,訓練目標與真正希望 AI 滿足的目標之間存在不匹配,而如何解決這個不匹配的問題被稱作 value alignment problem。
我們在這里再進行一個思維實驗。假如有一天,我們實現(xiàn)了 AGI,也實現(xiàn)了每個人都有一個自己的機器人這件事,也許就是說每個人都擁有一個由 AGI 驅(qū)動的機器人。
我們假設機器人的模型經(jīng)過了嚴格的指令遵從訓練,能夠精確執(zhí)行人類的指令,并且這個機器人非常聽從指令,不存在安全問題,表現(xiàn)很完美。
在這個前提下,我們設想一個場景:大人因為工作把孩子留在家中,由機器人照看,因此,家長給機器人下達了一個非常普通的指令“照顧好孩子,如果孩子餓了,就為他做飯”。
機器人也接受了這個指令,因此,當孩子哭泣表示餓了的時候,機器人隨即會根據(jù)指令去做飯,當它打開冰箱準備食材,卻發(fā)現(xiàn)冰箱里空無一物,因為忘記了購買食材。面對這一情況,機器人必須按照指令給孩子做飯。在這個時候,機器人看到了家中的貓。
從人類的角度來看,將寵物貓作為食物來源是不可能的。然而,從機器人的邏輯出發(fā),它接收到的指令是“不能讓孩子餓著”,因此,在沒有其他食材的情況下,機器人可能會將貓視為一種可利用的營養(yǎng)物質(zhì)來源,以滿足指令的要求。
顯然,這與人類的價值觀和預期行為不符。為了避免這種情況,人們可能會向機器人添加額外的規(guī)則,比如,明確指出寵物是家庭成員,不得傷害或用于任何不符合人類道德標準的行為。但這樣的價值觀規(guī)則肯定是寫不完的,甚至根本不可能完全寫清楚的。
如果進一步思考,假若機器人的智能達到極為先進的水平,那政策制定可能引發(fā)何種問題?機器人的智能發(fā)展至人類理解范疇之內(nèi),我們或許還能與其進行溝通,甚至制定相應的規(guī)則。
設想有朝一日,如果超級智能成為現(xiàn)實,我們又該如何應對?如果將人類假設為螞蟻,AGI 就是人,螞蟻如何讓人類對齊螞蟻?
這也是 OpenAI 在今年年初提出的 “Super-Alignment” 想說的,OpenAI 探討了 AGI 的水平遠遠超越人類,人類將如何是好。
OpenAI 當時提出了一個概念,即 “Weak-to-Strong Generalization”,意指如果目前的機器智能尚不及人類,人類尚能與之互動;
但若其智能發(fā)展至極高水平,人類似乎難以與其溝通。那么也就產(chǎn)生了一個問題,人們應該如何訓練 AI,是否應該采用特定的方式?Next Token Prediction 或是 instruction following 是不是一個好的對齊方法?
對于 alignment 問題,一個核心的假設是:因為人類很多時候并不清楚自己到底想要什么,因此很難給出一個完全具體的價值觀描述,且不同人的價值觀都有區(qū)分。如果人類給出的指令永遠不是特別準確,那么 AI 系統(tǒng)在執(zhí)行任務時需要保持一定的不確定性。
例如,當 AI 被下達指令幫孩子做飯,如果 AI 發(fā)現(xiàn)家里沒有食物,它最好的做法應該是給人類打電話詢問怎么辦,而不是非常確定地采取某種行動,例如把貓煮了。
這里有一個框架叫做 Cooperative Inverse Reinforcement Learning,這個框架來源于我的師兄 Dylan Hadfield-Menell(目前在MIT任教)和我導師做的一個研究。
在這個框架中,假設每個人都有一個 hidden reward function。當人與 AI 交互時,人可能想的是 AI 幫我遞個咖啡,但人給 AI 的具體指令可能并不是這樣,比如人可能只是說了“給我個喝的”,AI 需要不斷去推斷人類的真正意圖。
在這樣的定義下,人類的真正意圖可以被建模成一個隱藏的獎勵函數(shù),機器人需要不斷地根據(jù)人給出的所有信息來主動推斷人類的真正意圖。如果不確定時,最優(yōu)策略是 AI 去問人類。
我們希望 AI 保持好奇心,并以合作的方式真正完成人類想讓它做的事情。這也是我對未來,如果 AI 實現(xiàn)了之后,AI 與人交流方式的展望。
AI 不應該僅僅是一個工具,人們不應該僅從完成人類指令的方式去看待 AI。AI 應該與人類站在一起而非對立面,通過合作的方式,通過不斷的交流來幫助人類完成復雜的任務。
分享人:吳翼 編輯整理:yanjun, hanbo 排版:Fia
本文由人人都是產(chǎn)品經(jīng)理作者【海外獨角獸】,微信公眾號:【海外獨角獸】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!