清華&通院推出”絕對(duì)零”訓(xùn)練法,零外部數(shù)據(jù)大模型自我博弈解鎖推理能力
只在代碼環(huán)境中訓(xùn)練,數(shù)學(xué)能力也能提升
克雷西 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
不用引入外部數(shù)據(jù),通過(guò)自我博弈(Self-play)就能讓預(yù)訓(xùn)練大模型學(xué)會(huì)推理?
來(lái)自清華、北京通用人工智能研究院和賓夕法尼亞州立大學(xué)的研究人員,提出了一種名為“絕對(duì)零”(Absolute Zero)的訓(xùn)練方式。
這種方法通過(guò)讓大模型根據(jù)推理目標(biāo),自己生成并解決任務(wù),便可以獲得推理能力。

測(cè)試中,用“絕對(duì)零”訓(xùn)練出的模型,表現(xiàn)已經(jīng)超過(guò)了用專家標(biāo)注樣本訓(xùn)練的模型。
并且“絕對(duì)零”方法只需在代碼環(huán)境中訓(xùn)練,但可以讓模型在數(shù)學(xué)推理上也取得顯著進(jìn)步。

這項(xiàng)研究也在Reddit上引發(fā)了討論,開帖轉(zhuǎn)載的網(wǎng)友驚嘆:會(huì)自我進(jìn)化的AI已經(jīng)被解鎖了?

在出題-做題中自我學(xué)習(xí)
“絕對(duì)零”采用了一種自我博弈的學(xué)習(xí)范式。在這個(gè)范式下,一個(gè)統(tǒng)一的語(yǔ)言模型扮演Proposer和Solver兩個(gè)角色。
Proposer負(fù)責(zé)生成新的推理任務(wù),Solver負(fù)責(zé)解決這些任務(wù)。通過(guò)兩個(gè)角色的交替和協(xié)同,模型可以自主地構(gòu)建學(xué)習(xí)任務(wù)分布,并在求解任務(wù)的過(guò)程中不斷提升推理能力。

“絕對(duì)零”將所有的推理任務(wù)統(tǒng)一表示為(p,i,o)(即程序,輸入,輸出)的三元組形式。
這里的程序是一段可執(zhí)行的代碼,輸入是該程序的輸入數(shù)據(jù),輸出是程序在給定輸入下的輸出結(jié)果。
通過(guò)這種形式化的表示,原本抽象的推理任務(wù)被轉(zhuǎn)化為了一個(gè)個(gè)具體的程序設(shè)計(jì)問(wèn)題,語(yǔ)言模型可以通過(guò)生成和操作代碼來(lái)完成任務(wù)的生成和求解。
根據(jù)p、i、o是否已知,“絕對(duì)零”將推理任務(wù)劃分為三種基本類型——溯因(Abduction)、演繹(Deduction)和歸納(Induction):
-
溯因任務(wù):已知p和對(duì)應(yīng)的o,求可能的i。這類任務(wù)考察模型根據(jù)結(jié)果反推條件、理解代碼語(yǔ)義的能力。 -
演繹任務(wù):已知p和i,求o。這類任務(wù)考察模型運(yùn)行和理解代碼邏輯的能力。 -
歸納任務(wù):已知一組i-o樣例,求一個(gè)統(tǒng)一p。這類任務(wù)考察模型歸納總結(jié)規(guī)律、生成代碼的能力。

在自我博弈的訓(xùn)練開始前,“絕對(duì)零”需要一個(gè)初始的任務(wù)集合作為種子(如果基礎(chǔ)模型足夠強(qiáng)也可以不用)。這個(gè)種子集合通過(guò)基礎(chǔ)語(yǔ)言模型生成一些有效的代碼(p,i,o)得到。
當(dāng)種子集合為空時(shí),“絕對(duì)零”會(huì)使用一個(gè)預(yù)定義的“zero triplet”作為起點(diǎn),實(shí)際上就是一個(gè)簡(jiǎn)單的恒等函數(shù):

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

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

在每一輪迭代結(jié)束時(shí),“絕對(duì)零”都會(huì)使用Proposer和Solver收集到的反饋信號(hào),對(duì)整個(gè)模型進(jìn)行聯(lián)合優(yōu)化和更新,使得Proposer生成的任務(wù)更有利于學(xué)習(xí),Solver解決任務(wù)的能力也越來(lái)越強(qiáng)。
經(jīng)過(guò)多輪迭代,“絕對(duì)零”最終可以收斂到一個(gè)很好的均衡點(diǎn),在這個(gè)點(diǎn)上,Proposer生成的任務(wù)恰好匹配Solver的能力,Solver又能夠從這些任務(wù)中學(xué)到足夠多的知識(shí)。
數(shù)學(xué)代碼任務(wù)性能雙提升
在編程任務(wù)上,研究者使用了HumanEval+、MBPP+和LCB三個(gè)數(shù)據(jù)集。
與未經(jīng)“絕對(duì)零”訓(xùn)練的版本相比,“絕對(duì)零”將Qwen-2.5-7B-Coder的HumanEval+通過(guò)率從80.5%提高到了83.5%,將MBPP+的通過(guò)率從69.3%提高到了69.6%,將LCB的通過(guò)率從19.9%提高到了31.7%。
在數(shù)學(xué)推理任務(wù)上,研究者選取了6個(gè)具有代表性的數(shù)據(jù)集進(jìn)行評(píng)測(cè),包括AME’24、AME’25、AMC’23、MATH500、Minerva和Olypiad。
“絕對(duì)零”在這6個(gè)數(shù)據(jù)集上的平均準(zhǔn)確率達(dá)到了39.1%,比未經(jīng)“絕對(duì)零”訓(xùn)練的baseline高出了15.2個(gè)百分點(diǎn)。
其中,在MATH500數(shù)據(jù)集上,“絕對(duì)零”的準(zhǔn)確率達(dá)到了72.6%,超出baseline 22.6個(gè)百分點(diǎn);在AMC’23數(shù)據(jù)集上,“絕對(duì)零”的準(zhǔn)確率為57.5%,超出baseline 17.5個(gè)百分點(diǎn)。

除了Qwen-2.5-7B-Coder,研究者還在其他幾個(gè)預(yù)訓(xùn)練語(yǔ)言模型上測(cè)試了“絕對(duì)零”的性能:
-
Qwen-2.5-3B-Coder:應(yīng)用“絕對(duì)零”后編程任務(wù)平均通過(guò)率從51.2%提高到了54.9%,在數(shù)學(xué)任務(wù)上的平均準(zhǔn)確率從18.8%提高到了26.5%; -
Qwen-2.5-14B-Coder:應(yīng)用“絕對(duì)零”后,在編程任務(wù)上的平均通過(guò)率從60.0%提高到了63.6%,在數(shù)學(xué)任務(wù)上的平均準(zhǔn)確率從20.2%提高到了43.0%; -
Llama-3.1-8B:應(yīng)用“絕對(duì)零”后在編程任務(wù)上的平均通過(guò)率從28.5%提高到了31.6%,在數(shù)學(xué)任務(wù)上的平均準(zhǔn)確率從3.4%提高到了6.8%。
通過(guò)對(duì)不同規(guī)模和類型的語(yǔ)言模型的測(cè)試,研究者還發(fā)現(xiàn)“絕對(duì)零”的性能提升與模型規(guī)模呈正相關(guān)——參數(shù)越多的模型,訓(xùn)練后的性能提升也越大。
例如在數(shù)學(xué)任務(wù)上,30億參數(shù)的Qwen-2.5-3B-Coder模型提升了7.7個(gè)百分點(diǎn),而140億參數(shù)的Qwen-2.5-14B-Coder模型則提升了22.8個(gè)百分點(diǎn)。
這表明“絕對(duì)零”能夠有效地利用大模型的能力,實(shí)現(xiàn)更高的推理性能提升。

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