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