Re61:读论文 PRP Get an A in Math: Progressive Rectification Prompting

小明 2025-05-07 05:12:57 5

诸���缄默不语-个人CSDN博文目录

诸神缄默不语的论文阅读笔记和分类

论文名称:Get an A in Math: Progressive Rectification Prompting

ArXiv网址:https://arxiv.org/abs/2312.06867

官方实现网站:PRP

官方代码:https://github.com/wzy6642/PRP

本文是2024年AAAI论文,关注MWP任务。作者来自西交和圣母大学。

本文算是CoT的一种多步改进方案。

本文主要考虑到CoT会在推理路径中出错,从而导致最终结果错误,因此提出零样本提示学习方法Progressive Rectification Prompting (PRP),先通过CoT得到一个初始答案,然后以verify-then-rectify的逻辑来识别错误答案、修正推理路径:①verify: 把预测结果填回去预测问题中的masked numerical value(用正则表达式找问题中的数字,挖空一个来预测),如果预测不对就不正确 ②rectify: 用不正确答案生成推理路径(看下图,总之意思就是给(几)个参考错误答案让LLM重算)。(这两步可能会经过多次迭代)

本文认为以前工作的不足之处在于不会检查错误和改正,而这是一项重要的考试技巧。现有的检查错误的方法是重复运行LLM,投票选择最一致的答案,即self-consistency;改正的方法如progressive-hint prompting1在问题后面添加(Hint: The answer is near [H]);CoT方法对中间过程出错很敏感。

考试技巧:

第一步:substitute verification (比repeatedly checking好)

第二步:发现答案错误后要LLM避免重复出错(the answer is likely not [H])

此外还用“两个认知系统”理论来解释PRP。顶会论文是真能编啊。

(论文和代码里的模版有轻微区别,但是意思差不多其实)

1. 模版

初始模版:Q: [Q]. A: Let’s think step by step

获得答案的模版:[R] Therefore, the answer (expressed in Arabic numerals and without units) is:

得到第一个答案: a 0 ( g e n ) a_0^{(gen)} a0(gen)​

verification的问题:[Q] Suppose the answer is [A]. What is X? (If X is irrelevant to the calculation process please answer Unknown)

然后再对这个问题进行推理,得到X的预测结果。

condition mask method

如果预测错误,就认为[A]错误,rectification阶段在原问题后加:“(The answer is likely not [H])”

就成了:Q: [Q] (The answer is likely not [H]) A: Let’s think step by step

2. 实验

2.1 数据集

AddSub

SingleOp

MultiArith

SingleEq

SVAMP

GSM8K

GSM-IC2-1K

GSM-ICM-1K

2.2 实验设置

LLM:text-davinci-003

2.3 baseline

direct

zero-shot-CoT

PS

Manual-CoT

Auto-CoT

PHP-CoT

2.4 实验结果与分析

1. 主实验结果

↑题目越复杂,PRP提升效果越多

2. 消融实验

↑说明PRP效果更稳定

↑说明LLM越好,PRP效果越好

↑最大迭代数提升后,ACC会增加

3. 案例分析

3. 代码复现

我的复现版本(已以GPT-3.5为模型基底,在toy example Alg514的测试集上完成了零样本推理):https://github.com/PolarisRisingWar/Numerical_Reasoning_Collection/blob/master/codes/PRP.py


  1. Progressive-Hint Prompting Improves Reasoning in Large Language Models ↩︎

The End
微信