
凌晨两点,乔一把一份项目资料交给 AI。几分钟后,屏幕上出现了一份结构完整的分析:它读完材料,整理了数据,还给出了下一步的执行方案。
乔一没有立刻惊叹,反而产生了一个疑问。
乔一:都说大模型的本质只是预测下一个词。可它现在能写代码、分析数据,甚至调用工具完成任务。一个猜词游戏,怎么会变成这样?
希声:因为这句话虽然不能算错,却省略了最重要的部分。
乔一:哪部分?
希声:第一,它预测的通常不是“下一个词”,而是下一个 Token。第二,“预测”描述了它的训练目标和生成方式,却没有描述内部计算究竟有多复杂。
乔一:所以问题出在“只是”两个字?
希声:很大程度上,是的,我们可以进入大模型内部看一眼。



第一站:模型读到的不是一句话
在人眼里,“雨停以后,我想去海边看日落”是一句完整的话。
进入模型后,它首先要经过 Tokenizer,被切成一串 Token,再转换成 Token ID。
Token 不等于汉字,也不等于单词。它可能是一个字、一个常见词、半个英文单词、一个标点,甚至某些字节片段。具体怎么切,取决于模型采用的词表和 Tokenizer。
同一句话交给不同模型,切分结果可能不同。漫画中的切分只是原理示意,不对应某个具体模型的真实结果。
乔一: Token ID 越大,是不是表示这个词越重要?
希声: 完全不是。Token ID 只是词表里的索引,像衣帽间的号码牌。编号 12800 并不比编号 42 更有意义。
模型会用这个 ID 查询一张训练得到的 Embedding 表,把 Token 转成高维向量:
Token ID → Embedding Lookup → 初始向量
但初始向量还不是“这个词在当前句子中的完整含义”。
“苹果”可能是水果,也可能是一家公司。刚进入模型时,它得到的是一个基础表示;穿过多层网络后,隐藏状态才会逐渐融合当前上下文。
乔一: 一串 Token 只有身份,没有顺序吧?“人追猫”和“猫追人”岂不是一样?
希声: 所以模型还必须编码位置。原始 Transformer 使用位置编码,许多现代大模型则采用 RoPE,也就是旋转位置编码。
RoPE 不是简单给每个 Token 贴一张“我是第几个”的标签。它通常会对 Query 和 Key 做随位置变化的旋转,让注意力匹配中自然带上相对位置信息。
可以把它想象成:每个位置都有一块角度不同的表盘。两个 Token 比较时,模型既看到“你是谁”,也能感受到“你和我相隔多远”。
第二站:Attention不是关键词搜索



乔一: 接下来就是那句著名的 Attention is all you need?
希声: 对,但 Attention 经常被解释得太像关键词搜索。
在注意力计算中,每个位置会产生三组表示:Query、Key 和 Value。
Query:当前位置正在寻找什么信息 Key:历史位置可以用什么特征被匹配 Value:一旦被关注,历史位置实际提供什么信息
缩放点积注意力可以写成:
Attention(Q,K,V) = softmax(QKᵀ / √d + M)V
这里的 M 是因果掩码。生成时,当前位置只能查看自己和已经出现的内容,不能偷看未来答案。
公式看起来复杂,本质上做了三件事:
用 Query 和 Key 的匹配程度为历史位置打分。 把分数变成权重。 按照权重混合不同位置的 Value。
多头注意力会在不同投影空间里同时完成这种信息混合。某些头可能表现出对指代、局部语法或远距离关系的偏好,但不能武断地说“这个头固定负责语法,那个头固定负责事实”。
更不能把一张注意力热力图直接称为模型完整的思考过程。
乔一: 做完 Attention,就能输出答案了吗?
希声: 还早。一个主流 Transformer Block 通常还包括 MLP、残差连接和归一化。Attention 更像位置之间交换信息,MLP 则对当前位置的特征进行变换。
这些结构会重复很多层。每一层都在原有状态上增加新的修改。
最终,用于预测下一枚 Token 的,是最后位置经过多层更新后的隐藏状态。它压缩了当前上下文中大量与下一步预测有关的信息,却不是一句可以直接翻译成中文的“内心独白”。
这就是第一个关键结论:
预测目标很局部,不代表完成预测所需的内部计算很简单。
第三站:模型还没有“想出答案”



最后一层的隐藏状态会经过输出映射,为词表中的每个 Token 产生一个 Logit。
Logit 不是概率,更像未经归一化的比赛得分。经过 Softmax 后,才会形成下一枚 Token 的条件概率分布。
假设当前文本是“雨停以后,我想去海边看”,候选可能呈现为:
这些数字只是用于解释,不是某个真实模型的测量结果。
乔一: 那就永远选概率最高的“日落”好了。
希声: 可以,这接近贪心解码。但实际系统还可能采用采样策略,让输出不过度僵化。
温度会在 Softmax 前缩放 Logits:
pᵢ(T) = softmax(zᵢ / T)
温度较低,分布更尖,头部候选更占优势;温度较高,分布更平,原本较低概率的候选也更有机会出现。
但温度不是模型的“智商旋钮”。它不会给模型增加知识,也不会自动赋予创造力。
Top-p 则是另一种规则:按概率从高到低排列候选,找到累计概率达到阈值的最小集合,再从这个动态集合中采样。
Top-p = 0.9 不代表“答案有 90% 概率正确”,也不代表固定保留前 90% 数量的 Token。
乔一: 如果把温度调到零,是不是就不会幻觉?
希声: 不是。工程系统通常会把这种设置特殊处理为贪心选择。如果最高分候选本身就是错的,模型只会更稳定地选中这个错误。
第四站:一枚Token怎样长成一篇文章



一旦某枚 Token 被选中,它会被接回原来的序列,成为下一轮预测的上下文。
模型再次计算新的条件分布,选择下一枚 Token,然后继续循环。
整个生成过程可以理解成:
P(整段输出|输入) = 每一步“下一枚 Token 条件概率”的连乘
这就是自回归生成。
主流自回归模型通常不是先在内部写好完整文章,再像打字机一样逐字显示。最终可见文本是一枚枚 Token 展开的。
但也不能由此断言模型毫无规划。提示词中的提纲、中间推理 Token、隐藏状态,以及模型外部的规划器,都可能影响长距离结构。
乔一: 如果中途选错一次呢?
希声: 错误 Token 也会进入上下文,改变后续的概率分布。一次很小的偏离,有时会逐渐长成一段结构完整、方向却完全错误的回答。
KV Cache:省计算,不是增加记忆
如果每生成一个新 Token,都重新计算全部历史位置的 Key 和 Value,会浪费大量计算。
因此,推理通常分成两个阶段:
Prefill:集中处理输入提示词,生成各层的历史 K/V。 Decode:逐 Token 生成,只计算新位置,并复用历史 K/V。
KV Cache 缓存的是当前推理过程中的中间张量,不是模型的世界知识,也不是跨会话永久存在的人类式记忆。
它减少了重复计算,却没有消除自回归生成的顺序依赖。上下文越长,KV Cache 通常占用越多显存,新 Token 也仍要查询越来越长的历史。

推理模型真的只是“多猜几步”吗?

乔一: 推理模型是不是生成更多 Token,慢慢猜到正确答案?
希声: 它的输出基础通常仍是自回归生成,但“只是多写几步”又把问题说简单了。
经过针对性的后训练、强化学习和验证机制,推理模型可以更倾向于拆解问题、检查约束、发现矛盾、尝试替代路径。增加测试时计算,也给了模型更多机会修正早期方向。
可以把中间推理 Token 想成一块临时草稿纸:模型写下一个步骤后,这个步骤会成为后续生成的上下文。
但这里还有三条边界:
思考更久不保证一定更准确,也可能沿错误路径越走越远。 展示出来的思维链,不一定忠实呈现内部全部计算。 不同模型的训练细节不同,没有公开证据时不能替厂商编造实现方式。
Agent不是一个更大的聊天框
Agent 更像一套系统,而不只是一个模型。
常见的智能体循环是:
观察环境 → 制定下一步 → 调用工具 → 读取结果 → 再次判断
模型负责理解和决策,外部系统负责工具、状态、权限和执行。模型发出“调用计算器”或“查询数据库”的结构化请求,真正的计算和查询发生在外部环境中。
工具调用让模型不必只依靠参数中的知识完成所有任务,却也引入了新的风险:选错工具、传错参数、权限越界、读取脏数据,或者把网页中的恶意指令当成任务要求。
所以真实企业应用需要权限控制、来源校验、执行记录和结果验证。
为什么它仍会一本正经地胡说?
大模型预训练首先优化的是:在当前上下文之后,什么 Token 更可能出现。
这种目标本身不会为每句话附上一份事实证明。
当知识缺失、资料过时、问题含糊、上下文冲突,或者模型没有被可靠校准时,它仍可能生成一段语言流畅、结构完整,却与现实不符的内容。
温度只是其中很小的一部分。即使采用贪心解码,模型一样可能产生事实错误。
RAG 会先检索外部材料,再把材料加入上下文,能够改善很多知识密集型任务。但它不是“幻觉消除器”:检索可能漏掉正确资料,知识库可能过时,模型也可能误读或忽略材料。
乔一: 所以每一步都合理,不能保证整条路径真实。
希声: 对。语言上的高概率,不等于现实中的真。
“预测下一枚Token”,究竟解释了什么?
乔一: 让我重新说一遍。
大模型确实在预测下一枚 Token。但在预测之前,它要完成 Tokenization,把 Token 变成向量,编码位置,让信息穿过多层 Attention、MLP 和残差结构,再把最后位置的隐藏状态映射成整个词表的概率分布。
选中一枚 Token 后,它把结果放回上下文,继续下一轮。推理模型还会利用中间步骤、更多测试时计算和外部工具,把一次局部预测组织成长程任务。
希声: 完全正确。
预测下一枚 Token,是理解大模型的入口,却不是对其全部能力的完整描述。
语言中包含事实、因果、规则、风格、代码、数学,以及人类行为留下的痕迹。为了持续降低预测误差,模型必须从海量数据中学习能够压缩这些规律的内部表示。
但我们也不能把流畅等同于真实,把会解释等同于完全理解,把会调用工具等同于永不失败。
乔一: 听完以后,我反而觉得“预测下一枚 Token”更酷了。
希声: 为什么?
乔一: 因为真正震撼的,不是机器猜中一个词。而是一个看起来如此局部的目标,在足够大的数据、模型和计算之上,竟然组合出了写作、编程、推理和行动。当然,也组合出了新的错误方式。
希声: 欢迎来到大模型的真实世界。
它既不是随机接龙,也不是不会犯错的电子大脑。
理解它怎样工作,是我们学会与它共处的第一步。
最后,我们可以一起来讨论一下
了解了大模型怎样工作以后,日常工作和学习中,究竟哪些事适合交给 AI,哪些不适合?
把一份文档逐字解析出来,要求是:解析结果必须与原文一字不差,金额、标点、页码和表格位置都不能改变。
这类任务不适合让大模型单独完成。原因正藏在这篇文章讲过的机制里:大模型生成的是“在当前上下文中更可能出现的下一枚 Token”,而不是从原文复制一份带校验和的字节副本。它可能把全角标点改成半角,顺手纠正一个错别字,漏掉重复行,或者在模糊处补出一个“看起来合理”的词。
为一场活动想十个主题
这类任务通常很适合交给大模型。因为它没有唯一标准答案,错一个创意的代价很低,人也能快速判断结果是否有用。模型擅长在大量语言模式之间建立连接,先提供一批候选,人再结合受众和现场条件做选择。
总结一份重要合同
这类任务处在中间地带,让模型先找出付款条件、违约责任和异常条款,可以节省阅读时间;但如果直接根据摘要签字,就把风险交给了一个仍可能漏读和误读的概率模型。更稳妥的方式是要求每条结论附上原文位置,把模型当作寻找线索的助手,再由人回到原文核验。它适合做第一遍筛查,不适合代替最终审查。
直接执行一个不可撤销的动作
自动发送邮件、批量删除数据、转账付款、给候选人发拒信,模型在技术上也许都能做到。但“能做到”不等于“应该独立完成”。一旦任务涉及高错误成本、隐私、权限或明确的责任主体,更合理的做法通常是让模型生成建议或待执行方案,把最终确认留给人,并保留操作记录和撤回机制。
这几个例子背后,大致有四个判断问题:
所以,我们可以讨论一下日常生活中的真实选择:
在你的日常工作或学习中,哪件事最适合交给 AI?哪件事最不应该交给 AI?为什么?
也许真正值得讨论的,并不是“要不要把工作交给 AI”,而是:
我们应该把哪一部分能力交给 AI,又必须为哪一部分结果继续负责?
夜雨聆风