最近知乎上有一个很热门的话题是关于大模型的数学能力。
说的就是为什么这个问题:“9.9和9.11哪个大”,大量的大模型都没有回答正确。
例如GPT-3.5,他就认为9.11大:
拿Gemini来问问,好家伙,不假思索的直接认为9.11大
再看看Claude 3.5 Sonnet,给出了自己的推理,但是一看答案又开始犯困了,直接认为9.11更大。
既然国外的模型不行,那我们再来看看国内大模型怎么样。其中ChatGLM也回答错误:
KIMI想也不想直接回答错误
通义千问也像上面的几个大模型一样,答错了。
为什么这么多大模型对这个简单得不能再简单得问题都回答错了呢?这里总结了一下现有网络上对这个问题的几个很好的解释。
因为911 是一个著名的日期,模型在预训练阶段不可避免的学习到其相关知识,所以大模型可能会认为911本质上会比99大。
在问GPT-3的时候,用英文问它,模型会错误的认为9.9比9.11要小。
但是如果你问它:9.35 和 9.9 的大小,它能够正确回答。这是因为本质上没有9月35这个日期。
而这两种问法,在 tokenizer 中的切分其实是一致的:
所以有人认为是日期类型导致大模型理解错误两个数字的大小。
从基础的token分析,可以发现,9.9被拆成了三个token:24、13、24;而9.11也被拆成24、13、806
可以发现这两个数都拆成了3个token,则就导致了模型在对比两个数的时候,把小数前面的9和9比,小数点后面的9和11比。想当然的把11认为比9大,所以最后得出了错误的结果。
终究还是他们背后的tokenizer的问题。
OpenAI用的是tiktoken这个库,而这个库是基于BPE算法的,大家有兴趣可以研究下这个。
在我们日常生活中,数学计算肯定是认为9.9大于9.11。但是在软件开发项目中,如果9.11和9.9代表的都是软件版本号,一般来说都会默认9.11比9.9的版本号要大。
如果换成“在Python版本号中,3.8和3.10哪个更大”,那3.10就对了。实际上,在Python和3.10这两个关键词同时出现的互联网文本中,有99%以上的情况,3.10就是指Python版本号,因此说3.10更大,往往是正确的,会得到更低的loss。
因此不难理解,有下面几个结论:
根据现有语言模型数据,日期和版本号出现频繁。这些问题需考虑语境和条件,但GPT训练时上文常被截断,导致语境丢失和幻觉增加,答案出现错误。
大模型幻觉,指大型语言模型或神经网络生成内容与现实不符的现象,是深度学习领域的一个问题。
其表现多样,原因复杂。
比如让KIMI回答具体原因的时候,将小数点后面第二位作为判断整个数字大小的依据,显然就是典型的幻觉导致的逻辑错误。
那么怎么消除这样理解上的偏差呢?就是把问题问得更加清楚,如果可以加上一个特定的背景,让大模型得到更多的信息去理解,
比如我们把 9.11 当成是日期,或者版本号的时候,9.11 是比 9.9 更后面(也许就是大模型理解的更大)
从一个简单的数学问题,就能看出目前大模型在数学理解的能力上还是有缺陷的,因此不能够盲目的认同大模型给出的答案。同时还需要根据自己的理解进行有效分析。
进一步的也需要不断提升大模型的数学能力,这一条路还是任重而道远。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。