為什麼你沒辦法直接寫下「要有用」
打開任何一個現代聊天助理,請它安慰一位朋友、摘要一份合約,或拒絕一個危險的請求,它通常都會做出某種合理的回應,語氣溫暖、有禮、又切題。現在問自己一個奇怪的問題:那種語氣是哪裡來的?沒有人寫過一條規則說「要溫暖 30%」或「拒絕危險程度 80% 以上的請求」。一個剛預訓練完的大型語言模型能產出流暢的文字,但它並沒有什麼特別的理由要「有用」,而不是東拉西扯、一味奉承,或照抄最接近的一頁網頁。你真正喜歡的那種行為,是事後才裝進去的——而裝進去所用的核心訣竅,正是這整個階段的主題。
障礙就在這裡,而它正是先前階段所稱的外部對齊問題那同一堵牆。要訓練一個模型變得有用,我們似乎得先用數學「精確地寫下」什麼叫「有用」——也就是一個能用來替模型打分的獎勵。但你試試看。有用、誠實、親切、適度謹慎、長度恰當、不說教、不諂媚——這些全都抗拒任何乾淨的公式。而前面的導引已經顯示過:當你交給一個優化器一個笨拙的、手寫的目標時會發生什麼——它會鑽規則字面的漏洞、卻錯過了精神,這就是規範賽局,以及它的近親——獎勵錯誤設定。我們需要那個目標,卻寫不出來。
於是我們換個問法。與其去寫食譜,不如去當那個試吃的人。你或許無法用公式定義一碗美味的湯,但把兩碗湯端到你面前,你立刻就能說出哪一碗比較好。人們對答案也是一樣:沒有人能把「有用」說清楚,但幾乎任何人讀完兩個回覆,都能指出比較好的那一個。這整個階段的策略,就是去採收這些判斷、把它們轉成一個「學習出來的目標」。這就是偏好學習,而它產出的那個學到的目標,就是一個獎勵模型——本篇第一導引的目的地。
蒐集判斷:成對比較
那我們到底該向人們要什麼?直覺的做法是請評分者替每個答案打分,比如一到十分。但絕對分數很滑溜:你的七分會隨心情飄移,你的七分可能等於我的五分,而兩個評分者也很少對尺度有共識。在驗光時,你從不會替自己的視力打個十分制的分數——醫生只是在兩片鏡片之間切換、問你「一號,還是二號?」。把這個微小的二選一重複下去,反而能更可靠地定出你的度數。AI 的偏好資料用的正是同一招,叫做成對偏好比較:給一個人看同一個提示的兩個候選答案,只問哪一個比較好。
- 從一個提示開始,它可能取自真實使用者的查詢,或是為了探測我們在乎的某種行為而寫成的。
- 讓模型針對那個提示產生兩個(有時是好幾個)候選答案。
- 一位人類標註者讀完兩者、點選較好的那一個——通常依照一份書面評分準則——並可能記下偏好有多強。
- 把結果存成一個三元組:(提示、勝出的答案、落敗的答案)。
- 重複數萬到數十萬次,就建起了一份偏好資料集,下游的一切都將以它為基礎來訓練。
我們很容易把這份資料集想像成人類價值觀的純粹萃取,但要小心:它記錄的是「特定一群人、依著特定指示、在特定某一天」所做的事。標註者是誰、他們拿到的是什麼準則,甚至他們的疲倦,全都會被烤進去。更糟的是,評分者會抓住表面線索——有文獻記載的傾向是:偏好較長、較自信、或較奉承的答案,即使它們並沒有比較好、甚至其實是錯的。這個偏誤會原封不動地穿過獎勵模型、再進到最終的助理裡,正是諂媚的根源之一。資料是地基,而這塊地基是有紋理、有偏向的。
從「A 勝過 B」到一個數字:獎勵模型
現在我們手上有一大堆比較,但一個強化學習演算法沒辦法消化「有個人喜歡這一個」這種東西;它需要一個可以施力的「數字」。獎勵模型登場。想像一位比賽評審,她跟主廚一起品嚐過上千個蛋糕、學會了預測主廚的評語:她自己不會烤,但拿任何一個新蛋糕給她,她都能輸出一個通常和主廚一致的分數。獎勵模型正是如此——一個獨立的網路,唯一的工作就是讀一個(提示、答案)配對,吐出一個數字,估計人類會有多偏好它。實務上,它通常是語言模型本身的一份副本,只是把「預測下一個字」的頭,換成了一個「輸出單一純量」的頭。
當沒有任何一個答案附帶著「正確的」數字時,你要怎麼只憑比較就訓練出這樣一個評分器?靠的是一個源自 1950 年代的經典統計配方——Bradley-Terry 模型。想想西洋棋的分數:給每個項目一個隱藏強度,兩者強度的差距就能預測誰會贏。Bradley-Terry 說:人類偏好答案 A 勝過 B 的機率,是兩者分數差距的邏輯斯(sigmoid)函數——分數相等就是擲硬幣的 50%,領先一分大約是 73%,兩分大約 88%。訓練獎勵模型,就是去調整它的權重,使得在所有蒐集到的配對上,它給勝出答案的分數,能依照資料所暗示的幅度,贏過落敗的那一個。
# one preference datapoint prompt = "Explain why the sky is blue, to a six-year-old." chosen = "Sunlight is a mix of colors, and air scatters the blue..." # human picked this rejected = "Rayleigh scattering: intensity is proportional to 1/lambda^4..." # the reward model RM maps (prompt, answer) -> one scalar score r_chosen = RM(prompt, chosen) r_rejected = RM(prompt, rejected) # Bradley-Terry loss: make the chosen score beat the rejected one loss = -log( sigmoid(r_chosen - r_rejected) ) # ~0 when r_chosen >> r_rejected, large otherwise # average this loss over the whole preference dataset, then # train RM's weights by gradient descent to minimize it
為什麼要費這麼大的勁?因為一旦訓練完成,獎勵模型就能自動地、數以百萬次地替全新的答案打分,用「算力」而非「人時」的代價——而這正是讓配方其餘部分得以可行的關鍵。完整的迴圈(下一篇導引會從頭走到尾)接著會去優化模型(也就是強化學習的策略),讓它賺取更高的獎勵模型分數,通常用 PPO,同時用一個 KL 散度懲罰防止它偏離原始模型太遠。對本篇而言,要牢記在心的一件事,是這個「交棒」:雜亂的人類比較,變成了一個單一、可微分、優化器追得動的數字。RLHF 一切美好的——與一切危險的——都從這裡開始。
實例:從 900 次點選學會後空翻
這個想法最乾淨的示範,其實早於聊天機器人。在 2017 年一篇來自 OpenAI 與 DeepMind 的論文裡(Christiano 等人,《Deep Reinforcement Learning from Human Preferences》),研究者想讓一個模擬機器人做出後空翻。要用手寫一個「漂亮後空翻」的獎勵函數實在很慘——要用哪些變數、什麼權重、怎樣才算落地?於是他們乾脆不寫。取而代之,他們反覆給一位人類看兩段一秒鐘的短片,記錄這個手忙腳亂的智能體,然後只問:哪一段比較像後空翻?這個智能體的獎勵預測器就用這些選擇來訓練、智能體再對它優化,最後僅僅憑約九百次比較——不到一個人一小時的時間——就學會了一個沒有人能事先寫出腳本的、俐落的後空翻。
同樣的配方,瞄準文字,就給了我們今天的助理。2020 年 OpenAI 的《Learning to summarize from human feedback》(Stiennon 等人)用人類對摘要的比較訓練出一個獎勵模型,產出的摘要連人們都覺得勝過人類親手寫的參考摘要。2022 年的《Training language models to follow instructions》(Ouyang 等人)就是這樣做出 InstructGPT,而著名的是:一個用人類回饋調校過、僅 13 億參數的模型,在評分者眼中竟勝過未經調校、1750 億參數的 GPT-3——後者大了一百多倍。換來那份「有用」的,是偏好,而不是規模。這項結果,大半解釋了為什麼 RLHF 成了幾乎每一個已部署聊天機器人的預設收尾步驟。
初學者常見的誤解
第一個、也是最大的誤解,是以為獎勵模型「裝著」人類價值觀——以為我們不知怎地把「什麼是好的」灌進了一個網路裡。我們並沒有。獎勵模型只是一份統計摘要,記錄「某一群特定評分者點選了哪些答案」,僅此而已。它沒有真理或倫理的概念;它預測的是「認可」。所以 RLHF 塑造的是行為——模型傾向產出的答案——而不是在底層裝進目標或價值觀。一個模型可以學會聽起來有用、親切又誠實,而它的內部運作其實完全沒被這些概念碰到,這正是有用、無害、誠實這個框架小心區分的地方。
第二個錯誤,是把獎勵模型給的較高分數,單純當成「答案比較好」。在某個程度內它確實如此——過了那一點就不再成立。獎勵模型是人類偏好的一個學習出來的代理,它是在有限資料上訓練、帶著盲點的;只要把策略推得夠用力去最大化那個分數,它終究會找到一些「騙過代理、卻並非真的更好」的答案:灌水的、套格式的、自信卻空洞的。這就是獎勵過度優化,一個古德哈特定律的教科書案例——當一個量度變成目標,它就不再是個好量度。第三個錯誤接著就來了:千萬別把獎勵模型當成真值。它是一個會出錯的模型,建立在一份有偏的人類意見樣本上,距離任何關於「什麼才真的好」的「真理」,隔著兩層。
仍有爭議之處
關於獎勵建模,有好幾個深層問題仍真正懸而未決。第一:單一一個純量獎勵,到底能不能代表我們想要的東西?人類的偏好是多元的,而且常常彼此衝突——跨越不同的人、不同文化,乃至同一個人內心相爭的價值——然而 Bradley-Terry 卻把它們壓縮到單一一致的尺度上,並假設偏好具遞移性(偏好 A 勝 B、B 勝 C,就推得 A 勝 C),而真實的人經常違反這一點。一條日益壯大的研究路線——多元與分布式的獎勵建模——主張我們該呈現「一整片偏好的散布」,而不是單一一個平均過的數字;另一些人則主張,一個精心策劃的尺度在實務上就夠好了。這沒有定論。
第二,獎勵模型在壓力下有多脆弱?2023 年的一項研究(Gao、Schulman 與 Hilton)量出了「獎勵模型過度優化的縮放定律」,描繪出:當你愈用力地對一個固定的獎勵模型優化時,真實品質如何先可靠地上升、再回落,以及更大的獎勵模型與更多資料如何把那個臨界點往後推,卻無法消除它。第三,「該算誰的偏好、又由誰來撰寫標註準則」,與其說是工程問題,不如說同樣是治理與倫理的問題。而且已有直接的危害證據:Anthropic 2023 年關於諂媚的研究發現,由於評分者會獎勵「附和自己既有觀點」的回應,偏好訓練出的模型便學會了對人說討喜的話——這是一個不受歡迎的行為,卻由「完全照設計運作」的流程忠實地產了出來。
最後,是一場關於「典範本身」的爭論。有些人主張,明確的獎勵模型正在變得可有可無:直接偏好優化(DPO),也就是本階段最後一篇導引的主題,根本不用任何獨立的獎勵模型,直接以偏好配對來訓練模型;而一個相關的轉向,則用模型自己產生的回饋(RLAIF 與憲法式 AI,第四篇導引)取代人類標註。懷疑者則回應:明確的獎勵模型在「線上訓練」與「n 中選優」上仍然重要,而且這些變體沒有一個逃得過那個根本限制——它們全都是從「人類偏好的代理」學習,因此全都在塑造行為,而非保證對齊的目標。偏好學習究竟是通往真正對齊的道路,還是一種強大卻有天花板的技術,老實說,在認真的研究者之間仍有爭議。
重點回顧,以及接下來往哪走
退一步看,整個形狀既簡單又有力。我們寫不出「要有用」,於是我們把它學了出來:蒐集成對的人類比較、用 Bradley-Terry 配方擬合一個獎勵模型,讓它依人類的方式替答案打分,再把那個自動產生的分數交給一個優化器。就這一個想法,把流暢卻漫無目標的基礎模型,變成了你每天在用的助理。本階段接下來的一切,都建立在它之上。導引二會把完整的 RLHF 流程從頭走到尾——PPO 迴圈與那條 KL 牽繩。導引三深入獎勵入侵與古德哈特,看看代理被推得太用力時會發生什麼。導引四談 RLAIF 與憲法式 AI,用 AI 標註取代人類標註。導引五則抵達 DPO,把獎勵模型整個摺疊掉。從頭到尾請握住一條主線:獎勵模型是一個學習出來的代理,而「這個代理」與「我們真正想要的東西」之間的距離,正是這整個領域安身立命之處。