北京交通大學研究團隊悄默聲推出了一版 o1,而且所有源代碼、精選數(shù)據(jù)集以及衍生模型都開源!名為 O1-CODER,專注于編碼任務(wù)。
團隊認為編碼是一個需要 System-2 思維方式的典型任務(wù),涉及謹慎、邏輯、一步步的問題解決過程。
而他們的策略是將強化學習(RL)與蒙特卡洛樹搜索(MCTS)相結(jié)合,讓模型能夠不斷生成推理數(shù)據(jù),提升其 System-2 能力。
實驗中,團隊有以下幾點關(guān)鍵發(fā)現(xiàn):
當推理正確時,基于偽代碼的推理顯著提升了代碼生成質(zhì)量
將監(jiān)督微調(diào)(SFT)與直接偏好優(yōu)化(DPO)相結(jié)合能夠提升測試用例生成效果
自我對弈強化學習為推理和代碼生成創(chuàng)造了持續(xù)改進的循環(huán)機制
具體來說,團隊采用了測試用例生成器,在經(jīng)過 DPO 后達到 89.2% 的通過率,相比初始微調(diào)后的 80.8% 有顯著提升;Qwen2.5-Coder-7B 采用偽代碼方法實現(xiàn)了 74.9% 的平均采樣通過率,提升了 25.6%。
網(wǎng)友直呼很需要這樣的模型。
O1-CODER,究竟長啥樣?
六步,逐步優(yōu)化 o1
應(yīng)用于代碼生成的自我對弈強化學習面臨兩大挑戰(zhàn):
結(jié)果評估,即如何評判生成代碼的質(zhì)量。與圍棋等任務(wù)不同,評估代碼需要在測試環(huán)境中運行并驗證。
定義思考和搜索行為,即確定過程獎勵的對象和粒度。
對于第一個挑戰(zhàn),團隊提出訓練一個測試用例生成器(TCG),根據(jù)問題和標準代碼自動生成測試用例,為強化學習提供標準化的代碼測試環(huán)境和結(jié)果獎勵。
對于第二個挑戰(zhàn),他們采取”先思考后行動“的方式:先通過詳細的偽代碼思考問題,再基于偽代碼生成最終的可執(zhí)行代碼。
這種方式的優(yōu)勢在于適應(yīng)性(同一偽代碼可對應(yīng)不同的具體實現(xiàn))和可控粒度(通過調(diào)整偽代碼的細節(jié)程度控制推理 / 搜索行為的粒度)。
具體來說,研究團隊提出了一個包含六個步驟的框架:
訓練測試用例生成器(TCG),為代碼測試提供標準化的環(huán)境
利用 MCTS 生成包含推理過程的代碼數(shù)據(jù)
迭代微調(diào)策略模型,先生成偽代碼,再生成完整代碼
基于推理過程數(shù)據(jù)初始化過程獎勵模型(PRM)
在 TCG 提供的結(jié)果獎勵和 PRM 提供的過程獎勵的雙重引導下,通過強化學習和 MCTS 更新策略模型
利用優(yōu)化后的策略模型生成新的推理數(shù)據(jù),返回第 4 步迭代訓練
兩階段訓練測試用例生成器
在實驗部分,研究人員詳細介紹了測試用例生成器的訓練過程。
分為兩個階段:監(jiān)督微調(diào)(SFT)和直接偏好優(yōu)化(DPO)。
SFT 階段的主要目標是確保生成器的輸出符合預定義格式,以便準確解析和提取生成的測試用例。訓練數(shù)據(jù)來自 TACO 數(shù)據(jù)集。
DPO 階段的目標是引導模型生成符合特定偏好的測試用例,進一步提高生成器的性能和可靠性。
這里采用了帶有人工構(gòu)建樣本對的 DPO 方法,構(gòu)建了一個偏好數(shù)據(jù)集。
實驗表明,SFT 階段過后,TCG 在標準代碼上生成的測試用例通過率達到 80.8%,DPO 階段進一步提升至 89.2%,大幅改善了生成器產(chǎn)出可靠測試用例的能力。
偽代碼推理,引導模型進行深度推理
特別值得一提的是,研究者引入了基于偽代碼的提示方法,將其作為引導模型進行深度推理的“認知工具”。
他們?yōu)榇硕x了三個關(guān)鍵行為:
使用偽代碼定義算法結(jié)構(gòu):勾勒主要函數(shù)的結(jié)構(gòu)和接口,把握任務(wù)的整體框架
細化偽代碼:逐步明確每個函數(shù)的具體步驟、邏輯和操作
從偽代碼生成代碼:將偽代碼的結(jié)構(gòu)和邏輯精準翻譯為可執(zhí)行代碼
在 MBPP 數(shù)據(jù)集上進行的初步實驗表明,盡管整體通過率(Pass@1)有所下降,但 Average Sampling Pass Rate(ASPR)顯著提高。
表明結(jié)合偽代碼顯著改善了推理過程的質(zhì)量,特別是在細化通向正確輸出的路徑方面。這為后續(xù)的自監(jiān)督微調(diào)和強化學習提供了良好的起點。
自我對弈 + 強化學習
研究人員詳細描述了如何使用蒙特卡洛樹搜索(MCTS)來構(gòu)建步驟級別的過程獎勵數(shù)據(jù)。
這個過程涉及到為每個問題形成一個推理路徑,該路徑由一系列推理步驟組成,并最終產(chǎn)生一個可執(zhí)行的代碼。在 MCTS 的路徑探索中,使用偽代碼提示策略來引導推理過程。當達到終端節(jié)點時,就形成了一個完整的偽代碼推理路徑。
終端節(jié)點的獎勵值是基于兩個關(guān)鍵指標計算的:編譯成功率(compile)和測試用例通過率(pass)。
這些指標被用來評估生成的代碼的質(zhì)量和正確性。
獎勵值被反向傳播到路徑上的所有前序節(jié)點,為每個步驟分配一個獎勵值。通過這種方式,構(gòu)建了推理過程數(shù)據(jù)集,為策略模型的初始化和訓練提供了基礎(chǔ)。
過程獎勵模型(PRM)的任務(wù)是為當前步驟分配一個獎勵值,以估計其對最終答案的貢獻。
在數(shù)據(jù)合成過程中使用的樹搜索方法可以組織成點式(point-wise)和成對式(pair-wise)兩種數(shù)據(jù)格式。
基于這些經(jīng)過驗證的正確推理解,策略模型得到初始化。
接下來,過程獎勵模型(PRM)開始發(fā)揮作用,評估每一步推理對最終答案的貢獻。在測試用例生成器(TCG)提供的結(jié)果獎勵和 PRM 提供的過程獎勵的雙重引導下,策略模型通過強化學習不斷改進。
更新后的策略模型被用來生成新的推理數(shù)據(jù),補充到現(xiàn)有數(shù)據(jù)集中,形成自我對弈的閉環(huán)。這個數(shù)據(jù)生成-獎勵建模-策略優(yōu)化的迭代循環(huán),確保了系統(tǒng)推理能力的持續(xù)提升。
論文鏈接:https://arxiv.org/pdf/2412.00154
本文來自微信公眾號:量子位(ID:QbitAI),作者:西風,原標題《北交開源 o1 代碼版!強化學習 + 蒙特卡洛樹搜索,源代碼、精選數(shù)據(jù)集以及衍生模型通通開源》
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。