当前位置: 首页 > news >正文

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()

相关文章:

  • Python爬虫实战案例之——MySql数据入库
  • 【数据库】六、事务与并发控制(封锁)
  • 麒麟移动运行环境(KMRE)——国内首个开源的商用移固融合“Android生态兼容环境”正式开源
  • Cyber Weekly #12
  • 电压互感器在线监测
  • 线性卷积(相关)和圆周卷积(相关)以及FFT之间的关系(AEC举例)
  • Linux使用——查看发行版本、内核、shell类型等基本命令
  • 政务云VMware私有云企业云平台建设参考学习方案资料
  • ModbusTcp和ModbusRtu协议
  • ChatGPT提效:告别CRUD
  • BFS:解决多源最短路问题
  • Spring响应式编程之Reactor核心接口
  • 【Linux】进程间通信_1
  • 信创适配评测
  • HTML星空特效
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【Amaple教程】5. 插件
  • 【剑指offer】让抽象问题具体化
  • ➹使用webpack配置多页面应用(MPA)
  • 4个实用的微服务测试策略
  • crontab执行失败的多种原因
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java到底能干嘛?
  • JAVA之继承和多态
  • mysql_config not found
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Phpstorm怎样批量删除空行?
  • spark本地环境的搭建到运行第一个spark程序
  • spring security oauth2 password授权模式
  • Travix是如何部署应用程序到Kubernetes上的
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 什么是Javascript函数节流?
  • 试着探索高并发下的系统架构面貌
  • 手机端车牌号码键盘的vue组件
  • 微服务框架lagom
  • 我的面试准备过程--容器(更新中)
  • 我这样减少了26.5M Java内存!
  • 学习笔记:对象,原型和继承(1)
  • 异常机制详解
  • 赢得Docker挑战最佳实践
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • AI算硅基生命吗,为什么?
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​VRRP 虚拟路由冗余协议(华为)
  • #Linux(权限管理)
  • #QT项目实战(天气预报)
  • (03)光刻——半导体电路的绘制
  • (1)bark-ml
  • (day 12)JavaScript学习笔记(数组3)