PAL: Program-aided Language Models

PAL: Program-aided Language Models

ArXiv:https://arxiv.org/pdf/2211.10435
GitHub:https://reasonwithpal.com/

一、动机

  • 大模型与Chain-of-Thought可以很好地将一些复杂的问题分解为若干个子问题并进行逐步推理;
  • 但是对于一些较为复杂的数学运算,活着涉及到交大的数字符号运算时,即便大模型对任务的规划和分解思考是正确的,但是依然会存在计算错误,这些错误通常大模型很难很好地解决;
  • 因此,本文思考将一些复杂的推理任务先用大模型进行分解,其次让大模型生成python代码并基于解释器来实现计算。通过引入代码,可以弥补由于计算错误所带来的问题。

This bridges an important gap in chain-of- thought-like methods, where reasoning chains can be correct but produce an incorrect answer.

二、方法

本文提出Program-Aided Language Model(PAL)。
相比于Chain-of-thought,每一个exemplar中包含一个推理路径,这个推理路径时融合了自然语言和python代码。且最终只提供完整的变成代码,不提供最终答案。大模型在该prompt的引导下对目标测试样本进行推理和代码生成,最终借助python解释器获得最终答案。
下图展示了一个同时含有自然语言和python代码的推理路径:
image.png
PAL方法与CoT的对比图如下所示:
image.png
Exemplar的构建
对于评测数据集中,如果现有的工作如果已经提供了exemplar,则直接使用,否则则随机采样3~6个标注样本作为exemplar。
推理路径中的代码函数名称也要与原始变量名保持一致,采用下划线分割的形式定义。

For example, a variable that describes the number of apples in the basket should have a name such as num apples in basket. This keeps the generated code linked to the entities in the question.

三、实验

数据集:

  • 数学运算:GSM8K、SVAMP、ASDIV、MAWPS;

image.png

  • 符号推理:BBH-Hard

image.png

  • 算法推理:BBH-Hard

image.png

GSM8K-Hard:
作者通过启发式更改数字的方式构建了一个新的数据集,并基于这个数据发现50%的情况下大模型虽然给出正确的推理思路但是由于交大的数字计算存在错误导致最终预测错误。

符号推理的prompt样例:
image.png

数学运算实验结果:
image.png

四、实现

Prompt

针对数学运算、符号推理、算法运算三种类型的任务分别设计了带有编程语言和自然语言的prompt。

MATH_CHAT_BETA_PROMPT = '''
Let's use python to solve math problems. Here are three examples how to do it,
Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?

def solution():
“”“Olivia has $23. She bought five bagels for $3 each. How much money does she have left?”“”
money_initial = 23
bagels = 5
bagel_cost = 3
money_spent = bagels * bagel_cost
money_left = money_initial - money_spent
result = money_left
return result


Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many golf balls did he have at the end of wednesday?

def solution():
“”“Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many golf balls did he have at the end of wednesday?”“”
golf_balls_initial = 58
golf_balls_lost_tuesday = 23
golf_balls_lost_wednesday = 2
golf_balls_left = golf_balls_initial - golf_balls_lost_tuesday - golf_balls_lost_wednesday
result = golf_balls_left
return result


Q: There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?

def solution():
“”“There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?”“”
computers_initial = 9
computers_per_day = 5
num_days = 4 # 4 days between monday and thursday
computers_added = computers_per_day * num_days
computers_total = computers_initial + computers_added
result = computers_total
return result


How about this question?
Q: {question}
'''.strip()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

个人成长的利器:复盘教你如何避免重蹈覆辙

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 最近忙着学习和工作,更新比较少,期间一直在思考如何才能快速…

区块链技术原理

1.起源: ➢ 中本聪(Satoshi Nakamoto), 2008 ➢ 比特币:一种点对点的电子现金系统 2.分布式账本技术原理 ➢ 将交易向全网所有节点进行广播 ➢ 众多记账节点对记账权达成共识,由共识确认的记账节点把记账区块发布给全网 ➢ 所有账本数据完整存储于区块…

【Linux】进程间通信_1

文章目录 七、进程间通信1. 进程间通信分类管道 未完待续 七、进程间通信 进程间由于 进程具有独立性 ,所以不可以直接进行数据传递。但是我们通常需要多个进程协同,共同完成一件事,所以我们需要进程间通信的手段。进程间通信的本质就是先让…

AI 开发平台(Coze)搭建小游戏《挑战花光10亿》

前言 本文讲解如何从零开始,使用扣子平台去搭建一个小游戏 这是成品链接:挑战花光10亿 - 扣子 AI Bot (coze.cn) 欢迎大家去体验一下 效果 正文 什么是coze平台? 扣子(Coze)是字节跳动推出的一站式 AI 开发平台&am…

osi七层参考模型和tcp/ip模型的区别与相似之处

osi七层参考模型: 2.tcp/ip四层参考模型: osi七层参考模型与tcp/ip四层参考模型的相似与区别: 相同点: 2者都是模型化层次化 下层对上层提供服务支持 每层协议彼此相互独立 不同点:OSI先有模型才有协议 TCP/IP先有…

DS:二叉树的链式存储及遍历

​ 欢迎来到Harper.Lee的学习世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu可以来后台找我哦! ​ 一、引入 1.1 二叉树的存储方式 在之前接触到的满二叉树和完全二叉树使用的是数组的存储方式(DS:树与…

Python编程技巧:如何正确使用with语句(Python中with用法详解)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 基本语法📝 处理文件📝 处理网络连接📝 管理线程锁📝 管理数据库连接📝 管理临时目录和文件📝 使用上下文装饰器📝 自定义上下文管理器🎯 示例1🎯 示例2📝 使用多个上下文管理器📝 上下…

Web渗透:文件上传-后端过滤

在上一篇文件上传的内容中笔者阐述了文件上传漏洞产生的相关原理以及使用了一个pikachu靶场的例子进行演示,在这个例子中涉及到了前端代码对于文件上传漏洞的相关防护,以及站在攻击者的角度我们要如何绕过前端的防护成功进行攻击;但是事实上对…

【ACM出版】2024人工智能与自然语言处理国际学术会议(AINLP 2024,7月19-21)

2024人工智能与自然语言处理国际学术会议(AINLP 2024)将于2024年7月19-21日在中国珠海召开,该会议作为第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)分会场召开。 本次会议主要围绕“人工智能与自然语言处…

pycharm的一些配置

1.安装 2.字体 3.新建文件模版 4.快捷键设置

【会议征稿,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)

第四届管理科学和软件工程国际学术会议(ICMSSE 2024)由ACM珠海分会,广州番禺职业技术学院主办;全国区块链行业产教融合共同体,AEIC学术交流中心承办,将于2024年7月19-21日于广州召开。 会议旨在为从事管理与软件工程领域的专家学…

[Qt] Qt Creator中配置 Vs-Code 编码风格

新建vscode-onedark.xml文档 &#xff0c;将如下内容复制进去&#xff0c;并配置到Creator中&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <style-scheme version"1.0" name"One Dark"><style name"Tex…

吴恩达机器学习 第三课 week2 推荐算法(上)

目录 01 学习目标 02 推荐算法 2.1 定义 2.2 应用 2.3 算法 03 协同过滤推荐算法 04 电影推荐系统 4.1 问题描述 4.2 算法实现 05 总结 01 学习目标 &#xff08;1&#xff09;了解推荐算法 &#xff08;2&#xff09;掌握协同过滤推荐算法&#xff08;Collabo…

超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!

众所周知&#xff0c;实时目标检测( Real-Time Object Detection )一直由 YOLO 系列模型主导。 飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE &#xff0c;同年在 PP-YOLOE 的基础上提出了 PP-YOLOE 。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力方面…

2. 数据结构分析即索引库的crud

1. 数据库脚本 DROP TABLE IF EXISTS tb_hotel; CREATE TABLE tb_hotel (id bigint(0) NOT NULL,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 酒店名称,address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_090…

【c2】编译预处理,gdb,makefile,文件,多线程,动静态库

文章目录 1.编译预处理&#xff1a;C源程序 - 编译预处理【#开头指令和特殊符号进行处理&#xff0c;删除程序中注释和多余空白行】- 编译2.gdb调试&#xff1a;多进/线程中无法用3.makefile文件&#xff1a;make是一个解释makefile中指令的命令工具4.文件&#xff1a;fprint/f…

常见的七大排序

目录 前言 冒泡排序 选择排序 插入排序 堆排序 希尔排序 快排 归并排序 前言 本文介绍七种常见的排序方式&#xff1a;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;堆排序&#xff0c;希尔排序&#xff0c;快排&#xff0c;归并排序 冒泡排序 将每2…

Rsync未授权访问-vulfocus

1.原理 Rsync是linux上文件传输的协议&#xff0c;如果有返回直接可以看到&#xff0c;部分主机使用协议的时候不会加密码&#xff0c;就容易造成未授权访问漏洞 2.复现 打开vulfocus.io,搜索rsync关键字&#xff0c;打开环境 在自己的主机上去连接远程服务器&#xff1a; r…

linux高级编程(1)

linux操作系统编程: 实现一个 用户程序 (1).库函数 --来实现 (2).系统调用 也就是说&#xff0c;程序要进行系统调用的话&#xff0c;有直接和间接&#xff08;通过库函数&#xff09;两种方式 linux里面对文件的处理: 思想: 一切皆文件 everything is file&…

轻松上手MYSQL:MYSQL事务隔离级别的奇幻之旅

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索MYSQL索引数据结构之旅✨ &#x1f44b; 大家好&#xff01;文本学习…