Code to Think, Think to Code: A Survey on Code-Enhanced Reasoning and Reasoning-Driven Code Intelligence in LLMs
作者: Dayu Yang, Tianyang Liu, Daoan Zhang, Antoine Simoulin, Xiaoyi Liu, Yuwei Cao, Zhaopu Teng, Xin Qian, Grey Yang, Jiebo Luo, Julian McAuley
发布时间: 2025-02-27
来源: arxiv
研究方向: 大语言模型(LLM)中的代码增强推理与推理驱动的代码智能
主要内容
本文探讨了代码与推理在大语言模型中的双向增强关系。代码通过其结构化、模块化和逻辑驱动的特性支持推理,而推理则将高层次目标分解为可执行的步骤,推动更高级的代码智能。研究分析了代码如何作为推理的结构化媒介,提供了可验证的执行路径、逻辑分解和运行时验证。同时,推理能力的提升也推动了代码智能从基础补全到复杂软件工程任务的演进,如规划和调试。最后,文章提出了未来研究方向,以加强代码与推理的协同作用,提升LLM在这两个领域的表现。
主要贡献
1. 系统分析了代码如何作为推理的结构化媒介,增强LLM的推理能力。
2. 探讨了推理能力的提升如何推动代码智能的演进,从基础补全到复杂软件工程任务。
3. 提出了未来研究方向,包括模型可解释性、可扩展训练和多模态融合等挑战。
4. 总结了当前代码与推理交互中的关键挑战,并提出了解决方案。
研究方法
1. Program of Thoughts (PoT):将推理问题转化为程序化解决方案,通过单次执行代码生成任务来提升推理精度。
2. Program-aided Language Models (PaL):将自然语言推理与程序化语句结合,通过代码解释器执行算术或逻辑操作。
3. MathCoder:动态结合自然语言推理与代码执行,实时生成代码块并执行,迭代推理与代码计算。
4. Chain of Code (CoC):混合语义推理与代码结构,允许语言模型模拟不可执行代码的效果。
5. Self-Refine:通过自我反馈机制迭代生成、评估和优化代码输出。
6. Self-Debugging:通过执行反馈自主检测和修复代码错误。
实验结果
实验结果表明,代码增强推理方法在多个基准测试中显著提升了LLM的推理能力。例如,PoT和PaL在数学推理任务(如GSM8K和MATH)中表现优异,MathCoder通过动态代码执行提升了数学问题的解决能力。推理驱动的代码智能方法(如Self-Refine和Self-Debugging)在代码生成和调试任务中表现出色,显著提高了代码的正确性和鲁棒性。
未来工作
未来的研究应关注以下几个方向:1) 提升模型的可解释性和可调试性,确保生成的代码能够反映模型的真实推理过程;2) 探索代码与自然语言的无缝集成,特别是在模糊或抽象推理任务中的应用;3) 优化代码数据的表示和复杂性,确保模型能够有效学习复杂的推理步骤;4) 提升模型的零样本和少样本学习能力,增强其在真实场景中的泛化能力;5) 开发高质量的数据集,支持代码生成和编辑任务的进一步研究;6) 探索代码格式的工具调用,设计标准化格式以支持复杂任务的自动化代码生成与执行。