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

诸神缄默不语-个人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 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/269174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习:初识Linux

目录 1. 引子:1.1 简述:操作系统1.2 学习工具 2. Linux操作系统中的一些基础概念与指令2.1 简单指令2.2 ls指令与文件2.3 cd指令与目录2.4 文件目录的新建与删除指令2.5 补充指令1:2.6 文件编辑与拷贝剪切2.7 文件的查看2.8 时间相关指令2.9 …

【代码】Python3|无GUI环境中使用Seaborn作图的学习路线及代码(阴影折线图)

我有个需求是需要画图,让GPT帮我生成了一下学习计划。 学习路线依照GPT的来的,使用的Prompt工具是https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor。 文章目录 PrerequisiteMain Curriculum1.1 Seaborn介绍Seaborn基础保存图形为文件练习 1.2 单变量数…

day34贪心算法 part03

1005. K 次取反后最大化的数组和 简单 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数…

【数据结构和算法初阶(C语言)】带环链表问题详解(快慢指针的烧脑应用)

目录 1.铺垫-----带环链表基本了解 2. 题目:环形链表 3.环形链表|| ​编辑 3.1题解1 3.2 题解2 4.总结 1.铺垫-----带环链表基本了解 环形链表题目启迪: 环形链表特点:遍历链表会出现一模一样的地址 2. 题目:环形链表 给…

C++输入输出(I\O)

我们知道C是由C语言发展而来的,几乎完全兼容C语言,换句话说,你可以在C里面编译C语言代码。如下图: C语言是面向过程的语言,C在C语言之上增加了面向对象以及泛型编程机制,因此C更适合中大型程序的开发,然而C…

Linux 设置快捷命令

以ll命令为例: 在 Linux 系统上,ll 命令通常不是一个独立的程序,而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义,比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令,你可以按…

李沐动手学习深度学习——4.5练习

1. 在本节的估计问题中使用λ的值进行实验。绘制训练和测试精度关于λ的函数。观察到了什么? 修改代码运行如图所示,可以发现对于lamda值的变化而言,对于训练loss和测试loss的影响不大。但是如果λ 太大后,train和test的loss会变得…

Cyber RT 组件

场景 无人车上的传感器数据可能需要被融合,比如在车辆上安装了多颗雷达,不同雷达由于安装位置与自身参数差异,可探测的角度、范围、距离等都是不尽相同的,现在需要将不同雷达感知到的数据融合在一起以建立车辆所处的完整环境&…

机器学习-面经(part5、KNN和SVM)

8. KNN 8.1 简述一下KNN算法的原理? 一句话概括:KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别 工作原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数…

TypeError: the JSON object must be str, bytes or bytearray, not dict

参考文章:https://blog.csdn.net/yuan2019035055/article/details/124934362 Python基础系列(一)搞懂json数据解析与字典之间的关系 代码: 报错信息: TypeError: the JSON object must be str, bytes or bytearray, not dict …

局域网如何远程?

局域网远程一直是许多用户在处理远程连接需求时面临的一个难题。随着技术的不断进步,一种名为“天联”的组网解决方案应运而生。天联组网具有操作简单、跨平台应用、无网络要求以及独创的安全加速方案等独特优势,在解决各行业客户的远程连接需求方面发挥…

解决ipconfig不能使用的问题

问题所示:ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件。 解决办法如下: 1.右击此电脑,点击属性设置: 2.点击高级系统设置 3.点击进入环境变量 4.在系统变量中进行设置,双击PATH进行配置 5.点击新建&am…

【如何在Docker中,修改已经挂载的卷(Volume)】

曾梦想执剑走天涯,我是程序猿【AK】 提示:添加投票!!! 目录 简述概要知识图谱 简述概要 如何在Docker中,修改已经挂载的卷(Volume) 知识图谱 在Docker中,修改已经挂载…

matlab 提取分割位于多边形区域边缘内部或边缘上的点

[in,on] = inpolygon(xq,yq,xv,yv) xv 和 yv 为定义的多边形区域的,如xv = [1 4 4 1 1 ];yv = [1 1 4 4 1 ];注意最后一个数字与第一个重复,保证多边形闭合; xq 和 yq 为待查询的点in:在多边形内部和边缘的点序号on:仅在多边形边缘的点序号 提取分割方法: matrix=[xq yq…

智能汽车加速车规级存储应用DS2431P+TR 汽车级EEPROM 存储器IC

DS2431PT&R是一款1024位1-Wire EEPROM芯片,由四页存储区组成,每页256位。数据先被写入一个8字节暂存器中,经校验后复制到EEPROM存储器。该器件的特点是,四页存储区相互独立,可以单独进行写保护或进入EPROM仿真模式…

折线图实现柱状阴影背景的demo

这个是一个由官网的基础折线图实现的流程,将涉及到的知识点附上个人浅薄的见解,源码在最后,需要的可自取。 折线图 成果展示代码注解参数backgroundColordataZoomlegendtitlexAxisyAxisgridseries 源码 成果展示 官网的基础折线图&#xff…

【Python】OpenCV-使用ResNet50进行图像分类

使用ResNet50进行图像分类 如何使用ResNet50模型对图像进行分类。 import os import cv2 import numpy as np from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image# 设置…

计算机网络物理层知识点总结

本篇博客是基于谢希仁编写的《计算机网络》和王道考研视频总结出来的知识点,本篇总结的主要知识点是第二章的物理层。上一章的传送门:计算机网络体系结构-CSDN博客 通信基础 物理层概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&am…

leetcode刷题日记-K个一组翻转(链表)

题目描述 解题思路 第一种解法,也是我们常用的一种解题方法,首先遍历一遍列表,将列表中的val的值存放到数组中,然后按照要求对数组进行排序,排序之后,我们重新定义节点,将节点按照排完序的结果…

如何远程连接MySQL数据库?

在现代互联网时代,远程连接MySQL数据库成为了许多开发者和管理员必备的技能。这不仅方便了数据的共享和管理,还可以使多个团队在全球范围内协同工作。本文将介绍如何通过天联组网实现远程连接MySQL数据库,并实现高效的信息远程通信。 天联组网…