微软提出MathPrompter,GPT3的数学推理水平直接干到人类水平

0dc4f6f863a3d06697c5140051995690.jpeg

编|LRS 

源|新智元

ChatGPT的文科脑有救了!

大型语言模型最为人诟病的缺点,除了一本正经地胡言乱语以外,估计就是「不会算数」了。
fb5bd4530d769e84ef363df32bb4777b.png
比如一个需要多步推理的复杂数学问题,语言模型通常都无法给出正确答案,即便有「思维链」技术的加持,往往中间步骤也会出错。
与文科类的自然语言理解任务不同,数学问题通常只有一个正确答案,在不那么开放的答案范围下,使得生成准确解的任务对大型语言模型来说更具挑战性。
并且,在数学问题上,现有的语言模型通常不会对自己的答案提供置信度(confidence),让用户无从判断生成答案的可信度。
为了解决这个问题,微软研究院提出了MathPrompter技术,可以提高 LLM 在算术问题上的性能,同时增加对预测的依赖。
dabd7091d6580f2e151215a105984738.png

论文链接:

https://arxiv.org/abs/2303.05398

MathPrompter 使用 Zero-shot 思维链提示技术生成多个代数表达式或 Python 函数,以不同方式解决同一个数学问题,从而提高输出结果的可信度。
相比其他基于提示的 CoT 方法,MathPrompter还会检查中间步骤的有效性。
基于175B 参数 GPT,使用MathPrompter方法将MultiArith 数据集的准确率从78.7%提升到了92.5%!

6e7c095892789f6f93aa5d0dd38c2569.png专攻数学的Prompt1f68a62786897542aac348ed99503d15.png

近几年,自然语言处理的发展很大程度上要归功于大型语言模型(LLMs)在规模上的不断扩展,其展现出了惊人的zero-shot和few-shot能力,也促成了prompting技术的发展,用户只需要在prompt中给LLM输入几个简单的样例即可对新任务进行预测。
prompt对于单步的任务来说可以说相当成功,但在需要多步骤推理的任务中,提示技术的性能仍然不够。
人类在解决一个复杂问题时,会将其进行分解,并尝试一步步地解决,「思维链」(CoT)提示技术就是将这种直觉扩展到LLMs中,在一系列需要推理的NLP任务中都得到了性能改进。
这篇论文主要研究「用于解决数学推理任务」的Zero-shot-CoT方法,之前的工作已经在MultiArith数据集上得到了显著的准确率改进,从17.7% 提升到了 78.7%,但仍然存在两个关键的不足之处:
1、虽然模型所遵循的思维链改进了结果,但却没有检查思维链提示所遵循的每个步骤的有效性;

2、没有对LLM预测结果提供置信度(confidence)。

f410215ddf69b0c85eef109f8127a916.pngMathPrompterba92c15b07e9c9fb4e0fc9c6fdfcc2d5.png

为了在一定程度上解决这些差距,研究人员从「人类解决数学题的方式」中得到启发,将复杂问题分解为更简单的多步骤程序,并利用多种方式在每一个步骤中对方法进行验证。
5bc5ec636164558d636f1e552ebaca85.png
由于LLM是生成式模型,要确保生成的答案是准确的,特别是对于数学推理任务,就变得非常棘手。
研究人员观察学生解决算术问题的过程,总结出了学生为验证其解决方案而采取的几个步骤:
遵循已知结果(Compliance with known results),通过将解决方案与已知结果进行比较,可以评估其准确性并进行必要的调整;当问题是一个具有成熟解决方案的标准问题时,这一点尤其有用。
多重验证 Multi-verification,通过从多个角度切入问题并比较结果,有助于确认解决方案的有效性,确保其既合理又准确。
交叉检查 Cross-checking,解决问题的过程与最终的答案同样必要;验证过程中的中间步骤的正确性可以清楚地了解解决方案背后的思维过程。
计算验证 Compute verification,利用计算器或电脑进行算术计算可以帮助验证最终答案的准确性
具体来说,给定一个问题Q,

34641d12c9be9c8f246aef1e5bfa49c0.png

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

1. 生成代数模板 Generating Algebraic template

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

2. 数学提示 Math-prompts

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

ee637b390e04fd12c30e604b2450c6bc.png

提示可以是「推导出一个代数表达式」或「编写一个Python函数」
LLM模型在响应提示后可以输出如下表达式。

61a66f37fcdb58d319a6faf404f923f7.png

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

3. 计算验证 Compute verification

使用Qt中输入变量的多个随机键值映射来评估上一步生成的表达式,使用Python的eval()方法对这些表达式进行评估。
然后比较输出结果,看是否能在答案中找到一个共识(consensus),也可以提供更高的置信度,即答案是正确且可靠的。
338f2320f00760f081728ac4e690669a.png
一旦表达式在输出上达成一致,就使用输入Q中的变量值来计算最终的答案。

4. 统计学意义 Statistical significance

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

e52af6cd9c04d26a1cc48c6f7d967f32.png实验结果640700dd66a33378b5aaefc1c8184ea9.png

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

815b475feaa0616a9085c9c706b91229.png

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

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

c46fc73a0474aa4b71d81508da5aa2c7.png

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

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

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

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

3995a9cad684f7881324d3adb1382d04.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

 b0164b3dc55498f11ed6d4835c8bdcad.png

[1]https://arxiv.org/abs/2303.05398

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

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

相关文章

目标检测评价指标

1、检测精度指标 一、IoU交并比 IoU(交并比)1、IOU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是“预测的边框”和“真实的边框”的交叠率,即它们的交集和并…

数据结构03:栈、队列和数组

前言 参考用书:王道考研《2024年 数据结构考研复习指导》 参考用书配套视频:3.1.1_栈的基本概念_哔哩哔哩_bilibili 特别感谢:ChatGPT3.5老师,检查其它同学的作业是从代码里找BUG,检查我的作业是恰恰是相反的...&am…

chatgpt赋能python:Python怎么算数的总和

Python怎么算数的总和 Python是一种广泛使用的解释型编程语言,它可以用于各种应用程序的编写,包括数据分析、Web应用程序、机器学习等等。而在编写代码时,最基础的一步,就是算数计算。本文将介绍如何使用Python实现算数计算的总和…

GitHub和Git使用教程

转载自http://blog.csdn.net/javaandroid730/article/details/53522872 GitHub和Git入门 考虑到大家以前可能对版本控制工具和Linux命令行工具都不了解,我写了一个简单的博客来让大家学会入门使用方法。 GitHub的简单使用 第一步 创建GitHub账号 1. 打开GitHub官网。…

CSDN 个性化推荐的数据治理

目录 1. 背景2. 数据治理2.1 从内容层面提升数据质量2.2 从用户层面提升数据质量2.3 增加特定数据的曝光2.4 保证数据的正确性与实效性 3. 总结 相关阅读 CSDN 个性化推荐系统的设计和演进如何支持研发对CSDN个性化推荐系统重构 1. 背景 CSDN 的个性化推荐流在主站中是一个很…

解决多御浏览器问题的5大干货,看这一篇就够了

浏览器是我们频繁使用的软件之一,在使用浏览器的过程中,我们总会遇到各种各样的问题。小编这就为大家总结了一篇多御浏览器遇到问题的解决干货,这篇文章可以为大家解决多数问题,下面小编就来简单的说一说。 1、怎么对多御浏览器设…

微软 Authenticator更换登录设备

微软 Authenticator更换登录设备 要把微软 Authenticator换到其它手机,网上查到需要备份-恢复等,但是操作时发现需要Google play服务,但是安装后仍提示未安装,后发现用如下方式可进行更换。 1、登录该网址 https://mysignins.micr…

Microsoft365账号登录安全保护:使用microsoft authenticator应用验证

国际版Microsoft365在web端登录后显示组织需要更多信息,来保护账号安全。 点击下一步 使用Microsoft authenticator进行验证,在手机中下载authenticator客户端 此时可以选择添加工作账户-验证 若无法添加工作账户 选择“我想使用其他身份验证器应用”…

使用微软DNS服务器解决Hotmail、微软账户登录页面无法访问的问题

近日,在重装Windows 10系统之后,发现Edge浏览器无法登录微软账号做数据同步,具体表现为登录页面无法打开。此前,通过浏览器访问hotmail等页面的时候,也经常发生页面无法打开或者打开及其缓慢的情况,只是这次…

matlab快速解方程,matlab如何解方程 matlab解方程 matlab如何解方程

matlab解方程应该怎么解呢?在平常的学习当中,利用matlab解方程,绝对不是一门轻易掌握的学科。我们应该如何利用matlab解方程呢?下面相关方法分享给大家。 【matlab解方程】 1、先举一例,解方程"x^2100*x990" 在matlab ”Command …

matlab: 解一元多次方程与复杂的一元多次方程

1、解 syms x eqx^22*x1; ssolve(eq,x)结果: s -1-1 这里使用到syms x,意思是定义一个变量 x, 之后可以使用这个变量构造表达式。 solve(eq,x)是将x作为求解变量,求解eq0的结果。 2、比如需要求变量t, 已知k3, p6; 中间及经过 , , …

MMA-mathematica数值求解非线性偏微分方程组

参考:mathematica.pdf 参考:MATHEMATICA微分方程.pdf 数学微分方程,第三版,有两个目的。 首先,我们介绍和讨论在典型的本科和研究生课程中所涵盖的主题,包括拉普拉斯变换、傅立叶级数、特征值问题和边值问题…

MATLAB怎么解方程解,怎么用Matlab解方程?

工具/材料 matlab 2016a 打开matlab,首先定义变量x: syms x; matlab中solve函数的格式是solve(f(x), x),求解的是f(x) 0的解。 第一个例子,求解最常见的一元二次方程x^2-3*x10: solve(x^2-3*x1,x),解出的结果用精确的…

MATLAB用solve求解普通二元高次方程

MATLAB用solve求解普通二元高次方程 先说问题: 有这两个式子,其中除了u和λ,其他都是已知参数。所以,不必恐慌,看着很复杂,但是这个条件一加,其实就是很简单的二元高次方程组,把2式…

常微分方程的解法 (三): 龙格—库塔(Runge—Kutta)方法 、线性多步法

常微分方程的解法求解系列博文: 常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似 常微分方程的解法 (二): 欧拉(Euler)方法 常微分方程的解法 (三): 龙格—库塔(Runge—Kutta&…

用ode45解微分方程遇到的实际问题

最近在用ode45解微分方程数值解,试图复现论文中的图。一般来说说微分方程(组)只要按照响应的条件去撰写好对应的回调函数即可,基本没什么难度,但对于本文遇到的的这个问题,可能还需要一些技巧去实现解法&am…

MATLAB-常微分方程求解

MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y…

Mathematica解一个精巧的差分方程

Mathematica解差分方程很方便,记住一个词就可以了RSolve或者RSolveValue就可以了。以下这个例子比较特殊,存在解析解,但是软件算不出。 问题: 已知: a [ 1 ] 1 2 a[1]\sqrt{1\over2} a[1]21​ ​ a [ n 1 ] ( 1 …

解方程C++

数学上经常需要解方程。现在有函数: f(x) 2x^57x^3100,求f(x)y解。 提示:下面是goc程序画出的函数图形,可以看出函数是单调上升的。 输入格式 第一行1个实数:y,范围在[-1000000000,1000000000]。 输出格式 一个实数x…

matlab 差分方程的解(解答qq网友)

1、问题见图 2、解题代码 clear x(1)0; ybuchang0.01; y0:ybuchang:10; for n1:length(y)x(n1)x(n)ybuchang^(1/0.23)0.01*ybuchang; end plot(x(1:(end-1)),y,r) 3 结果: