丰色 发自 凹非寺
量子位 | 公众号 QbitAI
大语言模型的数学能力到底怎么破?
一位数学本科生发现:
实际上,咱们只需像一年级小学生一样教它们“掰着手指头算”,就能让它立马变身数学小能手。
比如像“34756918247632 + 7934619867453210082”这样的大数加法,任你丢给哪个大模型,即使强如GPT-4,都算不明白。
但如果你按照他说的做,保证结果跟用计算器摁出来的一模一样。
具体怎么操作?
像小学生一样教GPT-4我们就以上面的加法题为例,要想让GPT-4算对,需要给它举两个例子。
但只需非常简单的那种就行,重点是把计算过程给它“掰开了揉碎了”讲出来。
第一个例子如下:
我们要教会它算379+64。
具体而言,先让GPT-4分别捋清两个加数的位数有几位,每位都是几。
然后告诉它如果第一个加数的位数比第二个多1位就补1个0。
在哪补?补在位数少的那个加数。于是64变成064。
这件事做完之后,再重复一遍第一个步骤。
接着,设定一些表示进位、连接等意思的变量和初始值,再从高位一位一位的相加数字,把每一位结果组合起来,就得出了最终答案。
从下面的提示词模版可以看到,一定要写的非常详细,把对方当作小学生一样看待。
(ps. 可以看到计算第二位的7+6+c时作者写错了,应该等于14,导致最终结果也错了,但这压根不影响,只要思想是对的,模型就能get到!)
对于第二个例子,步骤也一样,主要不同之处在于这次不需要补0——把人家当作小学生,就得把每种情况都讲明白。
把以上两个例子作为模版喂给GPT-4后,我们要做的就是“千叮咛万嘱咐”:
这是你必须用来进行加法运算时使用的模板,你必须使用同样的关键字。记住按照模版所写的那样,该有空格的地方都得有。不要用大写字母,因为模版里没用。在计算之前和之后都不要要添加任何解释或填充词,因为你唯一的任务就是照着上面的模板来做。最后将答案格式化为纯文本。
然后告诉它:
现在,我将提供两个新的操作数,你必须使用模版来计算答案。懂了吗?
(英文提示语如下:This is a template you must use to do addition. You must use the same keywords. You must use whitespace wherever it is used above.Do not use uppercase letters, since they’re not present in the template. Do not add any explanations or filler words before and after doing the computation. Your sole task is to follow the template above.Format the answer as plaintext.I’ll provide a new set operands and you must use the template to compute the answer. Got it?)
这时,GPT-4就会告诉你:懂了,严格按照你提供的模版来算两个数字的加法。
然后,你把“34756918247632”和“7934619867453210082”输入进去,记住一定每个数字进行空格(原因后面说):
3 4 7 5 6 9 1 8 2 4 7 6 3 2 + 7 9 3 4 6 1 9 8 6 7 4 5 3 2 1 0 0 8 2GPT-4就能开始照猫画虎完成下面这一系列的计算:
最后告诉你正确答案:
0 7 9 3 4 6 5 4 6 2 4 3 7 1 4 5 7 7 1 4.
嗯,和计算器结果一样:
而我们也随便挑了一个模型实测了一下,计算:376900+12678922(等于13055822)。
原来算不对:
套用以上方法之后,就OK了:
所以说,大语言模型还是很聪明的,只要你会教,数学计算能力压根没问题。
为什么算不对?想必大家也会好奇,为什么要像小学生这样教它们才能做对这样的数学题呢?
作者分析,有两大原因:
一是模型在处理文本输入时会进行的tokenization操作,导致数字被多个组合在一起变成一个个token。
比如咱们今天算的这道,在GPT-4眼里它看到的其实是这样的:
这也就是为什么我们需要用空格将每个数字隔开,GPT-4才不会进行拆分,才有算对的可能性。
当然,如果你仅仅是加了空格不用上面的方法教它,它也算不对。
这就引出第二个原因:没有给够它上下文学习的空间来进行计算。
GPT-4是一种自回归语言模型,这意味着它某个时间步的输出以所有先前的输出为条件,就像小学生做题一样,我们需要一种方法让我们的模型能够一步一步地检索到任何位置的数字。
因此,就需要给它设定如上的模版,让它“有迹可循”。
最后作者表示,语言模型不同于我们以前构建的任何类型的软件。所以需要一些特别的耐心。
那么,理解了以上这两个原因,大家是不是也就能更好地理解上面一系列如教小学生似的提示词操作了?
作者介绍本方法作者名叫Karthik Balaji,是滑铁卢大学数学本科生。
据个人主页介绍,他对大语言模型非常感兴趣,最近正在开始研究生成模型,尤其是扩散类型,并已经有一些小小的产出,大家感兴趣的可以去翻阅。
原文地址:
https://okarthikb.github.io/site/blog/detailed-prompting.html
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
即使是在目前这样一个科技已经比较发达的时代,我们依然离开不了最基本的计算功能,并且计算会涉足到我们生活中的各个方面。一款好的计算器,除了基本的加减乘除,还应该具备哪些功能呢?
首先,在功能模块上,小米手机的计算器分了三类:计算、换算和税贷。由传统的点击换成了滑动,左滑右滑即可切换不同的模式,单手就能完成。
在计算功能中,有普通计算模式和科学计算模式两种,点击左下角转换按钮即可完成模式转换。科学模式下,加入了一些三角函数、幂函数、对数计算的功能等。
小米手机的计算器,相比其他手机计算器而言,有一特点。当你在计算一个式子的时候,发现里面有个数输错了,不必整个式子重新计算,只需点击输错的数就能修改 ,重新输入一遍即可。
目前修改数字只能在普通计算模式下进行,不过好在两种模式的数据是互通的。
将显示框内的数字长按,即可轻松转换为大写。
换算功能中,一些数学上的单位转换,以及像亲戚称呼计算这样的神功能,相信大多数人已经玩烂了。所谓“君子动口不动手”,点击左下角语音键,动动嘴就知道啦。
值得一提的是,在换算模式中,最近新加了一项“进制换算”的功能。相信稍微对计算机有点了解的人都知道,数字除了我们一直用的十进制,计算机中用的更多的是二进制,八进制以及十六进制等。这项功能目前也加入到了小米计算机中,这也是许多米粉一直期待的。
换算功能的各个宫格,长按拖动就能改变其排列的位置,我们可以将自己常用的功能放到比较靠前的位置,告诉我你不是最后一个知道这个技能的。
在操作上,小米手机计算器还具备悬浮的功能。在计算界面上,点击左上角的“缩小”按钮,即可让计算器悬浮与手机界面上层。再点击左上角“放大”按钮,即可最大化,回到计算器首页。
悬浮的计算器,按住左下角上下左右滑动,即可调整悬浮窗口的大小。按住上方黑色栏拖动可改变悬浮窗的位置。
点击水滴形图案可改变悬浮窗的透明度。当我们计算一些比较复杂的算式,来回切换界面不仅麻烦,而且效率低,通过悬浮的计算器,可以让我们边看边算。
这样的一款计算器,才应该算是一款专业计算器该有的样子,你们觉得呢?你还希望MIUI计算器能够具备哪些功能,欢迎评论区留言。
各位朋友,你们好。我是一名办公软件爱好者,喜欢Excel,会函数、会基础操作、也会一点VBA。喜欢和大家分享、交流一些Excel的知识。欢迎爱好Exce和要学习Excel的朋友,相互学习、一起进步。如果你喜欢我的分享,请关注我,以便第一时间看到我分享的内容。
关于金额的大小写转换,通常用到的是小写金额转大写金额。而我今天要分享的内容是:
小写金额的拆分;小写金额转大写金额【函数方法】小写金额转大写金额【VBA方法】大写金额转小写金额【VBA方法】小写金额转英文【VBA方法】Word里面小写转大写WPS里面小写转大写其他金额小写转大写的方法写在前面:由于文章里面写太多VBA代码会影响阅读体验。故将VBA代码截图处理,需要演示文件的朋友,可以关注我,然后私信发送关键字:大写金额、小写金额、大小写等获取文件。
小写金额的拆分收据
如上图收据样式,在数量、单价中填写好数据,即可生成合计金额,同时将合计金额按十、万、千、百、十、元、角、分为单位拆分出来。接下来,我用一个案例详细给大家分析分析下(用的随机数模拟数据):
金额拆分演示
操作演示中涉及两个函数公式:
公式一:=MID(RIGHT(REPT(" ",9)&TEXT(ROUND($A3/1%,),"¥0"),9),COLUMN(A1),1)
公式二:=LEFT(RIGHT(TEXT(ROUND($A3/1%,)," ¥0"),10-COLUMN(A1)))
解决的思路和公式的理解详见下图:
小写金额拆分,公式理解
小写金额转大写金额【函数方法】金额小写转大写,这个是大家应用得最多的,详见下面动画操作演示:
小写金额转大写金额【函数方法】
操作演示中用的公式是:
=SUBSTITUTE(SUBSTITUTE(IF(A2<0,"负","")&TEXT(INT(ABS(A2)),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2),2),"[dbnum2]0角0分;;整"),"零角","零"),"零分","整")
公式的理解思路详见下图:
小写金额转大写的公式理解
按照上图拆分,小写金额转大写的函数公式,可以分为四部分:
①判断正负数的:IF(A2<0,"负","")
②转换整数部分的:TEXT(INT(ABS(A2)),"[dbnum2]G/通用格式元;;")
③转换小数部分的:TEXT(RIGHT(RMB(A2),2),"[dbnum2]0角0分;;整")
④然后把以上三部分用【&】合并起来,在用SUBSTITUTE函数进行2次替换。
要实现相同的效果,不一定限于我示例中用的函数,ROUND、NUMBERSTRING等函数也可以实现,只要按照上图的思路,达到要求的效果就可以。其中,有三点需要解释下:
1、[dbnum2]G/通用格式元;;:①数据大于0的时候,按[dbnum2]G/通用格式元格式显示;②数据小于0的时候,显示空白;③数据等于0的时候,显示空白。(这里使用了格式的前三个区间)【详见下面动图演示】
2、[dbnum2]0角0分;;整:同第一条,①当数据大于0的时候,按[dbnum2]0角0分格式显示角和分,比如:壹角壹分;②如果金额小于0,显示空白;③如果金额等于0,显示整(即无小数,要转换的数据是一个整数)。(这里使用了格式的前三个区间)
Excel数据格式的四个区间,每个区间用【;】隔开
3、[dbnum2]G/通用格式元:将小写数字转换为大写数字,效果见下图的操作演示:
[dbnum2]G/通用格式元
小写金额转大写金额【VBA方法】小写金额转大写【VBA方法】
演示所用的代码如下:
小写金额转大写【VBA代码】
大写金额转小写金额【VBA方法】大写金额转小写金额【VBA方法】
演示所用的代码如下:
大写金额转小写金额【VBA代码】
小写金额转英文【VBA方法】小写金额转英文【VBA方法】
演示所用的代码如下(部分代码):
小写金额转英文【VBA方法】
Word里面小写转大写Word里面小写转大写
注意:此方法只支持整数,小数在转换过程中,会先被四舍五入处理
WPS里面小写转大写选择单元格→右键,选择设置单元格格式→依次选择数字、特殊、类型、【人民币大写】→完成
WPS里面的小写金额转大写金额
其他金额小写转大写的方法1、输入法直接录入:比如搜狗输入法
小写金额转大写(输入法)
2、专业软件:
小写金额转大写(软件)