OpenAI 剛剛發佈了一份研究報告,主題是關於人工智慧在競技程式設計領域的進展。他們展示了自家的大模型是如何一步步從“程式設計小白”成長為可以和頂尖程式設計師 PK 的“高手”
競技程式設計,可能有些朋友不太熟悉,簡單來說就是比拚程式設計能力和演算法技巧的比賽,像 ACM、ICPC、Codeforces 這些平台就聚集了很多程式設計高手
報告裡提到,最初的模型表現平平,在程式設計方面顯得比較吃力。但關鍵的轉折點是 大型推理模型 的出現,特別是結合了 強化學習 (Reinforcement Learning) 進行訓練之後,o1到o3模型變強的“心路歷程”,但是方法依然是個迷,問就是四個字:強化學習
OpenAI 這次報告的核心,其實還是他們一直強調的 強化學習 (Reinforcement Learning, RL) 。報告一開始就明確指出,RL 是提升大型語言模型 (LLMs) 在複雜程式設計和推理任務上性能的 關鍵驅動力
為了驗證 RL 的效果,OpenAI 首先推出了 通用推理模型 OpenAI o1。這個模型在訓練時,特別注重提升 鏈式思考 (chain-of-thought reasoning) 能力。簡單來說,就是讓 AI 學會像人類一樣,一步一步地分析問題、拆解難題,最終找到解決方案
資料說話,效果驚人! 在模擬的 Codeforces 競賽環境中,o1 模型的表現相比之前的模型 大幅提升。 它的 Elo 評分從 1258 分 (62nd percentile) 直接躍升到 1673 分 (89th percentile)!
OpenAI 的目標遠不止於此。為了挑戰更具含金量的 國際資訊學奧林匹克競賽 (IOI),他們對 o1 模型進行了 專項強化訓練,並打造了 o1-ioi 模型。同時,為了確保在 IOI 這種高強度競賽中取得好成績,研究團隊還 “祭出” 了 手工打造的測試時策略 (hand-crafted test-time strategies)
這些策略,可以理解為人類專家為 AI 模型 “量身定製” 的一套競賽技巧 “組合拳”,包括:
“人機協作” 威力顯現! 在 手工策略 的加持下,o1-ioi 模型在 IOI 競賽中獲得了 49% 的排名,得分 213 分。更令人振奮的是,當 OpenAI 放寬提交次數限制 (從官方的每題 50 次放寬到 10,000 次) 後,o1-ioi 模型竟然 一舉奪得金牌!得分高達 362.14 分
報告中還提到,這些 手工策略 非常有效,為 o1-ioi 的 IOI 成績 提升了約 60 分,在 Codeforces 上的 percentile 排名也 提升了 5% (從 93% 提升到 98%, Elo 評分達到 2214 分)。
雖然 o1-ioi 模型取得了亮眼的成績,但 OpenAI 並沒有滿足於 “人機結合” 的模式。他們更進一步,推出了 新一代模型 o3。這次,他們想要探索 純粹強化學習 的極限—— 完全不依賴任何人工策略,只通過 RL 訓練,AI 能否在競技程式設計領域達到頂峰?
o3 模型在 Codeforces 上的 Elo 評分更是達到了 2724 分 (99.8th percentile), 全球排名 Top 0.2%, 接近 全球 Top 175 名 的水平!
o3 模型在沒有任何人工策略輔助的情況下,竟然在官方 IOI 競賽的嚴格約束下,也成功斬獲金牌! 🏆 得分高達 395.64 分,進一步超越金牌線
OpenAI o3 在 2024 年國際資訊學奧林匹克競賽(IOI)中獲得 395.64分(滿分 600 分),獲得金牌,世界排名第 18 位。該模型沒有受到這些資料的污染,並且使用了 50 次提交限制。這也印證了奧特曼的說法今年我們很可能會看到超人的編碼模型
更深入地分析 o3 模型的 解題過程 (chain of thought),研究人員發現,o3 模型竟然 自主領悟 並行展出了一套 測試時策略!其中一個策略,與人類程式設計師的常用技巧 不謀而合:
這種先 “保底” 再 “最佳化” 的思路,是不是和我們人類程式設計師在競賽中常用的策略 如出一轍?AI 不僅學會了程式設計,還學會了 人類的思考方式, 這才是 o3 模型最令人震撼的地方!
競技程式設計的成功,只是 OpenAI 這次研究的一個側面。他們還評估了這些模型在 軟體工程 (Software Engineering, SWE) 任務中的表現,使用了 HackerRank Astra 和 SWE-bench Verified 兩個行業benchmark 資料集
結果顯示,經過強化學習訓練的模型,在軟體工程任務上的 Pass@1 (首次嘗試成功率) 和 Avg Score (平均得分) 都得到了顯著提升
o3 模型在 SWE-bench Verified 資料集上,相比 o1 模型,Pass@1 提升了 22.8%! 這表明,強化學習不僅能提升 AI 的競賽程式設計能力,也能有效提升其在更廣泛的軟體開發領域的應用能力
Codeforces Elo 評分: o1-preview: 1258 (62nd percentile), o1: 1673 (89th percentile), o1-ioi: 2214 (98th percentile), o3: 2724 (99.8th percentile, Top 0.2%, 全球 Top 175 左右)
IOI 競賽得分: o1-ioi (官方約束): 213 分 (49th percentile), o1-ioi (放寬約束): 362.14 分 (金牌), o3 (官方約束): 395.64 分 (金牌). 手工策略為 o1-ioi IOI 提升 60 分, Codeforces percentile 提升 5%
Codeforces 模擬競賽評估方法 (Appendix B):
IOI 程式碼示例 (Appendix C):
報告中附錄 C 提供了 o1-ioi 模型在 IOI 競賽中生成的 C++ 程式碼示例, 包括 Nile 和 Message 兩道題目的部分程式碼。例如,Nile 題目的程式碼中使用了 Union-Find 資料結構 來解決連通性問題。(感興趣的朋友可以去原文附錄 C 查看程式碼細節)
這份報告就是在講強化學習的威力,只不過OpenAI只告訴了結果,現在大家都知道了,因為DeepSeek R1已經證明了同樣的事情,但是DeepSeek附送了詳細的技術報告,告訴了強化學習實施的方法和過程 (AI寒武紀)