跳到主要内容

第 1 课 · 它其实只会接着往下写字

读这一课前你需要会什么:什么都不需要。 你不需要知道什么是编程、什么是神经网络、什么是训练。 出现的每一个新词都会当场用大白话讲清。讲不清楚的地方就是我的问题,请直接标出来。

这一课结束时你会

  1. 说得出你打字给 AI 时,它那一头到底在重复什么动作;
  2. 说得出它为什么会一本正经地胡说——而且知道那不是故障;
  3. 说得出为什么「让它记住刚才说过的话」这件事,必须由我们写代码来做,它自己做不到。

第 3 条是这整个课题存在的原因。这一课把它讲清楚,后面五课才有地方挂。


1. 先看你已经见过的现象

你跟 AI 说一句话,它的回答不是「唰」一下整段出现的,是一个字一个字往外冒的。

大多数人把这当成一种动画效果——像打字机那样,做出来好看而已。

它不是效果。那就是它真实的工作节奏。

这一课要讲的所有事,都是基于这个现象形成的。

先把「它」这个词定下来

后面全文管它叫大模型

大模型是一个程序。 你给它一段文字,它给你还回来一段文字。它只干这一件事。

它不会上网、不会读你的文件、不会记事、不会打电话。 你听说过的那些「AI 帮我订了机票」「AI 帮我改了代码」,干活的都不是它,是外面另外写的程序。 那些程序长什么样,是第 3 课往后的内容。

「大模型」这个名字里的「大」指的是它内部可调的数特别多。 具体多到什么程度,以及那些数是干嘛的,这一课不需要知道,第 2 课再说。


2. 顶层全景:它在重复一个动作

一句话:它反复回答同一个问题——「照目前这段文字,下一个该写什么?」

你给它一段文字


┌──────────────────────────────┐
│ 从头到尾读一遍这段文字 │
│ 算出:下一个该写什么 │ ←─┐
│ 写上去 │ │
└──────────────┬───────────────┘ │
│ │
└─── 文字变长了 ──────┘
从头再来一遍

图说:每转一圈只多出一点点文字。转几百圈,就是你看到的那一整段回答。
注意那条往回指的箭头——它回到的是「从头读一遍」,
不是「接着刚才想的地方继续」。

这里有一件事必须现在就说清楚,因为后面五课全靠它:

每转一圈,它都是从头把整段文字重读一遍。 上一圈想了什么、算过什么, 转完就丢了,一点都不留。

它没有「刚才」。

为什么它能听懂一整句话、还能照办——那是第 2 课的事。 这一课只管一件事:它是怎么一个字一个字把话写出来的。


3. 主走查:一句话,从头走到尾

这一节我们盯着一个具体的句子,走完全程。 后面每一节都会回到它。

你在对话框里打了这么一句,按下回车:

北京今天天气怎么样?

第 1 圈

它读到的不只是你这一句。真正送到它面前的是这样一段文字:

系统:你是一个乐于助人的助手。
用户:北京今天天气怎么样?
助手:

注意最后一行——「助手:」后面是空的。 这就是留给它的位置。 它要做的事只有一件:接着这个冒号往下写。

它算出一张单子,大意是这样(下面这些百分比是我为了讲清楚编的,不是真实数值):

下一个可能写什么可能性
32%
25%
18%
9%
…………

它挑了「我」,写上去。

第 2 圈

现在送到它面前的文字变成了:

系统:你是一个乐于助人的助手。
用户:北京今天天气怎么样?
助手:我

它把这一整段从头再读一遍,又算出一张新单子,挑一个写上去。假设挑中「无」。

第 3 圈、第 4 圈……

助手:我无
助手:我无法
助手:我无法查
助手:我无法查询
……

一直转到它算出「这段该结束了」为止。 最终你看到的是:

我无法查询实时天气,建议你打开天气应用看看。

停一下,看看刚才发生了什么

这句回答有 22 个字。它转了大约 22 圈(为什么是「大约」,下一节讲)。

每一圈它都把上面那一整段文字从头读了一遍。 第 22 圈读的内容,是第 1 圈读的内容再加上前面 21 圈写出来的字。

没有一圈是「接着上一圈的思路继续」的。每一圈都是重新开始。


4. 拆开看:四件事

4.1 它写的不是「字」,是 token

上面为了好懂,我一直说「一个字」。严格说,它每次写的是一个 token。

token 就是它切分文字的最小单位。

这个词中文一般直接说 token,不翻译。 少数地方译成「词元」,但业界口语和文档里 绝大多数写的就是 token,后面全文也用 token。

它可能正好是一个完整的词,也可能只是词的一小截。 英文里像 pre--ing-ized 这样的词头词尾,各自算一个 token (依据:本库摘录 · what-is-chatgpt-doing)。

这解释了两个你可能遇到过的现象:

现象为什么
它偶尔会造出根本不存在的词它是在拼片段,不是从一本词典里挑整词
生僻字、外语、颜文字它都能处理不需要有谁事先把这个词整个存进去,拆成片段就行

为什么现在就要认识这个词: 后面所有跟「量」有关的事——它一次最多能看多少、 你要付多少钱、什么时候会塞不下——算的都是 token 的个数,不是字数。 (具体怎么算钱,第 6 课讲。)

4.2 它故意不挑可能性最高的那个

看回第 3 节那张单子。「我」是 32%,是最高的。它挑了「我」。

但它并不总是挑最高的那个。它是带点随机地挑的。

这听起来像个缺陷,其实是刻意设计的。 原因很直接: 如果每次都挑最高分,写出来的东西会平淡,而且会开始复读 (依据:本库摘录 · what-is-chatgpt-doing)。

随机的程度有一个旋钮可以调。 调到 0,它就永远挑最高的那个; 往上调,它就越来越敢挑冷门的。常用的设定是 0.8——而这个数是试出来的,不是算出来的 (依据:本库摘录 · what-is-chatgpt-doing)。

这一条有一个你一定会撞上的后果:

同一个问题问两次,答案可能不一样。

这不是它「有时候聪明有时候笨」。是它每一圈都在带点随机地挑,两次走的路不同。

有本书里贴过一个真实的例子:同一个问题问同一个 AI 助手两次, 第一次直接答对了,第二次它凭空点了一个根本不存在的工具,发现不行才改口重来 (依据:本库摘录 · dong-shou-zuo-ai-agent)。

这件事对我们后面的所有设计定了一条底线: 任何「它一般会这么做」的假设都靠不住。 能用硬规矩管住的,就别指望靠好好说话说服它。

4.3 它追求的是「像」,不是「对」

这一节解释「AI 为什么会一本正经地胡说」。

第 3 节那张单子上的可能性,是照什么标准算出来的?

看过海量人类写的文字之后,人们大概率会接着这么写。 (依据:本库摘录 · what-is-chatgpt-doing)

把这句话再读一遍。里面没有「正确」两个字。

台阶一级一级走:

  1. 它挑下一个 token 的唯一标准,是「人会不会这么接」;
  2. 一句编造的话,只要读起来像真的,就完全满足这个标准;
  3. 所以它编出一个像模像样的数字、人名、日期时,从它的角度看是完全成功的;
  4. 它没有一个环节是在检查「这是不是真的」。

结论:胡说不是它坏了,是它在忠实地执行「写得像」。

这件事有个专门的叫法:幻觉

幻觉 = 它写出了一段读起来很像真的、但事实上不成立的内容。

举一个真实发生过的: 有本书里演示 AI 帮忙算汇率换算,它先去网上查到了商品价格, 然后调计算器算出了结果。但那个汇率数字,既不在搜索结果里,也没有第二次搜索去取—— 最可能是它自己编进算式的。 整个流程看起来一步不差,最终答案却建立在一个凭空来的数上 (依据:本库摘录 · hands-on-large-language-models)。

记住这个例子。 第 5 课整整一课都在讲「它跑偏了怎么办」, 而那一课的第一句话就是:跑偏不是异常,是它的正常工作方式在没人管的时候的自然结果。

4.4 它脑子里什么都不存

这是这一课最重要的一节,也是这整个课题存在的原因。

先看现象。有本书做过一个两句话的演示,结果很刺眼 (依据:本库摘录 · hands-on-large-language-models):

你:「你好,我叫小雪。1 + 1 等于几?」
它:「你好小雪!1 + 1 等于 2。」

你:「我叫什么名字?」
它:「抱歉,作为一个语言模型,我无法知道个人信息……」

上一句话它刚说出你的名字,下一句就不认识了。

为什么会这样? 回到第 2 节那张图:

  1. 它每转一圈,做的事是读一段文字、往后面接一点;
  2. 转完这一圈,这段文字就还给你了,它这边什么也不留;
  3. 所以「你上一句说过什么」根本不在它那里;
  4. 你下次再问它,它看到的只有你这一次送过去的那段文字;
  5. 那段文字里没写你的名字,它就不知道你的名字。

这个性质有个名字:无状态

无状态 = 每次调用都是全新的一次,不带上一次的任何痕迹。

那为什么平时用对话软件的时候,它明明记得?

因为那个软件在替你重发。 你只打了「我叫什么名字?」这几个字, 但软件真正送过去的是整段对话:

系统:你是一个乐于助人的助手。
用户:你好,我叫小雪。1 + 1 等于几? ← 软件替你重发的
助手:你好小雪!1 + 1 等于 2。 ← 软件替你重发的
用户:我叫什么名字? ← 你这次真正打的
助手:

它「记得」的每一个字,都是这次重新贴给它的。

所以那句「AI 有记性」是不准确的。准确的说法是:外面的程序每次都把过去重讲一遍给它听。

每一轮到底要重发哪些东西、按什么顺序摆——这是第 3 课的正题。

4.5 它自己不会重复这个动作

第 2 节那张图上,写完一点之后有一个箭头指回「从头读一遍」。那次重复不是它做的。

它一次只做一件事:读一段文字,往后面接一点,然后就结束了。 再送一次进去、让它接着往下写——这个动作是外面的程序做的。

拿你自己想事情对照一下,差别就出来了:

你琢磨一件事的时候,会翻来覆去地想——想到一半觉得不对,退回去重想; 想完了还会再过一遍看有没有漏。这个「再来一次」是你自己发起的,没人催你。

它不会。 它读一遍、往后接一点,这一次就结束了,它不会自己再来一次。

这不是我的推断。 前面那本书的最后一章专门拿它和人脑逐项对照, 其中一项就是「会不会反复琢磨同一件事」——书的结论是「不会」,而且认为这是它的一个硬限制 (依据:本库摘录 · what-is-chatgpt-doing)。

把 4.4 和 4.5 这两条并在一起,就是这整个课题的理由

这两条说的是两件不同的事,但后果一样——都得由外面的程序补上:

#它做不到的于是谁来做
4.4记住上一次说了什么外面的程序,每轮把过去整个重贴一遍
4.5自己再来一次外面的程序,拿到结果再送一次进去

这两件事加起来,就是「外面那个程序」要干的活。而我们这整个课题,做的就是它。

还有第三件它做不到的:决定「该收工了」。 但那一条比较特别——它其实是唯一由模型说了算的,第 4 课整整一课在讲这个。


5. 这一节要讲的分歧:关于「它为什么能行」,没有定论

前面四节讲的都是它怎么工作,那些是可以核对的事实。

这一节讲的是「它凭什么能工作」——而这件事,资料之间是不一致的。

为什么要专门讲这个: 你会在很多地方读到很笃定的解释。 知道哪些是事实、哪些是推测,比记住某一种解释更有用。

分歧一:「它为什么能行」是推测,不是结论

有一本书给了一个很漂亮的答案:简单的不是模型,是语言—— 语言在根本上比它看起来更简单,模型在训练中「隐含地发现」了这些规律 (依据:本库摘录 · what-is-chatgpt-doing)。

但这是作者的推测。 书里没有给出任何形式化的结果,也没有给出可以拿去验证的预言。 而且作者本人的措辞比多数转述都保守——「我强烈怀疑」「至少就我们目前所知」 这类限定词在那一章里反复出现。

分歧二:「涌现」这个词有正式的反对意见

你大概率听过一个说法:模型变大到某个程度,会突然冒出小模型没有的新能力, 就像水加热到 100 度突然变成气体。这个说法叫涌现

有一本书把它当既定事实用;而 2023 年有一篇论文直接反驳了它 (依据:本库摘录 · happy-llm)。

反驳的理由很好懂,值得完整看一遍:

一道多步计算题,只有全对才给分。

模型从「错三步」进步到「错一步」 → 得分还是 0
模型再进步到「一步不错」 → 得分突然从 0 跳到 1

图说:能力是平滑上升的,分数是跳的。
那个「突然」可能是打分尺子造成的,不是模型真的突变了。

务实的读法:

说法怎么对待
规模变大,能力变强可以采信
存在无法预测的能力跃迁要打问号
所以继续放大就一定能通向全能 AI不能拿涌现来论证这个

这一节的收获不是知识,是态度

这一行里笃定的说法很多,能核对的事实很少。 后面五课凡是引用到别人的结论,我都会标出这句话是谁说的、有没有出处看到没标出处的断言,你有理由怀疑它。


6. 动手:三个五分钟就能做完的观察

这一课没有代码。 写代码要从第 3 课开始才有意义——那时候我们才真的要造东西。

这一课的动手是「亲眼看见」。 打开任何一个你在用的 AI 对话软件,做这三件事:

#做什么你应该看到什么它验证的是
1随便问一句话,盯着字往外冒的过程字是一点一点接出来的,不是整段一起出现§2 那张图转的圈
2同一个问题,开两个新对话各问一遍两次的措辞不一样,有时连结论都不一样§4.2 它带点随机地挑
3先告诉它你的名字,聊两句;然后开一个全新的对话,问它「我叫什么名字」它不知道§4.4 无状态

第 3 条是重点。 请务必开新对话,而不是在原来那个里往下问—— 在原来那个里问,软件会替你把之前的话重发一遍,你就看不出区别了。

做完之后,如果哪一条你看到的和我写的不一样,请直接告诉我。 那说明这一课哪里写错了。


7. 可带走的

合上这一页你应该能用的:

  1. 大模型是一个程序:给它一段文字,它还你一段文字。它只干这一件事。
  2. 它写东西是一圈一圈来的,每圈只多出一点点,而且每圈都从头把整段文字重读一遍
  3. 它写的最小单位叫 token,可能是一个词也可能是词的一小截; 后面所有跟量和钱有关的事,算的都是 token 的个数。
  4. 它故意不挑可能性最高的那个,所以同一个问题问两次答案可能不同—— 别指望它「一般会怎样」。
  5. 它挑下一个 token 的标准是「像人会写的」,不是「对的」。 胡说不是故障,是这个标准的自然结果。这件事叫幻觉。
  6. 它脑子里什么都不存(无状态)。 你看到的「它记得」, 全是外面的程序每轮把过去重贴一遍造成的。
  7. 它自己不会重复这个动作。 「写完再送一次进去」是外面的程序在做。
  8. 上面第 6、7 两条加起来,就是这整个课题存在的理由: 我们要做的,就是外面那个负责「重贴」和「转圈」的程序。
  9. 关于「它为什么能行」,目前没有定论。 看到笃定的解释,先找出处。

8. 下一课,以及我需要你的反馈

第 2 课会回答一个这一课故意跳过的问题:

一个只会「照着前面接着往下写」的东西,凭什么听得懂「北京今天天气怎么样」是个提问, 而不是接着往下编一段别的文字?

答案不是「它懂了」。是有人专门训了它三段,让它学会照办。今天所有的 AI 助手、AI 编程工具,吃的都是这一条能力的饭。


读完请标出三种地方:

标什么我会怎么改
哪一段读不下去那一段拆成更小的台阶重写
哪个词没解释清楚换一种解释法,或者干脆不用那个词
哪里嫌啰嗦删掉

你标的直接决定下一版怎么改。这个库是写给你看的,你看不懂就是它没写好。