清華&通院推出”絕對零”訓練法,零外部數據大模型自我博弈解鎖推理能力
基爾西 發自 凹非寺
量子位 | 公眾號 QbitAI
不用引入外部數據,通過自我博弈(Self-play)就能讓預訓練大模型學會推理?
來自清華、北京通用人工智能研究院和賓夕法尼亞州立大學的研究人員,提出了一種名為「絕對零」(Absolute Zero)的訓練方式。
這種方法通過讓大模型根據推理目標,自己生成並解決任務,便可以獲得推理能力。

測試中,用「絕對零」訓練出的模型,表現已經超過了用專家標註樣本訓練的模型。
並且「絕對零」方法只需在代碼環境中訓練,但可以讓模型在數學推理上也取得顯著進步。

這項研究也在Reddit上引發了討論,開帖轉載的網民驚歎:會自我進化的AI已經被解鎖了?

在出題-做題中自我學習
「絕對零」採用了一種自我博弈的學習範式。在這個範式下,一個統一的語言模型扮演Proposer和Solver兩個角色。
Proposer負責生成新的推理任務,Solver負責解決這些任務。通過兩個角色的交替和協同,模型可以自主地構建學習任務分佈,並在求解任務的過程中不斷提升推理能力。

「絕對零」將所有的推理任務統一表示為(p,i,o)(即程序,輸入,輸出)的三元組形式。
這裏的程序是一段可執行的代碼,輸入是該程序的輸入數據,輸出是程序在給定輸入下的輸出結果。
通過這種形式化的表示,原本抽像的推理任務被轉化為了一個個具體的程序設計問題,語言模型可以通過生成和操作代碼來完成任務的生成和求解。
根據p、i、o是否已知,「絕對零」將推理任務劃分為三種基本類型——溯因(Abduction)、演繹(Deduction)和歸納(Induction):
-
溯因任務:已知p和對應的o,求可能的i。這類任務考察模型根據結果反推條件、理解代碼語義的能力。
-
演繹任務:已知p和i,求o。這類任務考察模型運行和理解代碼邏輯的能力。
-
歸納任務:已知一組i-o樣例,求一個統一p。這類任務考察模型歸納總結規律、生成代碼的能力。

在自我博弈的訓練開始前,「絕對零」需要一個初始的任務集合作為種子(如果基礎模型足夠強也可以不用)。這個種子集合通過基礎語言模型生成一些有效的代碼(p,i,o)得到。
當種子集合為空時,「絕對零」會使用一個預定義的「zero triplet」作為起點,實際上就是一個簡單的恒等函數:

在每一輪迭代中,Proposer首先根據當前已有的任務集合和給定的任務類型,生成一個新的推理任務。
具體來說,它會先從歷史任務中采樣一些相關的例子作為參考,然後利用語言模型的生成能力,產生一個新的(p,i,o)三元組。
-
對於abduction任務,需要生成p和o,但不生成i;
-
對於deduction任務,需要生成p和i,但不生成o。
-
對於induction任務,需要生成一組輸入輸出對(i,o),但不生成p。
另外對於induction任務,Proposer還會從歷史的abduction和deduction任務中采樣一個程序p,然後生成與之匹配的N個輸入輸出對(i,o),以及一段自然語言描述。
這種做法可以為induction任務提供更豐富的上下文信息,幫助Solver更好地理解和求解任務。
在生成過程中,Proposer會嘗試控制新任務的難度和新穎度,以確保生成的任務對於當前的Solver來說既有意義又具備挑戰性。
具體來說,「絕對零」引入了一個「可學習性」(learnability)的概念,用於估計一個任務對於當前的Solver模型來說有多大的學習價值。
它的計算方法是讓Solver試著解決這個任務並統計其成功的概率。如果任務太簡單或太難,那麼這個任務的可學習性就會很低。Proposer的目標就是生成可學習性適中的任務。

生成出的新任務將被送到一個獨立的代碼執行器中進行驗證,執行器會實際運行Proposer生成的程序,檢查其是否滿足以下條件:
-
語法正確性:程序能夠在Python解釋器中正常執行,沒有語法錯誤;
-
安全性:程序沒有使用任何不安全的操作或庫,如文件讀寫、系統調用等;
-
確定性:程序在相同的輸入下,總是產生相同的輸出,沒有隨機性或不確定性。
通過這三個條件的檢查,執行器可以濾除絕大部分無效或有害的任務。
對於通過驗證的任務,執行器還會計算「可學習性獎勵」,作為對Proposer行為的反饋。
最後,所有通過驗證的任務會被存入一個任務buffer池中,供後續的訓練使用。
在篩選完推理任務後,「絕對零」會轉換為Solver的角色,開始解決這些任務,具體方式同樣會根據任務的類型而有所不同:
-
對於abduction任務,Solver要根據給定的p和o推斷可能的i。這個過程類似於「反向執行」程序;
-
對於deduction任務,Solver要根據給定的p和i推斷出o。Solver需要模擬程序的執行過程,得出最終的輸出結果;
-
對於induction任務,Solver要根據輸入輸出對(i,o),推斷可能的程序p。Solver需要從有限的樣本中總結出一般性的規律。
在求解任務的過程中,Solver可以利用語言模型已有的知識(如常見的算法模式、編程慣例等)來輔助任務的求解。
Solver生成的解會再次通過代碼執行器進行驗證。執行器會檢查Solver給出的輸入、輸出或程序是否真的滿足任務的要求。
如果滿足,則視為Solver成功解決了任務,並給予相應的獎勵;否則視為Solver失敗,不給予獎勵或給予懲罰。
這個獎勵信號會作為Solver行為的反饋,幫助Solver學習如何更好地解決各種類型的推理任務。
同時,Solver的解決方案也會被記錄下來,作為未來生成和求解類似任務的參考。

在每一輪迭代結束時,「絕對零」都會使用Proposer和Solver收集到的反饋信號,對整個模型進行聯合優化和更新,使得Proposer生成的任務更有利於學習,Solver解決任務的能力也越來越強。
經過多輪迭代,「絕對零」最終可以收斂到一個很好的均衡點,在這個點上,Proposer生成的任務恰好匹配Solver的能力,Solver又能夠從這些任務中學到足夠多的知識。
數學代碼任務性能雙提升
在編程任務上,研究者使用了HumanEval+、MBPP+和LCB三個數據集。
與未經「絕對零」訓練的版本相比,「絕對零」將Qwen-2.5-7B-Coder的HumanEval+通過率從80.5%提高到了83.5%,將MBPP+的通過率從69.3%提高到了69.6%,將LCB的通過率從19.9%提高到了31.7%。
在數學推理任務上,研究者選取了6個具有代表性的數據集進行評測,包括AME’24、AME’25、AMC’23、MATH500、Minerva和Olypiad。
「絕對零」在這6個數據集上的平均準確率達到了39.1%,比未經「絕對零」訓練的baseline高出了15.2個百分點。
其中,在MATH500數據集上,「絕對零」的準確率達到了72.6%,超出baseline 22.6個百分點;在AMC’23數據集上,「絕對零」的準確率為57.5%,超出baseline 17.5個百分點。

除了Qwen-2.5-7B-Coder,研究者還在其他幾個預訓練語言模型上測試了「絕對零」的性能:
-
Qwen-2.5-3B-Coder:應用「絕對零」後編程任務平均通過率從51.2%提高到了54.9%,在數學任務上的平均準確率從18.8%提高到了26.5%;
-
Qwen-2.5-14B-Coder:應用「絕對零」後,在編程任務上的平均通過率從60.0%提高到了63.6%,在數學任務上的平均準確率從20.2%提高到了43.0%;
-
Llama-3.1-8B:應用「絕對零」後在編程任務上的平均通過率從28.5%提高到了31.6%,在數學任務上的平均準確率從3.4%提高到了6.8%。
通過對不同規模和類型的語言模型的測試,研究者還發現「絕對零」的性能提升與模型規模呈正相關——參數越多的模型,訓練後的性能提升也越大。
例如在數學任務上,30億參數的Qwen-2.5-3B-Coder模型提升了7.7個百分點,而140億參數的Qwen-2.5-14B-Coder模型則提升了22.8個百分點。
這表明「絕對零」能夠有效地利用大模型的能力,實現更高的推理性能提升。

https://arxiv.org/abs/2505.03335
參考鏈接:
https://www.reddit.com/r/singularity/comments/1kgr5h3/selfimproving_ai_unlocked/