-
背景
论文探讨了语言模型(LLMs)在使用代码编写来改善推理能力方面的潜力,特别是对于逻辑、算术和语义问题的混合体。论文提出LLMs可以通过编写代码和模拟代码执行来产生有效的解决方案,尤其在难以将某些语义任务编码为可执行代码的场景中。 -
已有的工作为什么解决不了 现有的工作往往假定使用LLMs来编写程序需要中间的推理步骤(用代码行表达)都必须是可执行的。但是,对于许多语义任务来说,用代码表示非常困难,甚至近乎不可能。如何将编码和语言推理结合起来以获取双方的好处,是现有研究未能解决的问题。
- 提出了一个称为Chain of Code (CoC)的方法
-
挑战1:语义任务的代码化 现有技术难以将复杂的语义任务转化为可执行代码,因为这些问题往往涉及到难以通过编程逻辑解决的边界情况。CoC鼓励LLMs将语义子任务格式化为灵活的伪代码,这样代码解释器可以明确捕捉到未定义的行为并交给LLMs来模拟执行,实现了所谓的“LMulator”(LM和模拟器的混合词),填补了这一技术空白。
-
挑战2:扩展LLMs的推理范围 CoC能够提高大规模和小规模LLMs在处理逻辑、算术和混合语义推理问题上的性能,扩展了LLMs能够正确回答的问题类型。“思考代码”的能力使LLMs不仅能够编写可执行的精确算法,而且还能生成语义问题的输出。
-
论文通过实验验证了CoC在各种基准测试中的性能,特别是在BIG-Bench Hard任务上,CoC获得了84%的高表现,比Chain of Thought超出了12%的增益,创下了新的行业标准。实验进一步表明,代码解释器的执行和语言模型执行的模拟对于CoC的性能至关重要,并且该方法与大模型以及小模型均具有良好的兼容性。此外,CoC作为一种通用的推理器,在跨任务提示基准上也展现出了其优势。
Chain of Code (CoC)为语言模型增加了通过编写代码和模拟代码执行来改善推理能力的新维度。它在数字和语义推理任务中均实现了突破性的性能,对LLMs的应用范围进行了扩展,并有潜力应用于更广泛的问题。