做产品 PMaker
空格的键盘
一次生成,它只做这一件事 今天 天气 真 已经在序列里的部分 模型 下一个 token 的概率分布 好 不错 冷 差 其余 62% 18% 9% 5% 6% ① 按概率抽一个 温度决定抽得有多随意 ② 接到序列尾巴上 序列长了一个 token ③ 从头再算一次 直到抽到结束符 全程没有草稿 也不会回头改

它每次只回答一个问题:下一个 token 最可能是什么。写完一整段,是这个动作重复了几百次。

大模型的运作原理

它没有在思考你的问题,它在算下一个 token 最可能是什么。这句话听起来像在贬低它,其实是理解它的唯一入口。

你会遇到的现象
  • 同一个问题问两次,答案不一样,但两次都说得很肯定
  • 让它先想清楚再回答,效果居然真的会变好
  • 它写到一半发现前面错了,却不会回头改,而是硬着头皮圆下去

这个循环

把一段文字丢给它,它做的事只有一轮又一轮的这四步:读进已有的整段序列、算出下一个 token 的概率分布、按概率抽一个、把抽中的那个接到序列尾巴上。然后从第一步重来。

注意第三步。它不是「选概率最高的那个」,而是抽。这个区别是后面所有随机性的来源。62% 的那个词大概率会被选中,但 18% 的那个也有它的机会,选中之后整句话就拐向另一个方向了。

还要注意第一步。每算一个新 token,它都要把整条序列从头看一遍。它没有一个「已经想好的答案」存在某个地方,也没有草稿。你看到的那段流式输出,就是它真实的思考过程本身,不是把想好的东西念出来。

你以为它在做它实际在做
理解问题把你的字切成 token,算出一串数字
查资料没有查,全靠权重里的统计规律
想好答案没有这一步,边写边定
检查一遍再给你没有这一步,除非你让它再跑一轮
中间两行是最多误会的地方。它给出的每一个事实,都是「算出来最像真的」,不是「查出来是真的」。

能力从哪来

一个只会接话茬的东西,为什么能写代码、能改文案、能读懂你半句话里的意思?因为「猜下一个词」这个任务,要猜得足够准,就必须顺带学会一大堆别的东西。

所以「让它一步一步想」这类提示为什么有用,答案也在这:你逼它先生成一串中间步骤,这些步骤会进入序列,成为后面每一步的输入。它不是变聪明了,是给自己铺了更好的接话素材。让它多说几句,等于让它多算几轮。

只会算下一个 token 全部能力与全部毛病的同一个源头 要猜得准,就得顺带学会 语法和常见代码结构 推理的形状 语气与意图的分寸 猜错了就会被罚,几亿次之后 这些规律就长进权重里了 同一条机制的另一面 缺依据就补最像的 写错了不回头改 数不清字数、算不稳数 这些不是 bug,是这个设计 的直接后果,换模型只会缓解 落到你手上的三个动作 把长任务切短 · 在它开口之前就把格式和口径压住 · 凡是要准的地方都自己校验一遍
左右两栏不是两件事,是同一条机制照出来的两个影子。所以指望某一代模型「修好幻觉」是错的方向——能被优化的只有程度,不是有无。

毛病也从这来

同一条机制,反过来看就是它全部的短板。这几条不是 bug,是这个设计的直接后果,换个模型只会缓解,不会消失。

现象机制上的原因
每次答案不一样第三步是抽样,不是取最大值
会一本正经地编它要的是「最像下一句」,不是「真的下一句」
写错了不回头已经生成的 token 进了序列,只能顺着往下圆
数数、算数容易错数字被切成 token,位值关系不是统计上的强规律
越写越长越跑偏每一步的误差都会进入下一步的输入
第三行对产品设计影响最大:一旦开头跑偏,后面只会越圆越远。与其指望它写到一半自己纠正,不如把任务切小,每段单独出、单独验。

落到你手上的动作有三个。一是把长任务切成短的,每段短一点,累积误差就少一点。二是开头要压住,第一句一旦定了调,后面很难扭回来,所以格式、口径、约束要放在它开口之前。三是凡是要准的地方都得校验,数字、接口名、引用,不要因为它说得笃定就信。

接着看