- 克雷西 發自 凹非寺
量子位 | 公眾號 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/
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.