Skip to content
信息资料AI大语言模型提示工程模型推理

大模型如何一步步跑偏:从“山谷小球”到“城市司机”

用城市导航的比喻,解释大模型如何逐 token 生成,以及语义惯性、上下文漂移、温度、思维链和工具验证为何影响最终答案。

2026-07-17 12:34:485,889 字14 分钟阅读
与其把生成想成小球落入山谷,不如把它看成一次不断做决定的城市导航。

有一种解释大模型的方式很有意思。

它把语言模型想象成一片高低起伏的地形:概率高的 token 在谷底,概率低的 token 在山坡上;每生成一个 token,就像有一颗小球顺着地势滚下去。前面的 token 还会在地面留下痕迹,影响下一颗小球的路线。

这个比喻出自《AI 时代的思维框架》,确实很抓人。原作者也提前说明了,这是一套从工程经验里长出来的个人框架,不打算冒充严格的学术理论。

不过,如果真想用它理解大模型,最好再换一幅图。

我更愿意把大模型想成一座大得离谱的城市。

模型是城市本身,提示词是导航目的地,上下文是已经走过的路,而每一个 token,都是司机在下一个路口做出的一次选择。

这位司机有几个特点。

他见过的路很多,反应极快,几乎每个路口都知道“大家通常往哪边走”。但他没有一张提前规划好的完整路线,也不会在出发前把整篇答案写完。他只是开到一个路口,看一眼眼前的路牌和之前走过的路,然后决定下一步往哪儿拐。

模型并不是先写好整篇答案。每走过一个路口,下一次选择面对的城市都会变化。

大语言模型的生成,大致就是这么回事。

它并不是先想好答案,再一个字一个字打印出来

假设你问模型:

为什么长期熬夜会影响注意力?

它不会先在内部写好一篇完整文章,然后从头开始誊写。

它真正做的是:

已经看到这个问题了,接下来最可能出现什么?

于是它先生成“长期”,接着又问:

现在前面已经有“长期”了,下一个词最可能是什么?

也许是“熬夜”,也许是“睡眠不足”,也许是“会”。

如此一步一步,直到整段回答结束。

用公式写,就是:

P(yc)=t=1LP(ytc,y<t)

这里不需要被公式吓到。它只是在说:

一整篇回答的概率,等于沿途每一步选择概率的乘积。

所以,大模型更像是边走边选路,而不是先看见终点,再照着路线行驶。

这也解释了一个经常让人困惑的现象:模型开头看起来很聪明,写着写着却跑偏了。

因为它每一次选择都只是在回答“眼前往哪边走比较自然”,而不是保证“这样走最终一定能到正确目的地”。

最顺的路,不一定是对的路

局部概率最高,只说明眼前这一步最顺;它并不保证整条路线正确。

想象你开车去一个陌生地方。

眼前有两条路:

一条是六车道大路,看起来非常顺;另一条是窄一些的小路,入口还不太显眼。

如果只看眼前,你大概率会选大路。但大路可能通往另一个城区,真正通向目的地的反而是那条不起眼的小路。

模型也会遇到同样的问题。

它在当前时刻选择概率最高的 token,并不意味着这条路线最后会得到最好的答案。

比如一道数学题,模型可能很快认出它“长得像”某类经典题,于是顺手套上一个熟悉结论。这个开头在语言上十分自然,甚至显得很专业。

可惜题目里可能藏着一个小条件,使得熟悉套路根本不适用。

模型一旦在第一个路口走错,后面就会以错误方向为起点继续开。它会补公式、补解释、补例子,甚至替错误结论找出一整套听起来像那么回事的理由。

于是你会看到一种很典型的回答:

每一句都挺顺,连起来却是错的。

问题不一定出在模型“不懂某个知识点”,而可能只是它太早拐进了错误街区。

上文不会把地面压出沟,它只是把车开到了另一个地方

“小球压出沟壑”的说法很形象,但容易让人误会,好像每生成一个 token,模型内部的参数就被永久改变了一点。

普通推理并不是这样。

模型说完一句话以后,模型本身没有被重新训练,权重也没有发生变化。真正变化的是:它现在有了一段新的上文。

例如,模型开头写:

这个设计总体是可行的。

接下来,“可行”就成了后续内容的一部分。模型更容易继续谈:

  • 为什么可行;
  • 怎样落地;
  • 有哪些优势;
  • 应该注意什么细节。

如果它开头写的是:

这个设计存在一个根本矛盾。

后面的路线就完全不同了。模型会开始寻找:

  • 矛盾在哪里;
  • 哪个前提不成立;
  • 为什么无法落地;
  • 应该如何替换。

同一个模型,同一个问题,只因为前面选了不同的几个词,后面就像进入了两片不同城区。

前面的句子没有改变模型,却改变了模型现在身处的街区。

所以更准确的说法是:

前面的 token 没有改造城市,它只是把模型带到了城市里的另一个位置。

到了那里以后,能看见的路、最顺手的转弯、附近常见的表达,都会随之改变。

所谓“语义惯性”,其实就是开进一个街区后不容易掉头

模型写了一段论文腔以后,往往会继续写论文腔。

它一旦开始用“由此可见”“进一步而言”“在这一框架下”之类的表达,后面很容易出现更多术语、更长句子、更严肃的语气。

这不是因为它产生了什么神秘的“语义动量”。

原因更朴素:前面的学术表达,本身就是后面继续学术表达的强烈信号。

就像你已经开进了大学城,周围全是实验楼、图书馆和学生公寓。下一个路口再看到咖啡馆和打印店,并不奇怪。

角色扮演也是一样。

模型一旦连续几轮都在扮演侦探、律师、医生或者中世纪骑士,已有上下文会不断提醒它:“我们现在还在这个故事里。”

轮数越多,角色越稳;设定越具体,越容易“入戏”。

问题在于,错误假设也会产生同样的惯性。

假设模型一开始误解了用户的需求。只要它继续沿着这个误解写下去,后面的每一段都会让这个方向显得更加完整、更加合理,也更加难以修正。

这就是为什么长任务里,开头的任务理解比结尾的措辞重要得多。

结尾一个词用错,改起来很容易。

开头方向错了,后面几十段都可能要推倒重来。

语义漂移,不是突然失控,而是连续几次小偏航

长任务很少在某一刻突然崩坏。更多时候,它只是把上一轮的小误差当成了下一轮的新起点。

很多长对话并不是在某一刻突然坏掉的。

更常见的情况是,每一轮只偏一点点。

用户原本说的是“尽量降低延迟”,模型在转述时写成“追求极致低延迟”;下一轮又把它理解成“延迟优先于成本”;再下一轮,整个架构开始围绕昂贵的实时方案展开。

每一步单独看,都不像严重错误。

但走了十个路口之后,模型已经到了完全不同的城区。

可以把从当前位置最终成功的概率记成:

h(s)=P(最终成功s)

这里的 s 就是模型当前所处的位置:问题、上文、已经做出的判断,全都包含在里面。

如果一个关键澄清能把成功概率从百分之一提高到百分之五十,那么它做的事情并不是“给模型增加思考能量”,而是直接把车从一片岔路密布的区域带到了更接近目的地的主路上。

这类澄清通常不是华丽的提示词,而是很普通的几句话:

这里的“实时”是指两秒内返回,不是毫秒级。

数据规模是每天十万条,不是每秒十万条。

目标是验证可行性,不是立刻设计生产级系统。

一条准确的约束,往往比一整段“请深度思考、进行第一性原理分析”更有用。

思维链的价值,是帮模型设置几个中途站

复杂问题最难的地方,通常不是终点完全不可见,而是起点到终点之间跨度太大。

你直接问:

证明 2 是无理数。

模型需要从一句题目跳到完整证明。

如果把路线拆开:

  1. 假设 2=p/q
  2. p,q 互质;
  3. 推出 p 是偶数;
  4. 再推出 q 也是偶数;
  5. 与互质条件矛盾;
思维链没有给模型额外的神秘能量。它只是把一次困难的跳跃,拆成了几个能完成、也能检查的小路段。

整个任务就变成了几个相对容易的小路段。

思维链的作用,像是在导航中加入途经点。

模型不需要一口气跨过整座城市,只需要先开到第一个站,再从第一个站开到第二个站。

而且,中间结果会直接写进上下文。模型下一步可以重新读到它,不必把所有变量都憋在某个不可见的内部状态里。

不过,思维链也不是万能的。

如果第一个中途站就选错了,后面仍然可能一路错到底。区别只是:这次错误路线写得更详细了。

所以,比“让模型多想一会儿”更重要的是:

让它在关键路口停下来检查。

比如:

  • 这个假设是题目给出的,还是我自己补的?
  • 这个接口真的是同步的吗?
  • 这个数据口径有没有混淆?
  • 这个结论有没有反例?
  • 代码是否实际通过测试?

思维链负责把路摊开,验证负责确认路没有走错。

两者缺一不可。

温度不是创造力旋钮,更像司机的冒险程度

大模型里的温度经常被解释成创造力。

低温更保守,高温更有创意。

这个说法只有一半对。

温度升高以后,模型确实更愿意尝试那些原本概率较低的词。就像司机不再死守导航推荐路线,开始愿意拐进一些小巷。

这会带来更多变化,也可能找到一些不寻常的表达。

但小巷里既可能藏着风景,也可能是死胡同。

所以高温增加的首先是“不确定性”,不是“质量”。

低温的模型像一个特别听导航的话的司机:

  • 稳;
  • 可预测;
  • 常走熟路;
  • 有时过于模板化。

高温的模型像一个喜欢临时改道的司机:

  • 容易发现新路线;
  • 也更容易迷路;
  • 偶尔有惊喜;
  • 偶尔不知道开到哪去了。

真正可靠的创造过程,不是把温度拉高,然后让模型一路自由发挥。

更好的办法是:让几辆车分别探索不同路线,再把路线拿回来比较。

也就是先生成多个真正不同的方案,然后检查:

  • 哪个满足约束;
  • 哪个可以实际执行;
  • 哪个成本最低;
  • 哪个经得住反例;
  • 哪个只是说得好听。

这时,多样性才有机会变成创造力。

否则,多样性只是更多种不同的错误。

长上下文的问题,更像路牌太多,而不是地图装不下

上下文很长时,信息不一定消失了;它可能只是淹没在太多相似路牌中。

很多人觉得,模型一旦支持几十万 token,上下文问题就解决了。

事情没这么简单。

一条指令放在十行文字里,模型很容易找到。

同一条指令埋在十万字材料里,周围还有几十条相似要求、旧版本说明、例外情况和历史讨论,它就未必还能稳定抓住。

这不一定是“模型忘了”。

更像是一个路口立着几百块牌子:

  • 正式规则;
  • 旧规则;
  • 举例;
  • 反例;
  • 临时说明;
  • 用户随口提过的偏好;
  • 已经失效的中间决定。

真正重要的那块牌子还在那里,只是不再醒目。

这也是为什么长对话中,模型有时会慢慢偏离最初要求。不是所有无关 token 都平均分走了注意力,而是相关信息需要和大量相似信号竞争。

解决办法也不是每隔两轮重复一句“请记住”。

重复太多,新的强调本身也会变成噪声。

更有效的方式,是在长任务中维护一份短而稳定的“任务卡”:

目标:做什么。 硬约束:哪些不能违反。 已确认事实:哪些可以直接使用。 未决问题:哪些仍要验证。 验收标准:什么算完成。

人类做复杂项目时也会这样。

会议可以开很久,讨论可以很散,但真正执行时,最好有一张清晰的任务单,而不是让每个人重新翻完整聊天记录。

好的示例,常常比长篇说明更懂得带路

假设你想让模型写一条 Linux 命令。

你可以解释半天:

请使用 Unix 风格的命令行工具,通过管道把一个命令的输出交给另一个命令,并筛选满足条件的行……

也可以直接给它一句:

bash
ls -al | grep ".log"

后者的信息密度高得多。

模型一眼就能判断:

  • 这是 Shell;
  • 是 Linux 或类 Unix 环境;
  • 使用管道;
  • 输出要简洁;
  • 目标是命令,不是教程;
  • 可能使用 grep 进行过滤。

一个例子同时交代了任务、格式、风格和工具生态。

这也是某些特殊标记很有用的原因。

看到:

text
INT. OFFICE — NIGHT

模型很容易进入剧本写作模式。

看到:

text
∀x, P(x) \Rightarrow Q(x)

它更容易采用形式化论证。

这些标记未必是什么“高纯度语义材料”,更像是模型很熟悉的行业黑话或场景暗号。

就像你走进一家餐馆,看见桌上放着筷子、茶壶和圆桌菜单,不需要有人再写三百字说明,你大概已经知道这里是什么场景。

工具的意义,是让司机下车看一眼

生成是在猜哪条路最像正确路线;工具则让模型有机会确认道路是否真的存在。

只靠语言生成,模型始终是在根据经验猜路。

它可能很有把握,但有把握不等于真的看过。

搜索、运行代码、查询数据库、调用编译器,这些操作的意义,是让模型暂时停止脑补,去外面确认一下。

程序返回什么,不需要靠文风判断。

接口是否存在,可以查文档。

SQL 是否正确,可以执行。

数学等式是否成立,可以计算。

某条新闻是否真实,可以找来源。

在导航的比喻里,工具像是:

  • 看实时地图;
  • 问路;
  • 观察路牌;
  • 下车确认门牌号;
  • 试着把车开过去。

单元测试尤其像路障。

一条错误路线,不管写得多漂亮,只要测试过不了,就不能继续伪装成正确答案。

这也是强模型系统和单纯聊天模型的重要区别。

前者不会只问:“这条路线听起来合理吗?”

它还会问:“车真的开到了吗?”

物理比喻可以留着,但别让它接管事实

Softmax 和玻尔兹曼分布的公式确实很像。

把 logit 取负,可以写成类似能量的形式:

Pi=eEi/TjeEj/T

所以,用“能量低的状态概率更高”来帮助理解 Softmax,没有问题。

问题出在下一步。

一个概率分布能写成玻尔兹曼形式,并不说明模型内部真的有一颗粒子在滚动,也不说明它经历了热平衡、摩擦、惯性和朗之万动力学。

很多概率分布都能人为定义一套“能量”。

这是一种数学改写,不是物理现场录像。

局部地使用物理语言,可以帮助我们建立直觉;一旦开始用它解释所有内部机制,就容易把比喻当成事实。

最稳妥的做法是:

  • 用城市和导航解释生成;
  • 用检索器解释注意力;
  • 用调音台解释风格和特征纠缠;
  • 用物理自由能解释概率聚合;
  • 用搜索和控制解释复杂推理。

一张图不必承担所有工作。

真正好用的提示,不是在路边堆更多牌子

不少人写提示词时,喜欢把所有要求一次性塞进去:

严谨、深入、简洁、全面、创新、通俗、专业、不要遗漏、不要废话、不要犯错……

看起来要求很多,实际可能互相打架。

“全面”和“简洁”有冲突。

“通俗”和“术语精确”需要平衡。

“大胆创新”和“严格保守”不是一个方向。

模型面对这种提示,像司机看到一排同时指向不同方向的路牌。它最后只能猜哪个更重要。

更好的做法,是先确定真正的验收标准。

比如写技术方案,可以明确成:

先判断方案能否落地。 只保留三个关键约束。 每个结论必须给出依据。 最后输出推荐架构和主要失败点。

这类提示不华丽,但它告诉模型:

  • 终点在哪里;
  • 哪几条路不能走;
  • 到达后要交付什么。

提示词的价值,不在于听起来多高级,而在于减少错误分支。

最后回到那个最简单的问题:模型究竟在做什么

它并不是一个坐在桌前、先想清楚再开口的人。

它更像一个见过无数路线的司机。

每到一个路口,它都能迅速判断:

  • 大多数人会往哪走;
  • 哪条路符合当前场景;
  • 哪种转弯最自然;
  • 前面走过的路线暗示了什么。

它的强大来自见过的路线多、识别模式快、能在很大的城市里连续行驶。

它的局限也来自这里。

它可能把“常见路线”当成“正确路线”,把“语言顺畅”当成“已经到达”,把“前面说过的话”当成“已经确认的事实”。

因此,和大模型合作的关键,并不是让它说得更坚定。

而是替它做好几件事:

在出发前讲清目的地;在关键路口检查方向;遇到复杂路线时设置中途站;需要事实时下车确认;发现偏航时及时掉头;最后不要只看它讲得像不像,而要看它究竟有没有到。

与模型合作,不是替它画出每一米道路,而是讲清目的地,在关键路口检查方向。

说到底,大模型最值得记住的规律只有一句:

它很会接着走,但不天然知道自己是不是走对了。

Last updated: