【RAG 论文】Program-of-Thoughts(PoT)提示:让 LLM 生成 Python 代码来解决复杂的数字计算问题

论文:Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks
⭐⭐⭐⭐
TMLR 2023
Code:Program-of-Thoughts | GitHub

论文速读

文章提出了 PoT Prompting 方法,PoT 可以看作是 CoT(Chain-of-Thoughts)的改进,该方法通过生成 Python 程序代码来表达推理步骤,并通过 Python 解释器来执行这些代码从而完成计算,从而提高了数值推理任务的准确性和效率。论文在数学推理数据集和金融数据集上进行了实验,发现 PoT 比 CoT 更擅长解决这些复杂的计算推理问题。

文章展示了两种 PoT 方法:

  • Few-shot PoT prompting:通过 in-context learning 的思路,给出几个 exemplars(QA 示例)让 LLM 学会去生成代码
  • Zero-shot PoT prompting:直接通过文字提示的方法,让 LLM 去生成代码

PoT
上图是两种 PoT 思路的示例,也是本工作主要使用的 prompt。

PoT 能够产生作用的主要原因在于,LLM 并不擅长数学符号的计算,而 PoT 把这部分复杂计算任务交给了外部的 Python 解释器,而 LLM 只需要负责使用 Python 来表达推理过程就可以了。

当然,论文也认为 PoT 与 CoT 各有自己擅长的部分,两者是可以结合的:

PoT 与 CoT 结合
也就是将推理分为多个 stage,其中需要计算推理的交给 PoT 和 Python 解释器来完成,语义推理的就交给 CoT 完成,从而得到最终答案。

实验设置

数据集的选择

本工作主要选用了两类数据集:

  • Math Word Problems(MWP)数据集:这类数据集是回答使用自然文本表达的数学问题,包括 GSM8K、AQuA、SVAMP、MultiArith、TabMWP。
  • Financial Problems 数据集:要求回答 math-driven financial problem,包括 FinQA、ConvFinQA、TATQA。

模型的选择

主要使用了 GPT-3、ChatGPT、CodeGen、CodeT5+、Xgen 等模型

Baseline 的选择

包括 Codex、GPT-3、PaLM、LaMDA

消融实验

设计包括了多种类型的消融实验,具体可参考原论文。

这里值得关注论文对回答错误的分析,错误主要分为两种:

  1. value grounding error:指模型没有把正确的值赋值给变量
  2. logic generation error:没能产生正确的计算过程

并对 PoT 下 LLM 回答错误的分析,发现大多数错误都是 value grounding error 类型。

总结

本文提出的 PoT Prompting 是一种提高 LLM 解决复杂数学计算问题的方法,并且可以与 CoT 进行互补,从而达到更好的效果。

PoT 通过提示让 LLM 生成 Python 代码,并交由 Python 解释器完成相关计算,LLM 只需要负责表达推理思路。下面是一个使用“斐波那契数列”的数学问题来展示 PoT 相比于 CoT 的强大之处:

CoT 对比 PoT

  • 左图是 CoT,右图是 PoT。
  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值