【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。

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 13:50:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 13:50:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 13:50:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 13:50:06       18 阅读

热门阅读

  1. python爬虫之POST和GET方法总结(6)

    2024-04-20 13:50:06       9 阅读
  2. Docker的使用技巧

    2024-04-20 13:50:06       14 阅读
  3. vue3:自定义组件使用v-model

    2024-04-20 13:50:06       13 阅读
  4. python中的设计模式:单例模式

    2024-04-20 13:50:06       13 阅读
  5. windows用bat脚本将nginx安装为服务

    2024-04-20 13:50:06       11 阅读
  6. python应用

    2024-04-20 13:50:06       11 阅读
  7. 微信小程序之页面跳转

    2024-04-20 13:50:06       11 阅读
  8. react 封装请求axios,直接调用即可

    2024-04-20 13:50:06       13 阅读
  9. Https 中的CA证书

    2024-04-20 13:50:06       16 阅读