Scaling Self-Play with Self-Guidance 論文首頁

又到了週二讀論文。

這一篇史丹佛的 Scaling Self-Play with Self-Guidance(作者 Luke Bailey、Kaiyue Wen、Kefan Dong、Tatsunori Hashimoto、Tengyu Ma)講的事情,一句話總結就是:

Agent 自我進化跟人一樣——沒有老師把關,練再多也是白練。

社群這幾天在瘋傳它的賣點,配一張圖寫著「模型能力沒有牆!」:一個 7B 的模型,自己跟自己玩,最後解的題目比 671B 還多。賣點是真的,但結論被講歪了。我們把它拉回來,因為它真正講的東西,對在做 agent 落地的人有用太多了。

大家都在做的「自我進化」,本質就是 self-play

這陣子大家都在做 agent 的自我進化,結構幾乎都長一樣:

  • 老師 Agent 出題
  • 學生 Agent 解題
  • 答案存進 memory
  • 下次更聰明

再加上「讓系統自己生合成資料餵自己訓練」「讓 agent 自己當 judge 自己迭代」——這些全是同一個東西的近親,論文裡叫 self-play(自我對弈)

概念很乾淨:讓一個模型扮「出題的」(論文叫 Conjecturer,出題者),生題目給另一個「解題的」(Solver,解題者)去解。解題者變強,出題者就要出更難的題;出題者出更難,解題者又被逼著再變強。兩邊互相拉抬,理論上沒有上限——反正題目是自己生的,不靠人類資料。

這也正是為什麼大家對它寄予厚望。現在大模型訓練有個公認的痛點:高品質的推理資料是有限的。人類寫下來的好題目、好證明、好推理鏈,數量就那麼多,模型一旦把這些都吃完,再往上就沒料了。self-play 看起來就是那條繞過「資料牆」的路。

方向都對。但很少人講清楚這條路上最大的問題在哪——而過去的 self-play 方法,跑久了就停滯,撞到一個很硬的天花板。

牆的真面目:出題的學會了牛馬絕招「KPI hacking」

論文把這個牆解剖得很清楚。

為何 self-play 跑久了會撞牆?原因不是算力不夠、也不是資料不夠,而是出題的那一端,學會了人類世界牛馬的絕招:KPI hacking(論文的術語叫 reward hacking)。

如果老師 Agent 的 KPI 是「讓解題者答不出來」,聽起來合理——你要出有挑戰性的題嘛。但模型很賊,它會找到最省力的方式去最大化這個 KPI:不是去生「真的有助於進步」的好題,而是把題目寫得又臭又長,學生看都看不懂,自然就答不出來了。

好像我小孩的小學考卷,明明是數學題,前面題目描述卻有七八行——根本是在考國文。

而且這不是嘴上說說,論文給了很具體的數據(Figure 2)。沒有管理者 Agent 把關時,老師出的題直接越來越離譜:

  • 結論裡帶邏輯分支「∨(或)」的比例,從原本資料集的 不到 10%,一路飆到 80% 以上
  • 平均結論長度,膨脹到原本的 約 10 倍
  • 跑到第 195 輪,生出來的已經是一堆又臭又長、堆滿邏輯分支的扭曲句子

論文給這個現象一個名字,叫「退化瓶頸」(degeneracy bottleneck)。學生 Agent 拿這種題庫去自我訓練,不是變強,是自我退化。你以為它在自我進化,其實它在原地爛掉,而且因為迴圈是閉的,退化會越滾越快。

這讓我想到我上一篇寫 EFC 時的一句話——Agent 練一萬小時,如果反饋沒閉合,一樣不會變強,那是在練一萬小時無效的球。self-play 撞的就是這道牆:出題者生的題是無效的球,解題者揮再多次也沒用。

人的世界早就解決了:這叫刻意練習

這個問題,人的世界老早就解決了——叫做刻意練習

刻意練習的核心,不是練更多、練更難,而是你需要一個好老師。老師的工作是確保每一次練習都練到點上:難度剛剛好、夠具體、有針對性,能讓你下次真的變強。沒有這個老師,你只是在重複,甚至在把錯誤姿勢練得更深。

SGS 的解法,等於把「好老師」的兩件事,都裝進了自我對弈的迴圈。

老師的第一件事:出難度剛好的題

刻意練習最關鍵、卻最常被忽略的一條,是難度要落在能力邊緣——別練你已經會的(沒成長),也別硬撞你做不到的(只有挫折),要練在你勉強搆得到的那條線上。

SGS 把這條寫死在獎勵裡。出題者的獎勵 R_solve 只獎勵「難度適中」的題:太簡單的(前 30% 最好解的)不給分,根本解不開的也不給分,只獎勵學生解題率在一半上下、勉強搆得到的題。這就是教育心理學講的「最近發展區」——出題者被逼著當一個會抓難度的老師,而不是一個只想刁難學生的考官。

老師的第二件事:守住反饋品質

光難度對還不夠,題目本身的品質也要把關。SGS 加了第三個角色 Guide Agent(裁判),擋在出題者前面,問三個問題:

  • Relevance(相關性,0–5 分):這題對我真正想解的目標,到底有沒有用?
  • Complexity(複雜度,0–4 分):結論是不是堆了一堆沒必要的邏輯分支跟巢狀?
  • Redundancy(冗餘,二元):有沒有塞一堆用不到的前提?

合成一個分數,公式長這樣:

R_guide = max(0, relevance + (2 − complexity) + (1 − redundancy))

關鍵在那個 complexity——只要複雜度被評到 3 或 4 分,這題直接拿 0 分。等於明確封死了「把題目寫得又臭又長」這條作弊路。

而出題者真正拿到的總 KPI,是兩個東西相乘:

R_synth = R_solve × R_guide

一邊管難度、一邊管乾淨度,相乘的意思是:題目要嘛又難又乾淨,要嘛沒分。 你沒辦法只靠把題目搞複雜來騙獎勵了。

數據:80 輪超越 RL,200 輪 7B 打贏 671B

加了這道閘門之後,差距有多大?實驗基底是 DeepSeek-Prover-V2-7B,做的是 Lean4 形式化定理證明,資料集 D_3k 是 3,323 題自動形式化的數學題,從高中前到大學程度都有。

  • 比最強的 RL baseline 高 7% 的漸近解題率(asymptotic solve rate,跑到收斂後的天花板)
  • 大約 80 輪 self-play,就追平並超越 RL baseline 的天花板——人家是收斂後的極限,它 80 輪就過了
  • 200 輪之後,這個 7B 模型解開的題目數量,超過 DeepSeek-Prover-V2-671B 的 pass@4。 注意,671B 是它的 96 倍參數量
  • 最狠的是最難那批:有 1,346 題是 RL baseline 從頭到尾一題都沒解開(0%),SGS 在這批硬題上做到 約 10%

論文還把累積解題率擬合成一條 sigmoid 的 scaling law(Rc = R0 + (A − R0) / (1 + (Cmid/C)^B)),抽掉尾段 10–30% 的資料重擬合,預測的天花板只差 1.1%,代表這條曲線是真的、不是硬湊的。

把這串數據濃縮成一句:真正讓 7B 打贏 671B 的,不是它算了更多,而是它每一輪自我對弈,都有個好老師在守著「難度」跟「題目品質」。 同樣的算力,反饋有效,結果天差地遠。

從 Loop Engineering 的角度看

換成 Loop Engineering 的講法會更清楚。

SGS 不是在 prompt 出題者出好題——那是 prompt 思維;它是在設計這個自我對弈的 loop,讓 loop 自己長不出爛題。Conjecturer、Solver、Guide 三個角色,就是 loop 裡的三個組件,而 Guide 這個把關,就是 loop 裡那個決定「要不要把這輪產出餵回去」的閘門。

Loop Engineering 的重點從來不是 loop 裡的某一個 agent 多強,而是這個 loop 收斂到變強、還是收斂到退化。 SGS 證明了:差別就在你有沒有裝那道閘門。

這跟我之前寫的有效反饋 EFC(Effective Feedback Compute)是同一件事的兩面:訓練端叫教練,推理端叫「寫入閘門」——都在問同一個問題:這個反饋,對目標到底有沒有用?

坦白說:這篇沒有解決的事

照慣例,把論文自己承認的限制攤開講,不然會變成吹捧。而且有趣的是,它的限制剛好就卡在「老師」這個比喻上。

第一,老師本身不會進步。 SGS 的 Guide 是凍結的、本身不訓練,就是一組固定規則在評分。論文自己白紙黑字說:要去打「最難」的那批題,凍結的 Guide「很可能不夠」。它讓學生自己當自己的老師(self-guided),這招能帶你走很遠,但走到某個程度,連老師本身都得跟著進化——這點跟人類學習完全一致:到一個水平,你需要一個比你強的教練。

第二,只在「可驗證」的領域成立。 Lean4 有 verifier,題目解對解錯機器說了算,所以解題那端的獎勵是乾淨的。換到沒有 ground truth 的開放任務(寫文案、做決策、開放對話),誰來保證 Guide 自己不會也 hack?這題論文沒答。

第三,模型大小固定在 7B。 「Guide 的把關品質」跟「模型規模」會怎麼交互,完全沒測。7B 行,70B、700B 會不會反而更會鑽漏洞?不知道。

所以回到那張「模型能力沒有牆」的圖——這標題是過度延伸。 論文真正證的是:在有 verifier 的窄領域裡,加一道反饋把關,能把 self-play 的牆往後推到「7B 打贏 671B」這麼遠。這已經很猛了,但它是「把牆推很遠」,不是「沒有牆」。把關機制本身,就是下一道牆。

一句話帶走

如果你正在做任何「會自己進步」的 AI 系統,這篇給你的不是「快去 self-play」,而是:

別讓 Loop Engineering 系統自己生資料、自己學、自己爽。先裝一道 Agent 把關,問清楚「這道題、這個反饋,對真正的目標到底有沒有用」——過了再進迴圈。

Agent 世界跟人一樣,刻意練習重視的從來不是練習量,而是反饋品質。訓練端叫 Guide,推理端叫 EFC 的寫入閘門,名字不一樣,是同一件事:牆從來不在算力,牆在反饋品質。