〈Stanford CS329A Self-Improving AI Agents〉-EP-Part 6 | Train Time Scaling/Scaling RL

https://www.youtube.com/watch?v=yVnmHSAy3ck

訓練階段的算力,可以換到參數量換不到的東西。CS329A 第六講要講的就是這句話:把生成、驗證、過濾、微調接成一圈,讓模型從自己的輸出學,一顆 7B 模型在 AIME 這種競賽數學上,就能把 GPT-3.5 的五%推進到五十%以上。但這條迴圈有兩個硬條件,題目要落在模型搆得到的地方,領域要驗得動;而真正讓多數人卡住的不是想法,是 RL 的實作細節,熵、回應長度、reward 的分布,每一格沒調好,模型不是不學,是整條訓練崩掉。前幾堂課談的是推論端的算力、工具與程式回饋、強健的驗證,這一講要把迴圈關起來,用三篇論文把路走一遍:STaR、DeepSeekMath,跟把 GRPO 細節補齊的 DAPO。

AIME 那張表:小模型把大模型的位置佔走

課一開始,講者先換掉尺。前幾堂課用的 MATH 對現在的多數模型來說已經飽和,多數模型也都在上面訓練過,於是改用 AIME 2024 跟 AIME 2025;作業一用的也是這種近期的數學推理題。

同一張 AIME 上,175B 的 GPT-3.5 一般相信大約拿 5%。DeepSeekMath 用 train-time scaling,7B 拿到 51.7%,再加上一些額外的技巧可以到 60%。講者開場時把第三篇的方法講成 DPO,說套在 Qwen-32B 上可以拿到 50%。第一講談 scaling 時,故事是參數變多、能力變強;這裡要講的是另一根槓桿,而且它讓小模型跑到大模型的位置上。

三種訓練範式先分清楚。pretraining 是在網路資料上訓練,課程第一講處理過;fine-tuning 跟 RLHF 是用人類的偏好資料,把 base model 變成助理;test-time scaling 是前幾堂課的重點,多數投票、推論階段多取樣幾次、把多個輸出合起來,或評估模型輸出裡的錯誤再拿來改進。train-time scaling 就是再往前一步:把 test-time 生出來的東西濾過之後,拿回去做進一步的微調。講者說,這堂課如果只帶走一件事,就記這個圈。

為什麼這個圈值得記?因為過去的模型只從網路上的資料學,現在讓它從自己的輸出學,濾得聰明一點,就能再往上推。花在「訓練自己的輸出」上的算力,可以替代模型參數;這跟早期用小模型加大量資料換分數的路子平行。還有一個前提要先講白:直接用 RL 做推理通常行不通,多數時候不是方法錯,是實作細節很難做對,而演算法放大之後,那些小修正會變得極度關鍵。

把 test-time 的輸出接回訓練,前提是這個領域驗得動

課堂上一開始就有人問,train-time 跟 test-time 的算力該怎麼分,有沒有報酬率開始變平的那一點。講者把問題留到第三篇再答。

先看 o1 的兩張圖。縱軸是 AIME 的 pass@1,左圖橫軸是 train-time compute,右圖橫軸是 test-time compute。推論端的算力加上去,pass@1 跟著上去,這是對數線性的關係,前幾堂課已經看過;o1 這張圖多說的是,訓練端的算力加上去,pass@1 也會上去。兩條軸一起加,分數再往上,於是就有了一個可以繞的圈:模型先生出輸出,輸出回饋回去,模型在這張榜上再往上走。

這個圈為什麼在數學上轉得動?因為數學有 verifiability。前面有一整堂課在談強健的驗證,重點就是你有能力分辨哪些輸出是對的、哪些不是,才有辦法把對的那些挑出來餵進 train-time scaling。換到驗不動的領域,這條路就先斷一半。

講者把兩邊的性質對照著講。test-time compute 對使用者的門檻很低,模型訓練好了,多做幾次推論,只要其中有一個答案是對的,而你手上有一個好的 verifier,搜尋幾乎可以無限放大;下一週要講的 AlphaCode 就是這個方向的極端版本,只要搜尋能一直做下去,理論上一定找得到正確解,因為重複取樣本來就會把正確解採出來。train-time scaling 的挑戰不一樣,是你要把它 scale 對,而且這個封閉迴圈裡要有足夠的成功案例,它才轉得動。

台上也有人對那張圖有意見,覺得 test-time 看起來比較划算、有點可疑。講者的回應很直接:那張圖只是某一個時間點的其中一種切法,不同研究不一定有直覺上的優劣,而且「他們的圖不一定都對」。回到基本面,test-time 好用,前提是那個領域的驗證夠強;驗證不夠強的時候,你還是得讓模型自己變強,兩個方向各有各的用處。她給了一個很具體的說法,test-time 像是把義大利麵往牆上丟,而你剛好知道它該黏在哪裡;train-time 是直接教模型,把 pass@1 拉高,讓它更常自己吐出正確答案,但這一圈還是需要驗證。

思考模型在想什麼:分析、拆解、回頭、換路

推理為什麼有幫助,講者用現在這批 thinking model 走了一遍。o 系列、Gemini Flash Thinking,以及其他前沿實驗室的對應版本,解法都是讓模型在給答案之前,先花一段 token 把推理寫出來。這些 token 通常用在四種動作上。

problem analysis,先弄清楚題目在描述什麼。task decomposition,把任務拆成子任務。self-evaluation,回頭看自己剛剛的答案,覺得不對。backtracking,認出錯誤之後退到前面的步驟重做,甚至同時試幾條不同的路,像是一種平行的搜尋。講者強調最後這件事要有意義,模型本身得對「這是不是正確解」有一點感覺。

她拿了幾個 o1 早期版本的例子。一個是請模型寫 Bash 腳本,把某一種格式的字串做轉置再印回來。模型的輸出裡,第一步不是開始解題,而是先確認使用者要的輸入跟輸出格式是什麼,這是 problem analysis。同一個題目換一個片段,模型把解法拆成解析輸入字串、建矩陣、轉置、再照原格式輸出,這是 task decomposition;講者自己說,對這題來講有點殺雞用牛刀,但題目一複雜,這種拆法就值得。第三個例子是化學題,要算某個溶液的 pH,模型算到一半突然發現正確的公式不是它正在用的那一個,於是回頭改公式;就算知識本來就在模型裡,這個自我修正的動作還是真的發生了。

這些能力換到分數上是什麼樣子?在程式、資料分析、數學計算這類有驗證機制的領域,thinking model 對上不是 thinking model 的 GPT-4o,勝率超過 50%。換到個人寫作、編輯文字,勝率的進步就小得多。講者把這個對比收在同一句話上:能驗證、能把圈關起來的領域,進步快得多。

講者也順手回答了一個大家會擔心的問題:為了難題去微調,會不會把簡單題弄壞?通常不會,除非推理鏈整條壞掉、開始重複繞圈,那就是 overthinking。這個答案在後面的 RL 段落裡會再回來一次,因為它其實是 reward 分布跟 KL 的問題。

STaR:生成、驗證、過濾、微調

要教模型推理,第一件事是缺資料。網路規模的語料裡,多數內容沒有推理步驟,有大量推理步驟的來源很少;要人工標,成本高到不現實;想用已知的解題模式自動生成推理,只在一小撮特定領域可行;只給幾個範例做 few-shot prompting,也打不贏直接拿大量資料微調的模型。講者的結論很直白:少量的推理範例不夠用,而沒有推理鏈的大資料集反而還行。

STaR 的切入點很簡單。先準備一小批有推理步驟的範例,用它們去生成解法,例如在一萬題上跑一輪,一萬只是一個代表性數字;接著只留下答案是對的那些,這些題目帶著推理鏈,可以拿去做微調;然後把整個流程再跑一次。跟 test-time scaling 的差別就在那個「只留對的」。

為什麼不能只留對的就好?因為模型卡住的那些題目,如果直接丟掉,模型就學不到怎麼解新題,訊號等於零。STaR 對這些失敗題多了一個動作:把正確答案當提示給模型,要它把推理倒著補出來。講者用的例子是答案 42,人類把答案講出來,模型開始生推理;生出來的推理,加上題目跟答案,一起進訓練資料。關鍵在最後一步:微調的時候不要把提示一起給模型,要讓它看起來像是模型自己直接解出來的。這樣訓練集就能往更難的題目擴,推理能力可以一圈一圈往上墊,而不是卡在模型原本就解得動的那些題。

把 STaR 攤成演算法,就是生成推理、從成功的路徑學習、失敗的用提示去 rationalize、把生成的推理當訓練資料。講者把它形容成很 bare bones 的做法,甚至說它幾乎可以算是一種 off-policy 的 RL。

這套做法站在三個假設上。最終答案正確與否,可以當成推理品質的代理,他們在數學上發現大致成立,所以濾掉錯答案就等於濾掉低品質的推理鏈;代價是模型也一併失去了從錯誤推理鏈學習的機會。第二個假設是,模型被給答案當提示之後,生得出有效的推理路徑。第三個是,一開始的語言模型要強到能從少數範例 bootstrap 起來;如果題目類型離它太遠,這一圈推不動,這也是為什麼要反覆迭代。

6B 的 GPT-J:樣本效率亮燈,GSM8K 上熄火

STaR 的實驗用一顆 6B 的開源模型 GPT-J。訓練上有幾個安排:先做一小段 warm-up,學習率之後固定在常數,外圈跑固定的迭代次數,內圈的步數一輪一輪加上去;他們刻意讓訓練前期慢一點,再慢慢把每一輪內部的工作量拉高。

資料用四種。GSM8K 是大家熟悉的國小數學題,大約九千筆;Common Sense QA 是日常常識的選擇題,有推理可寫;還有多位數加法的算術題;最後一種是他們自己生成的合成資料。

幾組結果值得記。對比直接用數學資料做 supervised fine-tuning,STaR 這條路可以把成績往上推,而且只用了 70 到 87% 的資料,等於有一批沒有正確解的樣本被整批丟掉。另一個限制是它並不是真的 RL,跑多輪之後會開始平掉;講者說 RL 本身有它的難處,但這裡同樣會飽和,迭代次數要抓,還要一些調校。

Common Sense QA 上有一個比較人性的檢查。他們把 STaR 生出來的推理拿給真人看,跟 prompt 資料集裡原本的 few-shot 推理擺在一起,問人比較偏好哪一種,結果是 STaR 的推理大致說得通。同一條線上還有樣本效率:用 rationalization,資料只用了 86%,就達到 72.5% 的準確率,對比之下要達到同樣水準,一般微調得吃下更多資料。講者說這是一顆很小的模型,但這是推理這條路第一次看到有生命跡象。

到了 GSM8K 的數學推理,rationalization 反而沒什麼用。GPT-J 對 baseline 有進步,但幅度不大;直接拿好資料做微調,也能拿到類似的提升。講者給的理由是題目太簡單:模型被要求用 chain of thought 時,實際用掉的計算步數,跟給它 rationalization 提示時差不多,多這一步沒有多換到什麼。GSM8K 對當時的 GPT-4o 已經在能力範圍內,對 GPT-J 也是。即使如此,直接微調跟 STaR 加 rationalization 相比,後者還是有一點收穫。

終點對不等於每一步都對:STaR 的破口與兩個後繼

課堂上有人追問,給提示生出來的那條推理鏈,品質要不要檢查?講者說這篇沒有在 rationalization 那一步做過濾,後續的論文才開始補,例如在上面加一個 process reward model,逐步判斷哪一步說得通。她也把這個缺口直接變成專題題目:如果你不想只靠最後答案當正確性的代理,該怎麼評估推理鏈的品質?

下一個問題更根本:資料裡的答案是誰保證的?這篇的起點本來就是一個有正確答案的 benchmark,訓練集跟測試集都從那裡切出來,正確與否不是模型自己說了算。

還有人問,錯的推理鏈能不能直接當負面教材來學。講者的回答是,這件事到現在都還沒做好。目前能轉動迴圈的前提,是有非零的 reward;現在的做法大多是「對的就留下、錯的就濾掉」,從失敗中學習只有少數論文在試,不是這堂課要處理的範圍。

提示怎麼寫,也不是中性的。few-shot 的範例長什麼樣,模型就照著長,最後訓練資料也長成那樣;這一塊需要 prompt engineering,而它會把模型往某個方向偏。講者把 rationalization 的邏輯收成一句:它是條件在「你已經有答案」這件事上,有了答案,模型才比較有機會把好的推理生出來;沒有答案的時候,它可能很有自信地生出一條錯的。至於推理鏈的品質本身,多數任務根本沒有現成的評估方式,要嘛找人看,要嘛訓練一個 process reward model;而只靠最終答案過濾,中間可能藏著無效的步驟,真的陰性跟偽陽性都會出現。

課堂上最後把問題推到更根本的地方:STaR 的天花板在哪?討論收在幾件事上。它不會做出訓練資料裡沒有的邏輯跳躍,不會自己長進新領域;如果模型連提示都給了還是想不出來,rationalization 也生不出東西,錯誤樣本累積下去只會更糟。講者說這些答案都對,但真正的重點是 base model 本身能做什麼,這一整條線的魔法大多是在那個基礎上長出來的。

也有人問,這種方法對前沿模型有用嗎,為什麼不直接用更強的模型生資料來蒸餾小的就好。講者沒有正面反駁,只把課程的立場講清楚:這幾篇是在示範從零開始能怎麼做,讓大家理解這條路要付出什麼;實務上你當然可以拿前沿模型的輸出來用,那是蒸餾,另外一條路。後面兩篇延伸也順帶提了。V-STaR 是在迴圈裡多加一個 verifier,generator 跟 verifier 一起訓練;Quiet-STaR 把推理步驟從語言空間搬到 latent space,用 MLP 來做。講者的說法是,既然要讓模型在內部想,何必一定要用英文想。

DeepSeekMath:先養能力,再開 RL

第二篇換到數學推理,用的是它自己提出、後來變得很有名的 RL 方法。

它看的 benchmark 是比 AIME 簡單、也更早的 MATH。隨著模型變大,這張榜的分數本來就在往上;DeepSeekMath 出來的時候,一顆 7B 的模型突然跑到很前面。講者說,主要的躍進是他們把 train-time scaling 迴圈裡 RL 那一段做對了。

做對的第一件事,發生在 RL 之前。更早的 Minerva 是在 PaLM 上堆大量的科學與數學資料,來源多半是 arXiv 論文。DeepSeek 的判斷是,訓練在 arXiv 論文上不是關鍵;他們改用 Common Crawl 的網頁,而且起點是一顆已經在程式上練過的 DeepSeek-Coder。理由很直接:從一個程式推理已經被強化過的模型出發,數學也會跟著好。他們把 Common Crawl 裡的數學內容認真篩過,做成 OpenWebMath 這類語料,覆蓋的數學領域更廣,能挖出的 token 也多得多。講者把這一步叫做 RL 之前的 priming:如果模型在某個領域本來就弱,你得先把它的能力養起來。這也是第一次有人把「從程式起家」對數學與工具使用的幫助講清楚;他們也發現,只練 arXiv 並沒有同樣的效果。

能力養起來之後,才是先把數學資料做 supervised fine-tuning,再把 RL 放大。

GRPO:拿掉 critic,用同一題的一組答案當基準

RLHF 時代最常見的演算法是 PPO,即使已經有 verifier 也一樣。PPO 的記憶體問題出在它要同時養好幾份模型:舊的 policy、正在學的新 policy、提供回饋的 critic,還有指派 reward 的 reward model,四份一起放在那裡。7B 還撐得住,想放大就很吃力。

DeepSeekMath 提出的 GRPO 把 critic 拿掉,改成用「同一題的一組答案」當基準,模型份數從四份降到三份。做法是每一題取樣多個答案,用 reward model 打分,再把分數正規化:reward 減掉這組的平均,再除以標準差,得到的值就當作 advantage。講者說,這其實跟 DPO 那一類方法在做的事一樣,都是拿 reward 互相比較;而 reward model 本來就是用比較的方式訓練出來的,所以這種正規化放在 GRPO 的脈絡裡很合理,記憶體也省下來,RL 才有辦法往大規模走。

她沒有把完整的公式寫上黑板,只要大家記住那個直覺:reward 減平均、除以離散程度,就是 advantage 的估計。效果是 7B 在數學上從 46.8 走到 51.7,也是第一個不靠 critic、在 7B 規模跨過五十%的開源模型。

後面這一層是講者認為最值得帶走的觀念。不同的 RL 變體,差別通常只在兩件事上:資料從哪裡來,以及梯度怎麼算。梯度取決於一個梯度係數,還有一個「給定題目時輸出這個答案的機率」;係數怎麼算,各種演算法就不一樣。GRPO 的係數來自這個 group baseline,它對「單一題、只求一個答案」的任務很合適。把幾個方法擺在一起看更清楚:STaR 是生成一次,答對就是 reward 1,答錯就是 0;online rejection fine-tuning 也是邊生成邊篩,錯的就丟掉;GRPO 則是每一題生一組、每一組都打分,advantage 來自組內的平均與離散程度。

reward 沒有分布,模型就沒有東西可以爬

課堂上有人把擔心講出來:為了難題去更新全部權重,會不會把其他題目跟其他 benchmark 弄壞?講者用 reward 的分布回答。如果題目簡單到模型每次都對,reward 永遠是 1,不會有 0;分數沒有分布,正規化就沒有意義,模型也就沒有東西可以學。反過來,如果整批題目都太難,reward 到處都是 0,模型同樣找不到施力點。她要的是一批有訊號的題目,reward 在裡面有分布,模型才有東西可以爬。

KL divergence 是另一個方向的安全帶。有人指出,這件事在原始論文裡的解法就是加上 KL 項:如果模型已經會解的題目被過度最佳化,能力會回退,KL 可以把 policy 拉住,不要偏離它原本就會的東西太遠。講者接受這個補充,並把它跟自己的說法並置:一邊是選題要有好的分布,讓模型有爬坡的訊號,一邊是 KL 讓它不要跑遠。她還補了第三條路:不一定要更新全部權重,後來有一些工作跟 blog 用 LoRA 這類局部更新,也能在加入新能力的同時,把原本的表現留在原地。

reward 從哪裡來也順便被問了一次。如果 reward 只有 0 跟 1,能不能用?可以,但那只是代理,你可以對多個樣本取平均,讓它變平滑;要真的連續分數,就是訓練一個 reward model 來打分。同一段討論裡,講者也講了 DeepSeekMath 這邊一個容易被忽略的結果:這個線上 RL 迴圈主要拉起來的是 majority@k,不是 pass@k;同一題取樣 32 次,變好的是多數答案變一致,而不是模型突然能解開以前解不開的題。講者的評語是,模型變得更一致,不是真的變聰明。

DAPO:在 Qwen-32B 上把 30 調到 50

第三篇處理的是更難的題目、更長的推理鏈。把 GRPO 直接放大到很好取得的 Qwen-32B 上跑 AIME,只有 30%,而且會出現幾個典型症狀:模型的熵崩掉、變得太有自信、訓練不穩,回應長度還會失控地長。同一個榜上,DeepSeek-R1 那篇拿到 47%。DAPO 的工作就是把 GRPO 沒講清楚的細節攤開,一個一個補。第一個動作很單純:overlong filtering,把過長的回應濾掉,光這一步就把 30% 推到 36%。

再來是不對稱的 PPO 裁切。標準的 PPO clipping 把「往上加」跟「往下減」用同一把尺;低機率的 token 想被拉上來只能拉一點點,高機率的 token 一樣會被裁,探索空間就塌掉了。DAPO 讓裁切變成不對稱,允許比較大的上修。圖上的差別很明顯:做了不對稱裁切,準確率比較高,右邊的熵也維持住,沒有崩;沒做的話,熵直接崩掉。講者提醒,熵在這裡是「模型還剩多少探索空間」的代理指標。

第二個是 dynamic sampling。GRPO 是取樣 64 個答案,算出分布,用組平均當基準;DAPO 改成超額取樣,然後把「全對」跟「全錯」的組濾掉,只留下中間有訊號的那些。理由是不想浪費梯度:reward 全對或全錯,advantage 就是零,那些組本來就沒東西可傳;濾掉之後,真正有貢獻的組維持住有效的 batch size。課堂上有人問 64 這個數字是不是太小,講者的回答是這只是一個示範值,實際要取多少,取決於 benchmark 的難度跟 base model 的能力。

第三個是 loss 要下在 token 還是樣本上。如果 loss 是 sample-level,一題一個分數,那一大段又長又爛的回答,跟一句又短又好的回答會拿到一樣的權重;DAPO 改成 token-level,並加上跟長度有關的形狀調整。他們同時盯著熵跟平均回應長度:不做這件事的時候,熵會往上長,回應長度也會失控,做下去才把兩個都壓住。

第四個是 soft overlong punishment。模型碰到難題會一直想,最後被截斷,這種被截斷的推理鏈會帶進很多雜訊;DAPO 在 token 上放一個漸進的懲罰,讓訓練穩定下來,而不是把噪音吃進去。講者補充,其他論文對同一件事有別的做法,例如直接在 RL 迴圈裡把 context length 拉長,DAPO 選的是懲罰函數。

把這些加起來,Qwen-32B 在 AIME 上的分數是這樣走的:GRPO 30%、加 overlong filtering 36%、加不對稱裁切 38%、加 soft overlong punishment 41%、加 token-level loss 42%、最後加 dynamic sampling 到 50%。50% 這個數字已經超過把 DeepSeek-R1 蒸餾到 Qwen-32B 的結果;也就是說,他們是直接在 Qwen-32B 上爬坡,爬出一顆很強的模型。

loss 之外的儀表板:熵、回應長度、飽和

DAPO 這篇留下來的原則,講者覺得比技巧本身更重要:在 RL 裡,loss 本身不足以當進步的代理。要一起看三件事。回應長度有沒有失控;熵是不是落在中間,不要太低也不要太高;以及整批樣本裡「全對」的比例有多高,那個比例決定你還需要取樣多少。

症狀對應的處理也很具體。回應長度爆掉,就要去控制 loss;熵要盯住;跑了一段步數還看不到進步,reward model 很可能已經飽和。講者的結論是,RL 的外圈最佳化本身比 supervised learning 難,這也是為什麼 SFT 跟 RL 的選擇不是純粹的資料量問題:SFT 在手上有一堆高品質資料時更快、更直接,但它不會把推理鏈這種能力帶起來;RL 在 reward 訊號夠強的領域可以用少得多的範例爬坡,代價是真的很難調穩。

三套方法什麼時候用哪一套

課的最後,講者把三篇併成一張選擇表。

手上只有幾百個帶推理的範例、也還沒有 RL 基礎設施,STaR 是合理的起點;在 GSM8K 這類簡單推理題上能看到進步,幅度不算驚人,但至少還留在模型能力範圍內。如果你有一顆夠好的 base model,也願意先用好的 instruction 資料把它養過一遍,GRPO 是一個就算記憶體不夠、GPU 數量有限也能跑的演算法,在標準數學推理題上已經被證明有效。推理鏈會拉得很長、題目難到需要 state-of-the-art,才需要 DAPO 這一層:把 RL 演算法跟基礎設施裡的每一個變數都控制住,這對 AMC、IMO 這種競賽級題目很有用。

三套都會改善的東西也要講清楚:算力加上去,majority@k 會變好;答案的格式通常會變整齊;模型在多步之間會更連貫。但三套都還沒有動到最底層的那件事,沒有教會模型解全新的問題,也沒有讓它大幅跨出原本的領域。講者說,pass@k 要動,等於要模型的基本能力跳一階,而歷史上這種跳階通常來自某種突破,或某個維度上的規模化,不是迴圈多跑幾輪就會發生。

回到課堂一開始那個「算力該分給哪一邊」的問題,講者整場給的答案不是一個比例,而是兩個前提:驗證夠不夠強,以及迴圈裡有沒有足夠的成功案例。還有一個跨三篇的前提要一直記著,推理品質、整條 RL 迴圈,全都取決於模型本身有多會想,以及有沒有一個 verifier 或 reward model 在旁邊。reward model 太弱,模型爬不動;模型太強,reward 會被 hack 掉。這也是為什麼上一堂課談的程式應用特別好做,因為那裡有真的可驗證的 reward:數學跟程式有最終的正確答案,再加上執行回饋跟 unit test。問題是,這種地方有多少?以及,一個 verifier 不夠的時候,能不能用一整組 verifier 互相補位?講者提到課上已經看過的 Weaver,就是這個方向。

還沒解完的:pass@k 不動、失敗學不會、reward 會飽和

講者收在一串還沒解的問題上,也承認 train-time scaling 現在還是很活躍的研究區。

第一個是那個怪現象:為什麼線上 RL 會把 majority@k 拉起來,pass@k 卻不動?第二個是那些看起來很聰明的行為,backtracking、自我評估、自我修正,到底是模型真的長出了新行為,還是這些模式本來就在,只是變得更常見?第三個是失敗的資料。現在多半的做法是直接把錯的濾掉,只有少數論文試著從失敗裡學到東西;怎麼用失敗的推理鏈又不讓訓練崩掉,還沒有好答案。

她點的三個可能方向也很清楚:資料面,怎麼生成更好的訓練資料;演算法面,怎麼讓 RL 對 reward model 的雜訊更有韌性、該用什麼樣的 reward;以及把 STaR 的 rationalization 跟 DPO 那一類方法接起來。

最後有人問到前沿實驗室現在的配方。RL 佔整個訓練的比例,去年大概在 99 比 1 那種量級,最近長到可能 5% 左右;Grok 4 對外說自己用了 50% 的 RL,但講者說那個比例並沒有換到預期的大跳躍,因為瓶頸在別的地方:reward 不夠強,或 reward 裡有雜訊。課堂上另一個人問到 AMC、USAMO 這種題庫很小、又要小心資料洩漏的競賽資料,沒有足夠資料怎麼確保驗證訊號。講者的回答把問題換了一個問法:不是「資料夠不夠多」,而是「手上的資料夠不夠讓模型爬坡」,會不會在 dynamic sampling 的時候把有訊號的組整批濾掉。RL 本身資料效率高,要的資料量沒有那麼大;驗證訊號則是另一件事,verifier 可以用一整組來補,而不是只能靠一個。