为什么极其聪明的 AI 大模型,算个四位数加减法都会出错?
为什么极其聪明的 AI 大模型算个四位数加减法都会出错在日常使用各种 AI 聊天软件如 ChatGPT、豆包、Kimi时很多初学者都会产生一个直击灵魂的疑问“大模型那么聪明能写出几十万行的代码能跟我探讨极其深奥的哲学问题凭什么算个复杂的四位数加减乘除却经常一本正经地胡说八道大模型本身思考后难道就不能自己运算出来吗”如果你也有这个疑惑说明你已经触碰到了目前 AI 界最本质、也最让人头疼的底层原理差异“连接主义神经网络”与“符号主义传统计算机逻辑”的巨大鸿沟。今天我们就用大白话的视角把这个谜团彻底拆解开。一、 根本原因大模型是个“文科生”不是“理科生”我们首先要打破一个认知惯性大模型的底层根本就没有在做任何我们理解中的“数学运算”。传统计算机的 CPU 里有一个专门的硬件叫 ALU算术逻辑单元它是用硅芯片上的逻辑门与、或、非门物理硬连线出来的。只要通电11绝对且唯一等于2。这是**确定性Deterministic**的逻辑。但大模型LLM的本质是什么它是一个基于概率的“文字接龙”预测引擎。 大模型知道112并不是因为它真的“算”了一次而是因为它在预训练时阅读过海量的人类文本“11” 后面跟着 “2” 这个字的概率高达 99.99%。这其实是一种**“字符串的肌肉记忆”**也就是背诵。当你问它345897 23498 ?时这串数字在它的训练数据中极其罕见。于是它只能在浩瀚的概率空间里拼命“猜测”这串数字后面应该跟着哪几个字。一旦位数变多概率预测就会失效从而产生了大家经常见到的“一本正经的胡说八道幻觉”。二、 致命的生理缺陷分词器Tokenizer把数字切碎了除了“只会接龙不懂计算”大模型在处理数字时还有一个极其致命的“生理缺陷”分词Tokenization机制。大模型看世界的方式和人类不一样。我们认识“数位个、十、百、千、万”但大模型只认识一块一块的Token词元。 为了压缩信息大模型在训练时会把连续的字符切成碎片。比如数字12345在不同大模型分词器的眼里可能会被切得稀碎且极不规律可能是[123]和[45]可能是[1]、[234]和[5]想象一下如果你连数字的位数都对不齐你脑子里看到的是几块毫无关联的文本碎片你该怎么在脑子里进行精准的“竖式加法运算”大模型也做不到。三、 现代 AI 软件是如何解决这个问题的既然大模型算术这么烂那为什么我们现在在网页端问豆包或者 ChatGPT 一些复杂的计算题它又能秒给正确答案呢如果你能看穿这里面的把戏你就算真正摸到了 AI Agent 架构的门道因为算对这道题的根本不是大模型自己现代的 AI 应用尤其是带 Agent 属性的软件在处理问题时会根据题目的难度进行极其聪明的“策略分发”简单的死记硬背大模型自己盲猜的比如你问“9 乘以 9 等于几”大模型靠着庞大的参数肌肉记忆闭着眼睛直接吐出“81”。这叫文本背诵。复杂的逻辑运算外包给底层程序算出来的比如你问“23489 乘以 4598再加上 19834 是多少” 此时大模型知道自己算不准它会动用一种叫做 **Function Calling函数调用**或 **Code Interpreter代码解释器**的超能力。它在后台悄悄写了一段 Python 代码print(23489 * 4598 19834)。然后它把这段代码抛给网页底层的沙盒去运行此时大模型其实是在“挂机等待”。等沙盒里的 CPU 瞬间算出了 108022636 这个 100% 准确的数字后把结果塞回给大模型。最后大模型再用人类的语言把这个结果复述给你听。你有时在 ChatGPT 界面上看到闪过一个“正在分析…”或者弹出一个灰色的小框其实就是大模型正在后台疯狂调动 Python 工具帮你算数。结语用核动力造手表不如配个计算器退一万步讲我们能通过海量的数学题微调强行让大模型在脑子里学会复杂的加减乘除吗 能但是这在工程架构上极其愚蠢且昂贵。大模型每吐出一个字都要调动上百 GB 的显存和千亿个参数进行矩阵乘法。用几百张昂贵的 A100 显卡去算一个 CPU 一纳秒就能算完的加法这是对算力的极大浪费。所以现代 AI 的架构演进实际上就是一场**“扬长避短”**的革命大模型的长处理解人类意图、提取关键信息、规划执行逻辑。CPU / 外部工具的长处精确的数值计算、获取实时数据。给大模型提供一个“计算器工具”就像是给一个绝顶聪明的战略家配了一个随身带的小算盘。遇到需要理解逻辑的地方大模型自己思考一旦碰见精确计算立刻外包给算力成本几乎为零、且绝对准确的 CPU 去跑。记住你现在每天用的智能应用早就不只是一个单纯的大模型了。它们是“宿主程序负责外包跑腿 大模型负责思考 函数调用负责对接”的完美结合体。