代码提供了一个通用的语法结构,可以构建复杂的程序并进行精确的计算,当与代码解释器配对使用时。我们假设语言模型(LMs)可以利用编写代码来改善“思维链”推理,不仅适用于逻辑和算术任务,而且适用于语义任务(特别是那些混合了逻辑和语义的任务)。例如,考虑提示LM编写代码,以计算它在文章中检测到讽刺的次数:LM可能难以编写一个可由解释器执行的“detect_sarcasm(string)”实现(处理边缘情况是不可逾越的)。然而,如果LM不仅编写代码,而且通过生成“detect_sarcasm(string)”的预期输出和其他无法执行的代码行来有选择地“模拟”解释器,LM仍然可以产生有效的解决方案。在这项工作中,我们提出了一种简单但出奇地有效的扩展,名为“Code of Chain(CoC)”,它改善了LM代码驱动的推理。关键思想是鼓励LM将语义子任务格式化为灵活的伪代码,在程序中,解释器可以明确捕获未定义的行为,并将其移交给LM进行模拟(作为“LMulator”)。实验表明,Chain of Code在各种基准测试中优于Chain of Thought和其他基准测试;在BIG-Bench Hard上,Chain of Code达到84%,比Chain of Thought高12%。CoC适用于大型和小型模型,扩大了LM可以正确回答“以代码思考”的推理问题的范围。项目网页:https://chain-of-code.github.io。
提问交流