当前位置:首页> AI教程> 使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

释放双眼,带上耳机,听听看~!
本文介绍了使用Program-Aided Language Models(PAL)来处理复杂算术和符号推理任务的方法,并验证了其在多个实验中的有效性。PAL利用大型语言模型读取自然语言问题并生成程序作为推理步骤,然后使用Python解释器来解决这些步骤。作者认为,这种神经LLM和符号解释器之间的无缝协同是迈向通用和健壮的AI推理器的重要一步。

本文正在参加人工智能创作者扶持计划

导语

1 简介

最近,大型语言模型LLM在广泛的任务上取得了令人印象深刻的成功,包括使用Few-shot Prompting进行常识,数学和符号推理。这些过程通过要求LLM生成其明确推理步骤的方法加速,广泛使用的思维链(COT)方法为模型提供了达到最终答案所需的显式中间步骤。然而,尽管LLM可以将自然语言问题分解为步骤并执行简单的算术运算,但在处理复杂算术时,它们的性能会急剧下降。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

本文提出了一种程序辅助的Program-Aided Language model (PAL),该方法使用LLM来读取自然语言问题并生成程序作为推理步骤,但将解决步骤卸载(offload)给Python解释器,如图1所示。这种卸载利用了可以将自然语言问题分解为编程步骤的LLM。虽然自然语言理解和分解需要LLM,但求解和推理可以通过外部求解器完成。这在类似思维链的方法中弥补了一个重要的缺口,在这种方法中,推理链可能是正确的,但会产生错误的答案。

本文在13个算术和符号推理任务中证明了PAL的有效性。在所有这些任务中,使用Codex的PA L优于使用思维链提示的PaLM-540B等更大的模型。作者认为,神经LLM和符号解释器之间的无缝协同是迈向通用和健壮的AI推理器的重要一步。

2 背景:Few-shot Prompting

Few-shot Prompting利用大语言模型的优势来解决具有k个示例的任务,这些示例是作为测试时间输入的一部分提供的,其中k通常是小的个位数的数字。这些输入输出示例连接在提示符p中。

Wei等人还用思维链(COT)中间步骤补充了每个上下文示例。其示意图如下所示:

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

3 Program-aided Language Models

在PAL模型中,我们提出为给定的自然语言问题x生成交错自然语言(NL)和编程语言(PL)语句的思路t。由于我们将解决步骤委托给解释器,所以我们不为提示中的示例提供最终答案。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

上图展示了一个示例,实际应用时,作者使用注释语法提示语言模型生成NL中间步骤(例如“#…),这样它们就会被解释器忽略

实验中,利用现有工作的提示或者随机选择相同数量(3-6)的示例,为每个基准测试创建固定的提示。在所有情况下,都将自由格式的文本提示符扩展为PA l样式的提示符,并在需要时利用for循环和字典等编程结构。同时,还确保提示符中的变量名有意义地反映了它们的属性。在第6节中,我们将展示这种有意义的变量名是至关重要的。值得注意的是,还可以增量地运行PL段,并将执行结果反馈给LLM以生成以下块。为了简单起见,在我们的实验中,我们使用了单一的、事后的执行。

这项工作的重点是COT风格的推理链,但在附录I中,我们展示了PAL也改进了最小到最大(Zhou et al., 2022)提示,它引入了将问题分解为子问题的推理链。

4 实验设置

数据与In-context示例

我们对三大类推理任务进行了实验:

  1. 来自广泛数据集的数学问题(§4.1),包括GSM8K、SVAMP、ASDIV和MAWPS;
  2. 符号推理(§4.2)来自BIG-Bench Hard;
  3. 算法问题(§4.3)也来自BIG-Bench Hard。

所有数据集的详细信息见附录h。对于所有可用COT提示的实验,使用与以前工作相同的上下文示例。否则,我们随机抽取一组固定的上下文示例,并使用相同的集合用于PAL和COT。

Baseline

我们考虑了三种提示策略:

  • Direct Prompting
  • COT Prompting
  • PAL Prompting

本文使用CodeX (code-davinci-002)作为后端LLM,用于PA L、DIRECT和COT。

4.1 Mathematical Reasoning

作者在八个数学应用题数据集上评估了PAL。这些任务中的每个问题都是一个小学水平的代数应用题。图3显示了一个问题和PAL示例提示的示例。作者发现使用显式的NL中间步骤并不能进一步使这些数学推理任务受益,因此作者在提示符中只保留了有意义的变量名。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

LLMs可以对较小的数字进行简单的计算。然而,Madaan和Yazdanbakhsh发现,流行的GSM8K数学推理问题数据集中50%的数字是0到8之间的整数。这就提出了一个问题:LLM是否可以推广到更大的非整数? 我们构建了一个更难的GSM8K版本,我们称之为GSM-HARD,通过将GSM8K问题中的数字替换为更大的数字。具体来说,问题中的一个数字被替换为最多7位的随机整数。

4.2 Symbolic Reasoning

将PAL应用于BIG-Bench Hard的三个符号推理任务,其中涉及对对象和概念的推理:

  1. Colred OBJECTS要求回答关于表面上有色物体的问题。这项任务需要跟踪每个物体的相对位置、绝对位置和颜色。图4显示了一个问题示例和PAL提示示例。
  2. PENGUINS用自然语言描述了一张企鹅表和一些附加信息,任务是回答一个关于企鹅属性的问题,例如“有多少只企鹅不满8岁?”虽然Pengines和Corred OBJECT任务都需要跟踪对象,但Pengines也描述了动态,因为问题中的企鹅可以添加或删除。图17显示了一个问题、一个思维链提示和PAL提示的示例。
  3. DATE是一个日期理解任务,它涉及到从自然语言描述中推断日期,对相对时间段进行加减法运算,并具有一些全局知识,如“二月有多少天”,并进行相应的计算。附录J.3给出了提示示例。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

4.3 Algorithmic Tasks

最后,作者在算法推理方面比较了PAL和COT。在这些任务中,人类程序员可以在预先了解问题的情况下编写确定性程序。实验了两个算法任务:对象计数(Object Count)和重复拷贝(Repeat Copy)。对象计数涉及回答关于属于某一类型的对象数量的问题。例如,如图5所示:“I have a chair, two potatoes, a cauliflower, a lettuce head, two tables, … How many vegetables do I have?”)。重复拷贝需要根据指令生成一个单词序列。例如,如附录J.6所示:“Repeat the word duck four times, but halfway through also say quack”)。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

5 实验结果

5.1 Math Results

表1显示实验结果。有趣的是,COT(使用CodeX)在一些数据集(如ASDIV)中的表现也比PaLM-540B好,但在其他数据集(如SVAMP)中表现不如PaLM-540B。然而,使用PAL进一步提高了所有数据集的求解率。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

GSM-HARD

在GSM-HARD上,Direct和COT Prompting相比于GSM-8K都下降了很大的性能表现,而PAL则很小。即使作者把COT的Prompt也改成了大的数字(表5,说明LLM并不擅长大数字的运算)

大数字还是错误推理?

GSM-HARD上的失败主要是由于LLM无法做算术,还是问题中的大数字“迷惑”了LM,从而产生不合理的中间步骤?为了研究这一点,作者评估了COT对同一问题的两个版本(有和没有大数字)的输出。实验发现,在分析的25个案例中,有16个COT生成了几乎相同的自然语言“思想”,这表明主要的失败模式是无法准确地执行算术。示例输出在附录表11中提供。

注:这里就是再继续论证大模型很擅长COT,但是不擅长大数值计算;

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

Top-K抽样

正如Wang et al.所发现的,通过对输出进行Top-K抽样,使用多数投票选择最终答案,可以进一步改进COT式方法。因此,作者使用核采样重复了贪心解码实验,如表3所示,这进一步提高了PAL在GSM-8K上的准确率,从72.0%提高到80.4%,在相同样本数量的情况下,准确率比Minerva-540B提高了1.9%。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

5.2 Symbolic Reasoning & Algorithmic Tasks Results

符号推理和算法任务的结果如表2所示。PAL大幅度超过了Direct和COT Prompting。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

PAL对问题的复杂性敏感吗?

我们研究了PAL和COT的性能如何随着输入问题复杂性的增长而变化,以Colred OBJECTS问题中的对象数量来衡量。如图6所示,PAL在所有输入长度上都优于COT。随着问题中对象数量的增加,COT的准确性不稳定并下降,而PAL始终保持接近100%。

6 分析

PAL对较弱的LM有用吗?

作者比较了PAL和COT两种提示方法使用相同的弱基线模型code-cushman-001和code-davinci-001时的结果。如图7所示,尽管代码cushman-001和代码davinci-001的绝对准确性较低,但PAL相对于COT的相对改善在各个模型中保持一致。这表明PAL可以与较弱的模型一起工作,而它的效益也可以优雅地扩展到较强的模型。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

PAL对NL的LM模型有用吗?

作者还尝试使用text-davinci系列的PAL。图8显示了以下有趣的结果:当基本LM的“代码建模能力”较弱时(使用text-davinci-001), COT的性能优于PAL。然而,一旦LM的代码建模能力足够强(使用text-davinci-002和text-davinci-003), PAL的性能优于C OT, PAL text-davinci-003的性能几乎与PAL code-davinci-002相当。这表明PAL并不局限于代码的lm,它可以与主要为自然语言训练的lm一起工作,如果它们具有足够高的编码能力。

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

PAL更好是因为Python prompt还是因为解释器?

作者尝试生成Python代码,同时要求神经LM也“执行”它,而不使用解释器。作者创建了类似于PAL的提示,除了它们包含最终答案。结果(表6)表明,在GSM-8K上的解题率为23.2,远低于PAL的72.0,仅比DIRECT高4.5个点。这些结果加强了我们的假设,即PAL的主要好处来自于与解释器的协同作用,而不仅仅是更好的提示

使用Program-Aided Language Models(PAL)进行复杂推理任务的有效性研究

变量名的命名重要吗?

在所有实验中,PAL提示中使用了有意义的变量名,以简化模型对变量与它们所代表的实体的基础。然而,对于Python解释器,变量名是没有意义的。为了衡量有意义的变量名的重要性,作者尝试了两个提示变量:

  1. PAL−comment,没有中间的NL注释。
  2. PAL−comment−var,没有中间的NL注释,变量名替换为随机字符。

结果如图9所示。在Colred Object和DATE中,删除中间的NL注释,但保留有意义的变量名(PAL−comment)与完整的PAL提示符相比,略微降低了结果,但它仍然比基线COT获得了更高的精度。删除变量名(PAL−comment−var)会进一步降低准确性,并且性能比COT更差。因为变量名在代码质量中有重要的作用,有意义的变量名只期望简化Codex的推理,Codex主要是在有意义的名称上进行训练,Madaan等人(2022)也发现了这一点。

7 相关工作

略,这里提一句就是之前Binder这个论文(juejin.cn/post/718439…)做了类似的工作。

8 总结

本文介绍了一种新的自然语言推理方法——PAL,它使用程序作为中间推理步骤。与现有的基于LM的推理方法不同,它的主要思想是将求解和计算工作交给外部Python解释器,而不是同时使用LLM来理解问题和解决问题。如果给出正确预测的编程步骤,就会得到保证准确的最终答案。作者在BIG-Bench Hard和其他基准测试的13个任务中演示了LLM和Python解释器之间的无缝协同。在所有这些基准测试中,PA L优于大型LLMs,如PaLM-540 B,后者使用流行的“思维链”方法,并在所有这些基准测试中设置了最新的最先进的精度。作者相信,这些结果为未来的神经符号AI推理者打开了令人兴奋的方向。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

使用numpy和matplotlib进行数据可视化和简单探索

2023-12-21 9:27:14

AI教程

基于Transformer的时空特征编码器BEVFormer详解

2023-12-21 9:39:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索