专攻数学的Prompt:使GPT-3解数学题准确率升至92.5%

news2024/10/5 23:27:28

专攻数学的Prompt:使GPT-3解数学题准确率升至92.5%

  • 写在最前面
  • 示例(试过了,难点的和普通输出差不多;只能说,比简单的题目输出内容更丰富一些)
    • MathPrompter解题示例
  • 机理
  • MathPrompter是怎么工作的(看这个数据流图就大致了解原理了)
    • 案例
      • 1. 生成代数模板 Generating Algebraic template
      • 2. 数学提示 Math-prompts
      • 3. 计算验证 Compute verification
      • 4. 统计学意义 Statistical significance
    • 论文实验结果

写在最前面

参考论文[Submitted on 4 Mar 2023]:https://arxiv.org/abs/2303.05398
参考:https://zhuanlan.zhihu.com/p/615383191

在人工智能领域,解决复杂数学问题一直是一个巨大的挑战。最近,微软研究院的MathPrompter技术为这一领域带来了革命性的进展,无需微调即可打造「理科」语言模型,显著提高了GPT-3在数学问题解答中的准确率。

相较于传统的自然语言理解任务,数学问题的答案通常较为具体和明确。然而,在数学问题上,现有的语言模型往往不能提供足够的置信度,让用户难以判断答案的可靠性。MathPrompter技术不仅提升了问题解答的准确性,还增加了对预测结果的置信度。

关键词:“自然语言处理”、“零样本学习”、“推理技术”、“人工智能”

示例(试过了,难点的和普通输出差不多;只能说,比简单的题目输出内容更丰富一些)

基于上述原则,我们可以构建一个MathPrompter示例,用于解决一个代数学题目。假设我们有以下数学问题:

问题: 解方程 ( x^2 - 5x + 6 = 0 )。

为了使用MathPrompter技术解决这个问题,我们将遵循以下步骤:

MathPrompter解题示例

  1. 遵循已知结果:

    • 首先,应用代数基本定理,我们知道二次方程总有两个解(可能相同,可能是复数)。
    • 对于 ( x^2 - 5x + 6 = 0 ),我们预期将会找到两个解。
  2. 多重验证:

    • 我们将使用分解法和求根公式两种方法来解这个方程。
    • 分解法: 尝试找到两个数,它们的乘积等于6(常数项),它们的和等于-5(一次项的系数)。
    • 求根公式: 使用 ( x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} ),其中 ( a = 1, b = -5, c = 6 )。
  3. 交叉检查:

    • 分解法可能得出 ( (x - 2)(x - 3) = 0 ),因此解为 ( x = 2 ) 和 ( x = 3 )。
    • 求根公式给出的解也应该是 ( x = 2 ) 和 ( x = 3 )。这需要计算并验证。
  4. 计算验证:

    • 使用计算器或电脑验证求根公式的计算结果。
    • 检查 ( x = 2 ) 和 ( x = 3 ) 是否满足原方程 ( x^2 - 5x + 6 = 0 )。

通过这些步骤,MathPrompter不仅提供了问题的答案,而且通过多步骤验证确保了答案的准确性。这种方法模仿了人类解决数学问题时的直觉和逻辑思维过程,从而提高了问题解答的准确率和置信度。

机理

近年来,自然语言处理技术的飞速进步在很大程度上得益于大型语言模型(LLMs)的规模不断扩大。这些模型展示了令人瞩目的零样本(zero-shot)和少样本(few-shot)学习能力,进而推动了提示(prompting)技术的发展。通过这种技术,用户只需向LLM提供少量示例,就能使其预测新任务的结果。

虽然在处理单步任务时,提示技术已显示出相当的成功,但在涉及多步骤推理的任务上,其性能尚有提升空间。人类在面对复杂问题时,往往会将问题分解并逐步解决。思维链(Chain of Thought,CoT)提示技术便是将这种人类的直觉方式引入到LLMs中,在多种需要推理的自然语言处理任务上显著提高了性能。

本文主要研究了“用于解决数学推理任务”的零样本思维链(Zero-shot-CoT)方法,之前的工作已在MultiArith数据集上将准确率从17.7%提升至78.7%,但仍存在两个主要问题:

  1. 尽管模型遵循的思维链提高了结果的准确性,但并未检验所遵循每一步的有效性。
  2. 对于LLM的预测结果,缺乏置信度(confidence)评估。

MathPrompter是怎么工作的(看这个数据流图就大致了解原理了)

为了在一定程度上解决这些差距,研究人员从「人类解决数学题的方式」中得到启发,将复杂问题分解为更简单的多步骤程序,并利用多种方式在每一个步骤中对方法进行验证。

在这里插入图片描述

由于LLM是生成式模型,要确保生成的答案是准确的,特别是对于数学推理任务,就变得非常棘手。

研究人员观察学生解决算术问题的过程,总结出了学生为验证其解决方案而采取的几个步骤:

  1. 遵循已知结果(Compliance with known results),通过将解决方案与已知结果进行比较,可以评估其准确性并进行必要的调整;当问题是一个具有成熟解决方案的标准问题时,这一点尤其有用。

  2. 多重验证 Multi-verification,通过从多个角度切入问题并比较结果,有助于确认解决方案的有效性,确保其既合理又准确。

  3. 交叉检查 Cross-checking,解决问题的过程与最终的答案同样必要;验证过程中的中间步骤的正确性可以清楚地了解解决方案背后的思维过程。

  4. 计算验证 Compute verification,利用计算器或电脑进行算术计算可以帮助验证最终答案的准确性

案例

具体来说,给定一个问题
Q:在一家餐厅,每份成人餐的价格是5美元,儿童免费用餐。如果有15个人进来,其中8个是孩子,那么这群人要花多少钱吃饭?

Q: At a restaurant, each adult meal costs $5 and kids eat free. If a group of 15 people came in and 8 were kids, how much would it cost for the group to eat?

在这里插入图片描述

1. 生成代数模板 Generating Algebraic template

在这里插入图片描述

Qt: at a restaurant, each adult meal costs A and kids eat free. if a group of B people came in and C were kids, how much would it cost for the group to eat?
Mapping: {A:5, B:15, C:8}

首先将问题转化为代数形式,通过使用键值映射将数字项替换为变量,然后得到修改后的问题Qt

2. 数学提示 Math-prompts

在这里插入图片描述

基于上述多重验证和交叉检查的思维过程所提供的直觉上,使用两种不同的方法生成Qt的分析解决方案,即代数方式和Pythonic方式,给LLM提供以下提示,为Qt生成额外的上下文。

提示可以是「推导出一个代数表达式」或「编写一个Python函数」

Algebraic prompt: Write a mathematical equation and generate the answer format
starting with ‘Answer =’
Python prompt: Write a Python function that returns the answer

LLM模型在响应提示后可以输出如上表达式。

上述生成的分析方案为用户提供了关于LLM的「中间思维过程」的提示,加入额外的提示可以提高结果的准确性和一致性,反过来会提高MathPrompter生成更精确和有效的解决方案的能力。

3. 计算验证 Compute verification

在这里插入图片描述

使用Qt中输入变量的多个随机键值映射来评估上一步生成的表达式,使用Python的eval()方法对这些表达式进行评估。

然后比较输出结果,看是否能在答案中找到一个共识(consensus),也可以提供更高的置信度,即答案是正确且可靠的。

一旦表达式在输出上达成一致,就使用输入Q中的变量值来计算最终的答案。

4. 统计学意义 Statistical significance

在这里插入图片描述

为了确保在各种表达式的输出中达成共识,在实验中将步骤2和3重复大约5次,并报告观察到的出现最频繁的答案值。

在没有明确共识的情况下,重复步骤2、3、4。

论文实验结果

在MultiArith数据集上对MathPrompter进行评估,其中的数学问题专门用来测试机器学习模型进行复杂算术运算和推理的能力,要求应用多种算术运算和逻辑推理才能成功地解决。

在这里插入图片描述

在MultiArith数据集上的准确率结果显示,MathPrompter的表现优于所有的Zero-shot和Zero-shot-CoT基线,将准确率从78.7% 提升到 92.5%

可以看到,基于175B参数GPT3 DaVinci的MathPrompter模型的性能与540B参数模型以及SOTA的Few-shot-CoT方法相当。

在这里插入图片描述

从上表可以看到,MathPrompter的设计可以弥补诸如「生成的答案有时会有一步之差」的问题,可以通过多次运行模型并报告共识结果来避免。

此外,推理步骤可能过于冗长的问题,可以由Pythonic或Algebraic方法可以解决这个问题,通常需要较少的token

此外,推理步骤可能是正确的,但最终的计算结果却不正确,MathPrompter通过使用Python的eval()方法函数来解决这个问题。

在大部分情况下,MathPrompter都能生成正确的中间和最终答案,不过也有少数情况,如表中的最后一个问题,代数和Pythonic的输出都是一致的,但却有错误。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招算法高频算法笔试题

自己在秋招过程中遇到的算法笔试题,包含中大厂,都附解析! 汽水瓶 如果汽水瓶数目为1或者0,那么一瓶都喝不到 如果汽水瓶数目为2或者3,那么只能喝到一瓶 如果为2,喝到一瓶后手里一个瓶子都没有了&#xff…

Flume学习笔记(3)—— Flume 自定义组件

前置知识: Flume学习笔记(1)—— Flume入门-CSDN博客 Flume学习笔记(2)—— Flume进阶-CSDN博客 Flume 自定义组件 自定义 Interceptor 需求分析:使用 Flume 采集服务器本地日志,需要按照日志…

for,while,do-while,死循环,嵌套循环,跳转关键字,随机数

1.for循环 public class ForDemo1 {public static void main(String[] args) {for (int i 0; i < 5; i) {System.out.println("HelloWorld");}System.out.println("--------------------------------------------");for (int i 1; i <10 ; i) {Sy…

SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

SELF-RAG: 让LLM集检索&#xff0c;生成跟评判等多种能力于一身 提纲 1 简介 2 SELF-RAG 3 实验结论 4 讨论 参考文献 1 简介 尽管基础能力出众&#xff0c;但是大模型只能依赖于被压缩到模型参数中的知识&#xff0c;所以经常会生成不符合事实的回复。针对这种事实性错…

【LeetCode刷题-滑动窗口】-- 795.区间子数组个数

795.区间子数组个数 class Solution {public int numSubarrayBoundedMax(int[] nums, int left, int right) {return lessEqualsThan(nums,right) - lessEqualsThan(nums,left - 1);}private int lessEqualsThan(int[] nums,int k){int len nums.length;int res 0,left 0,ri…

wpf devexpress 绑定数据编辑器

定义视图模型 打开前一个项目 打开RegistrationViewModel.cs文件添加如下属性到RegistrationViewModel类 [POCOViewModel] public class RegistrationViewModel {public static RegistrationViewModel Create() {return ViewModelSource.Create(() > new RegistrationVie…

抖音直播招聘报白是一种新颖、高效的招聘方式增加曝光度和吸引力

总之&#xff0c;抖音招聘是一种新颖、高效的招聘方式&#xff0c;它可以为公司带来更大的曝光度和吸引力&#xff0c;帮助公司吸引更多优秀的人才。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖音的短视频流量红利&#xff0c;触达到每天超过8亿的活跃用户…

移动机器人路径规划(四)--- 考虑机器人模型下的运动规划KINODYNAMIC PATHFINDING

目录 1 动力学概念简介 2 State Lattice Planning 3 Boundary Value Problem 4 混合A*算法 Hybrid A* 5 Kinodynamic RRT* 1 动力学概念简介 一种生成机器人的运动同时受限制于运动学的约束&#xff08;避障&#xff09;以及动力学的约束&#xff08;在速度加速度力的约束…

wpf devexpress 创建布局

模板解决方案 例子是一个演示连接数据库连接程序。打开RegistrationForm.BaseProject项目和如下步骤 RegistrationForm.Lesson1 项目包含结果 审查Form设计 使用LayoutControl套件创建混合控件和布局 LayoutControl套件包含三个主控件&#xff1a; LayoutControl - 根布局…

若依启动步骤

1.创建数据库 2.启动redis 3.改后端的数据库连接配置 4.配置redis redis的地址&#xff1a;cmd中ipconfig命令查看 6.启动后端&#xff1a;如下 7.启动前端ruoyi-ui中 先运行npm install&#xff0c;再npm run dev。项目就启动成功了。 用户名&#xff1a;admin 密码&#x…

Springboot更新用户头像

人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端&#xff0c;做完整更新。但仔细想想&#xff0c;这种做法感觉有点二&#xff0c;而且浪费带宽。 于是patch诞生&#xff0c;只传一个userName到指定资源去&#xff0c;表示该请求是一个局部更新&#…

11.5MyBatis(进阶)

一.${}和#{} 1.$是直接替换,#是预处理(使用占位符,替换成?).前者不安全(SQL注入), 后者安全. 2.$的使用场景: 如果传递的值是sql的关键字,只能使用$,不能使用#(asc,desc). 二.SQL注入 注意: 如果使用${}进行传参,一定要是可以穷举的,并且要进行安全性验证(例如排序,只能传a…

戴姆勒——从豪华私家车到无人驾驶飞机

戴姆勒(DaimlerAG)是梅赛德斯-奔驰和精灵(Smart)汽车的德国母公司。自1926年其前身公司合并为戴姆勒-奔驰公司以来&#xff0c;戴姆勒在生产豪华和消费型汽车、卡车和公共汽车方面有着悠久的历史。 如今&#xff0c;除了以其精密设计的汽车闻名外&#xff0c;该公司还在设计、…

PACS医学影像信息化数字平台源码

PACS系统对医院影像科意义重大&#xff0c;将业务量巨大的影像检验流程依托于信息化技术&#xff0c;对于进行信息化建设的医院而言&#xff0c;是十分必要的。 PACS系统源码&#xff0c;集成三维影像后处理功能&#xff0c;包括三维多平面重建、三维容积重建、三维表面重建、三…

Redis(哈希Hash和发布订阅模式)

哈希是一个字符类型字段和值的映射表。 在Redis中&#xff0c;哈希是一种数据结构&#xff0c;用于存储键值对的集合。哈希可以理解为一个键值对的集合&#xff0c;其中每个键都对应一个值。哈希在Redis中的作用主要有以下几点&#xff1a; 1. 存储对象&#xff1a;哈希可以用…

计算机视觉:驾驶员疲劳检测

目录 前言 关键点讲解 代码详解 结果展示 改进方向&#xff08;打哈欠检测疲劳方法&#xff09; 改进方向&#xff08;点头检测疲劳&#xff09; GUI界面设计展示 前言 上次博客我们讲到了如何定位人脸&#xff0c;并且在人脸上进行关键点定位。其中包括5点定位和68点定…

《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表

上链接&#xff1a;P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405 上题干&#xff1a; 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力&#xff0c;Farmer John 在谷仓的墙上放了一…

UE5 - ArchvizExplorer - 数字孪生城市模板 -学习笔记

1、学习资料 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-explorer-documentation/ 官网下载的是一个简单版&#xff0c;需要下载扩展&#xff0c;并拷贝到项目录下&#xff0c;才有完整版 https://drive.googl…

Vatee万腾的科技征程:Vatee数字化创新的前沿探讨

在Vatee万腾的科技征程中&#xff0c;我们目睹了一场数字化创新的引领之旅&#xff0c;探讨了Vatee在科技前沿的独到见解。Vatee万腾不仅仅是一家科技公司&#xff0c;更是一支前行不辍的冒险队伍&#xff0c;通过不断突破自我&#xff0c;探索未知领域&#xff0c;引领着数字化…

TableUtilCache:针对CSV表格进行的缓存

TableUtilCache:针对CSV表格进行的缓存 文件结构 首先来看下CSV文件的结构&#xff0c;如下图&#xff1a; 第一行是字段类型&#xff0c;第二行是字段名字&#xff1b;再往下是数据。每个元素之间都是使用逗号分隔。 看一下缓存里面存储所有表数据的字段 如下图&#xff…