代码为构建复杂程序和执行精确计算提供了一种通用的语法结构。当与代码解释器 (interpreter) 配合使用时,我们推测,语言模型 (LMs) 能够通过编写代码来增强“思维链条 (Chain of Thought)”式的推理。这不仅适用于逻辑和算术任务\[ 5 , 26 , 1 ],也适用于语义任务,特别是逻辑与语义相结合的任务。例如,如果让一个语言模型编写一个检测文章中讽刺次数的代码,它可能难以编写一个可以被解释器执行的“detect\_sarcasm(string)”函数(处理边缘情况会非常困难)。然而,如果语言模型不仅编写代码,还能模拟解释器的行为,通过生成“detect\_sarcasm(string)”及其他无法执行的代码行的预期输出,它仍有可能找到有效的解决方案。在本研究中,我们提出了“代码链 (Chain of Code, CoC)”方法,这是一个简单但效果惊人的扩展,用于改进基于代码的语言模型推理。其核心思想是鼓励语言模型将程序中的语义子任务格式化为伪代码 (pseudocode),使解释器能够明确地捕获未定义行为,并由语言模型(作为一个“LMulator”)模拟。实验显示,“代码链”在多个基准测试中都优于“思维链条 (Chain of Thought)”和其他基准线;在 BIG-Bench Hard 测试中,“代码链”达到了 84% 的成绩,比“思维链条”高出 12%。CoC 适用于大型和小型模型,扩展了语言模型通过“用代码思考”正确回答推理问题的范围。
December 29, 2023
View Article