- Arxiv日期:2023.10.23
- 机构:University of Waterloo / Vector Institute / University of California, Santa Barabra / Google Research
关键词
- prompting engineering
- 程序化推理(PoT提出)
核心结论
1. CoT不擅长完成数值计算或复杂推理过程
2. 可以借助外部工具实现推理,缓解CoT不擅长的领域
3. 提出了 Program of Thoughts(PoT)的概念,旨在通过将计算委托给外部程序解释器来分离复杂的计算推理,避免了CoT中的计算错误和效率低下
4. 实验结论:
-
PoT方法在多个数学和金融问答数据集上,尤其是在数学数据集(如GSM8K、AQuA等)和金融数据集(如FinQA、ConvFinQA等)上,相较于CoT方法,表现出了显著的性能提升。在少样本和零样本设置下,PoT分别提高了约12%的性能
-
PoT + SC 能在所有数学数据集和金融数据集上取得极其强大的性能,且大大超过了CoT+SC的表现
-
在某些需要更多文本推理的任务中,可以将PoT与CoT结合使用,通过PoT执行程序生成中间结果后,再通过CoT进一步推导出最终答案,这种方法能更好地解决复杂的多阶段推理问题
主要方法
提出 PoT 的程序化推理方法,生成代码而非完整计算过程,借助外部解释器实现数值运算或推理的计算过程:
实现方法:zero-shot / few-shot
实现细节:PoT在生成程序时,不仅能够通过代码表达推理过程,还能将变量绑定到具有语义意义的名称上,从而帮助语言模型更好地理解问题并进行推理。
将CoT和PoT结合:
prompt样例:使用 #
提示生成代码
注:本系列不包括基础的知识点讲解,为笔记/大纲性质而非教程,用于论文知识点和思想和快速记忆和回顾,更多细节建议阅读论文原文