Chain of Code: Reasoning with a Language Model-Augmented Code Emulator

2023年12月07日
  • 简介
    代码提供了一种通用的语法结构,用于构建复杂的程序并执行精确的计算,当与代码解释器配对使用时。我们假设语言模型(LMs)可以利用编写代码来改进思维链推理,不仅适用于逻辑和算术任务,还适用于语言任务(特别是那些混合了逻辑和语言的任务)。例如,考虑提示LM编写代码来计算它在文章中检测到讽刺的次数:LM可能难以编写“detect_sarcasm(string)”的实现,以便可以由解释器执行(处理边缘情况是不可逾越的)。然而,如果不仅用于编写代码,还用于选择性地“模拟”解释器,通过生成“detect_sarcasm(string)”和其他代码行的预期输出(例如,解释器无法编译的输出),LM仍然可以产生有效的解决方案。在这项工作中,我们提出了Chain of Code(CoT),这是一种简单但出乎意料地有效的扩展,可以改进LM代码驱动的推理。关键思想是鼓励LM将语言子任务格式化为程序中的灵活伪代码,以便编译器可以明确捕获未定义的行为,并交给模拟器(作为“LMulator”)进行模拟。实验表明,Chain of Code在各种基准测试中优于Chain of Thought和其他基线;在BIG-Bench Hard上,Chain of Code实现了84%,比Chain of Thought高12%。CoT可以很好地适应大型和小型模型,并通过“以代码思考”的方式扩大了LM可以正确回答的推理问题的范围。项目网页:https://chain-of-code.github.io/。
  • 图表
  • 解决问题
    本论文试图通过将自然语言处理和编程结合起来,提高语言模型的推理能力,特别是在涉及逻辑和算术任务的同时也能处理语言任务。
  • 关键思路
    Chain of Code (CoT)是本文提出的方法,将自然语言处理和编程结合起来,通过对语言子任务进行灵活的伪代码格式化,以提高语言模型的推理能力。
  • 其它亮点
    本文提出的方法在各种基准测试中都表现出色,比Chain of Thought和其他基线模型都要好,特别是在BIG-Bench Hard数据集上可以达到84%的准确率,比Chain of Thought提高了12%。同时,CoT能够适用于大型和小型模型,并且能够扩大语言模型正确回答推理问题的范围。
  • 相关研究
    最近在这个领域中,也有一些相关的研究,如《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》、《Natural Language to Structured Query Generation via Meta-Learning》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论