专栏名称: 新智元
智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人革命对人类社会与文明进化的影响,领航中国新智能时代。
目录
相关文章推荐
爱可可-爱生活  ·  【[490星]PgAssistant:为Po ... ·  17 小时前  
爱可可-爱生活  ·  百度文心一言和ChatGPT相继宣布免费计划 ... ·  19 小时前  
爱可可-爱生活  ·  【OpenR1-Math-Raw:从Deep ... ·  19 小时前  
爱可可-爱生活  ·  【Kitchen ... ·  2 天前  
爱可可-爱生活  ·  【aiaio(AI-AI-O):一个轻量级、 ... ·  2 天前  
51好读  ›  专栏  ›  新智元

o3斩获IOI金牌冲榜全球TOP 20,自学碾压顶尖程序员!48页技术报告公布

新智元  · 公众号  · AI  · 2025-02-13 12:56

主要观点总结

本文报道了OpenAI团队在编程竞赛中的新成果,特别是o3模型在IOI 2024竞赛中取得金牌的表现。文章介绍了o3通过强化学习提升编程能力的过程,以及其在CodeForces、IOI竞赛中的表现。同时,文章还探讨了编程竞赛与实际软件开发任务中的模型表现。

关键观点总结

关键观点1: OpenAI团队在编程竞赛中取得重要突破

o3模型在IOI 2024竞赛中通过强化学习取得金牌,表现超越大多数人类参赛者

关键观点2: o3模型的强化学习训练过程

o3模型经过大规模强化学习训练,通过自我验证机制提高解决方案的可靠性

关键观点3: o3模型在编程竞赛和实际软件开发任务中的表现

o3模型在CodeForces竞赛中位列全球Top 200竞赛程序员之列,并且在现实世界的软件开发任务中也表现出强大的性能。

关键观点4: 强化学习对模型性能提升的重要性

通过增加强化学习训练计算量和测试时计算量,能持续提升模型性能,使其接近甚至超越世界顶尖人类选手的水平。


正文



新智元报道

编辑:编辑部 JYs
【新智元导读】 o3一举拿下IOI 2024金牌,跻身全球TOP 18顶尖程序员之列!OpenAI团队48页新作揭秘原理:强化学习+Scaling测试时计算,让o3逐渐从「编程菜鸟」进阶到拿下奥赛金牌!


几天前,谷歌AlphaGeometry 2拿下IMO金牌,震惊了所有人。
这次,o3在IOI 2024竞赛中取得惊人的394分(满分600),一举夺得金牌,实力相当于全球第18名赛级选手。
不仅如此,在世界级编程竞赛CodeForces上,o3位居全球Top 200之列,堪比人类顶尖程序员。
早在去年8月,OpenAI团队便开始全力准备让o系模型参赛IOI 2024,o1作为第一个代表上阵。
为了提升AI性能,他们当时用尽了几乎所有的技巧——微调、基于测试用例进行过滤、提示模型生成额外的测试用例、基于相似度对解决方案进行聚类、对聚类进行排序等等。
谁曾想,那个「苦涩的教训」依然和往常一样苦涩......
而o3却在无人启发的情况下,通过强化学习中自己摸索出了一些技巧,就比如,用随机测试用例对比暴力解来测试代码。
o3通过「思维链」来scaling测试时计算的能力是多么强大。

当我们检查思维链过程时,我们发现模型自主发展出了自己的测试时策略。其中一个有趣的策略是:模型会 1)先写一个简单的暴力解决方案,然后 2)用它来验证一个更复杂的优化方案。
这些关键发现,现如今已全部公开了。
本月初,OpenAI团队在arXiv发表了一篇,超全48页推理模型参与竞争性编程的研究。

论文链接:https://arXiv.org/pdf/2502.06807
论文中,他们展示了LLM如何从「菜鸟」进阶到全球Top程序员,甚至拿下了IOI金牌的全过程!
最新研究,重点强调了「推理」在编程任务中的重要性,详细呈现了o系推理模型在编程方面的进展,以及在各类竞赛编程、编码基准测试中评估方法和结果。
其中,关键亮点有以下四个:
  1. 展示了CoT推理的强大作用:从竞赛编程基准到复杂软件工程难题,编程表现都有提高
  2. 同时增加强化学习训练和测试时计算资源,能持续提升模型表现,几乎达到世界顶尖人类水平
  3. 利用CodeForces、IOI等多个权威平台及数据集,全面验证模型在竞赛和实际任务中的表现
  4. 发现LLM通过强化学习可超越特定领域模型,证实CoT推理提升模型性能

半个月前,奥特曼曾在采访中剧透,「OpenAI内部的一个推理模型已跃升至全球第50名,而且很可能在年底前霸榜」。
用不了多久,AI真的要踏平编程界了么。

AI拿下IOI金牌,卷趴顶尖程序员

竞技编程,被广泛认为是评估推理和编程能力的具有挑战性的基准。

从文档字符串合成程序,OpenAI早期某模型的正确率为28.8%,而GPT-3对这类问题甚至完全无能为力。

解决复杂的算法问题,需要高级的计算思维和问题解决技巧。此外,这些问题还具有客观的可评分性,使其成为评估AI系统推理能力的理想试验平台。

AlphaCode通过大规模代码生成和推理过程中的启发式方法,成功解决了竞赛编程任务。随后推出的AlphaCode2,几乎使AlphaCode的解决问题数量翻倍,并使其在CodeForces平台上跻身前15%。

论文地址:https://www.science.org/doi/10.1126/science.abq1158


这两种 系统都在问题上大规模采样,最多生成一百万个候选解决方案,然后通过手工设计的测试策略选择前10个提交结果。

自那时以来,利用强化学习提升大规模语言模型(LLM)推理能力取得了显著进展。这促使了大规模推理模型(LRM)的出现:这些语言模型通过强化学习进行训练,以「推理」和「思考」复杂的思维链。

一个尚未解决的问题是,领域特定的手工设计推理策略与模型自主生成并执行的学习方法相比,效果如何?

为了解决这个问题,团队希望从o1、o1-ioi和o3的早期checkpoint中获得灵感。

OpenAI o1使用通用方法来提升编程性能。 而o1-ioi是一个针对2024年国际信息学奥林匹克(IOI)竞赛进行微调的系统,采用了类似于AlphaCode系统的测试时策略。与o1-ioi或AlphaCode不同,o3不依赖于由人工定义的特定编码的测试时策略。

值得注意的是,o3在2024年IOI中赢得了金牌,并获得了与人类顶尖选手相当的CodeForces评级。

o1:推理模型先锋

o1通过强化学习训练的大型语言模型,利用CoT将复杂任务分解为易于处理的部分,用于处理复杂的推理任务。

此外,o1能够使用外部工具,特别是在安全环境中编写和执行代码,让o1能够验证生成的代码是否能编译、能否通过测试用例并满足其他正确性检查。

通过测试和优化其输出,o1在单次样本过程中不断改进其解决方案。

CodeForces是一个举办实时编程竞赛的网站,吸引了世界上顶尖的竞赛程序员。

为了评估模型在竞赛编程中的能力,模拟了与实际比赛条件非常相似的CodeForces竞赛,包括使用每个问题的完整测试集,并为解决方案设定适当的时间和内存限制。

o1与非推理模型gpt4o和早期的推理模型o1-preview进行了比较。如图1显示,o1-preview和o1的表现远远超越了gpt-4o,突显了强化学习在复杂推理中的有效性。

o1-preview模型在CodeForces上的评分为1258(第62百分位),相比之下,gpt-4o的评分为808(第11百分位)。进一步的训练使o1的评分提高到1673(第89百分位),为AI在竞赛编程中的表现设立了新的里程碑。

图1:在CodeForces上不同大语言模型OpenAI o1-preview、o1与GPT-4o的表现

o1-ioi:为竞赛「量身定制」

o1-ioi起源

在开发和评估OpenAI o1的过程中,发现增加强化学习(RL)计算量和测试时间推理计算量,都能持续提高模型性能。

图2:更多的强化学习训练/测试时计算资源提升了竞赛数学表现。

基于这些洞察,研究团队创建了o1-ioi系统,用于参加2024年国际信息学奥林匹克(IOI)。

除了针对编程任务进行的持续强化学习训练,o1-ioi还结合了专门为竞赛编程设计的测试时推理策略。

编程任务的强化微调

第一步是扩展OpenAI o1的强化学习阶段,重点聚焦于编程任务。

通过将额外的训练计算资源投入到编程问题中,我们增强了模型规划、实现和调试更复杂解决方案的能力。具体来说:

  1. 从OpenAI o1的checkpoint恢复了强化学习训练

  2. 特别强调了具有挑战性的编程问题,帮助模型提升C++代码生成和运行时检查能力

  3. 引导模型生成符合IOI提交格式的输出

这种额外的编程训练使得o1-ioi在推理过程中能够编写并执行C++程序。通过反复运行和优化解决方案,模型在推理过程中不断改进其推理能力,从而增强了编程和解决问题的技能。

o1-ioi测试时策略

从整体上看,测试时策略将每个IOI问题分解成多个子任务。

对于每个子任务,从o1-ioi中采样了10,000个解决方案,然后采用基于聚类和重新排序的方法,来决定从这些解决方案中提交哪些结果。

问题设定

o1-ioi选择单独解决每个问题的各个子任务,因为IOI的评分是基于每个子任务进行的,并且每个选手的最终得分是所有子任务中最佳尝试的得分。

因此,将每个IOI问题分解为其组成的子任务(根据每个问题的评分指南中的划分)。具体做法是为每个子任务创建一个版本的文档,删除其他子任务的信息。

聚类

基于模型生成的测试输入的输出,对生成的解决方案进行了聚类。

对于每个子任务,首先让模型根据问题规格和子任务要求生成随机的C++测试输入生成器。研究团队使用这些生成器生成256个随机测试输入。

为了确保这些测试输入的有效性,接着让模型编写C++的测试输入验证器,检查每个测试输入是否满足子任务的约束条件。

最终,只接受通过至少75%验证器检查的测试输入。对于每个子任务,生成了256个这样的随机测试输入,并基于这些测试输入的输出进行了聚类。所有在所有测试输入上输出相同的程序将被归为同一类。

重新排序

接着,研究团队实现了测试时计算策略中的重新排序核心部分。根据以下几个方面,对每个解决方案进行了评分:

  • 根据学习得来的评分函数评估解决方案的质量

  • 在模型生成的测试输入上出现的错误

  • 未通过提供的公共测试用例

每个聚类都被赋予了一个分数,该分数定义为该聚类中包含的样本的平均分数减去每次从该聚类提交样本时所受到的惩罚。所有这些惩罚的权重是通过对过去几年IOI问题的解决方案进行随机搜索调整的,具体方法是通过直接模拟提交过程来进行调优。

模拟提交

随后以轮询的方式提交了最多50个解决方案(这是人类参赛者允许的最大提交次数),从最难的子任务开始,覆盖所有子任务。

研究团队为每个子任务选择排名靠前的集群中的最高排名解决方案。

当某个子任务被解决(即获得了最高分)时,停止对该子任务的采样。

在提交任何严格包含已解决子任务的子任务的解决方案时,会过滤掉那些与已解决子任务的测试输入输出不匹配的解决方案,从而通过剔除几乎肯定会在较简单子任务上失败的解决方案,快速缩小较难子任务上的候选解决方案范围。

CodeForces基准测试

研究团队再次模拟了CodeForces竞赛,以评估o1-ioi的编程能力,竞赛条件与实际比赛高度一致,包括每个问题的完整测试集和适当的时间与内存限制。

图3显示,o1-ioi达到了1807的CodeForces评分,超越了93%的竞争者——这清楚地展示了通过在编程任务上进行额外强化学习训练所带来的改进。

当应用简单的筛选器,拒绝任何未通过公共测试的解决方案时,评分提高到了2092(第96百分位)。完整的测试时策略进一步提升了性能,达到了2214的评分(第98百分位)。

这些结果验证了领域特定的强化学习微调与先进的选择启发式方法相结合,可以显著提升竞赛编程的成果。

图3:通过对OpenAI o1进行编码任务的进一步训练并结合测试时策略,可以提升性能

CodeForces维护着一个全球活动参与者的排行榜。研究团队直接将o3在测试竞赛中的解题率与其他参赛者进行比较。

图10展示了这两种比较,展示了他们在参赛的竞赛中的平均解题率与他们的评分,并标出了关键绩效水平的评分阈值。

其中,每个点代表至少参加了8场测试竞赛的参赛者。水平线表示全球CodeForces活跃竞争者排行榜上的表现阈值。

尽管最顶尖的人类参赛者仍然远远强于o3,他们的解题率超过85%,但评分和解题率都表明,o3可以位列全球前200名活跃参与者之中。

图10:o3位居全球Top 200竞赛程序员之列

IOI 2024

o1-ioi系统在与人类参赛者相同的条件下参加了2024年国际信息学奥林匹克竞赛(IOI)。它有10小时的时间解决六个高难度算法问题,每个问题最多允许提交50次。

在竞赛期间,系统为每个问题生成了10,000个候选解决方案,并使用设计的测试时选择策略从中挑选50个提交方案。

该策略根据提交方案在IOI公开测试用例、模型生成的测试用例以及学习得到的评分函数上的表现进行优先级排序。该模型最终得分213分,位列竞赛的第49百分位。

相比之下,随机选择50个提交方案的平均得分仅为156分,这表明选择策略在竞赛的限制条件下额外贡献了近60分。







请到「今天看啥」查看全文