SymCode: A Neurosymbolic Approach to Mathematical Reasoning via Verifiable Code Generation
SymCode 是一个神经符号框架,它通过将问题解决重构为使用 SymPy 进行的可验证代码生成,增强了大型语言模型的数学推理能力,从而实现了显著的准确性提升,并将模型的失败模式从不透明的逻辑谬误转向了透明的程序化错误。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你要求一位非常聪明但有点丢三落四的学生去解决一个复杂的数学问题。如果你要求他们“边思考边说”并将答案写成一段话,他们可能会掌握正确的思路,但在计算过程中却由于笨手笨脚而摔了一跤。他们可能会说:“我知道答案是 42,”但他们的数学过程显示的却是 41,或者他们可能会为了让数字看起来更漂亮而发明一个并不存在的规则。这正是目前的语言大模型(LLM)经常做的事情:它们在讲述一个关于数学的故事,但这个故事可能包含难以察觉的算术错误或逻辑漏洞。
SymCode 是一个改变游戏规则的新型框架。它不再要求 AI 写一个故事,而是要求 AI 编写一个计算机程序来解决问题。
以下是它的工作原理,我们使用一个简单的类比:
旧方法:“讲故事的人”
想象 AI 是一个试图解释如何烤蛋糕的讲故事的人。它说:“首先,混合面粉。然后,加入鸡蛋。哦,也许再加一撮盐?实际上,让我们加两杯糖吧,因为那样听起来更好。”
- 问题所在: 讲故事的人可能会忘记步骤、弄混配料,或者在需要多少杯糖的数学计算上出错。因为它只是一个故事,所以在你尝试吃蛋糕并发现味道很糟糕之前,很难证明它是错的。
新方法 (SymCode):“建筑师与建造者”
SymCode 告诉 AI:“不要写故事。相反,扮演一名绘制精确蓝图的建筑师,以及一名严格遵循该蓝图的建造者。”
- 建筑师 (AI): AI 将数学问题转化为一组严格的、逻辑性的指令,并以 Python 代码的形式编写。它使用一个名为 SymPy 的特殊工具(可以把它想象成一个“完美的计算器”,永远不会产生舍入误差)。
- 类比: 它不再说“加一些面粉”,而是编写代码说
flour = 2.5 cups。它明确地定义了规则。
- 类比: 它不再说“加一些面粉”,而是编写代码说
- 建造者 (计算机): 计算机运行代码。它不靠猜测,而是执行指令。
- 神奇之处: 如果 AI 在蓝图中犯了错误(比如除以零或使用了错误的变量),计算机会立即停止并提示:“错误!这一行无法运行。”
- 自我修正循环: 这是核心秘诀。如果计算机发现了错误,它会将“错误信息”发回给 AI。AI 阅读错误信息,意识到:“噢,我把变量名写错了,”然后重写代码来修复它。它会不断重复这个过程,直到代码完美运行并得出答案。
为什么这种方法更好?
- 不再有“虚假”数学: 在一个故事中,AI 可能会产生幻觉(编造)一个数学步骤。但在代码中,如果数学逻辑错误,程序就会崩溃。AI 无法欺骗计算机。
- 透明度: 如果一个故事让人困惑,很难找到错误点。如果代码错了,计算机会精确地指出错误发生的行号。这就像是在错误处打了一束聚光灯。
- 效率: 用长篇大论来解释一个数学技巧需要很多词汇(Token)。而编写一个短小的脚本来完成同样的数学运算则只需要极少的词汇。研究发现,相比于旧有的“讲故事”方法,SymCode 使用的词汇量减少了约 60% 到 77%。
结果
研究人员在非常困难的数学问题(如高中竞赛和奥林匹克竞赛中的题目)上测试了它。
- 准确率: SymCode 比旧方法正确回答的问题显著增多。在最难的测试中,它的准确率提升了高达 13.6 个百分点。
- “越难越好”原则: 问题越难,SymCode 的帮助就越大。对于简单的题目,旧方法表现尚可;但对于复杂的、多步骤的问题,旧方法会溃不成军,而 SymCode 却能持续推进,因为它能够检查自己的工作。
总结
SymCode 将 AI 从一个可能会编造事实的创意作家,转变为一名严谨的工程师,通过构建一台机器来解决问题。如果机器坏了,工程师就会不断修理它,直到它正常工作。这使得 AI 的数学答案不仅更有可能正确,而且也更容易被信任和验证。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。