活字 从规则到大模型
正在加载 3D
你 好 ! 猫 叫 年糕 。 它 几 岁 ? 年糕 三 岁 无出处 ① 切分② 查表③ 注意力④ 装进窗口⑤ 逐字生成⑥ 核对

这台设备或浏览器没有开启 WebGL2,这里显示同一装置的静态图;正文里的演示与文字说明照常可用。

3D 画面没能加载。

点手托前沿的工位或下方按钮换站 · 拖动旋转 · 向下滚动,手托翻平,俯视整行

附 A

六个容易
混淆的词

Token、Embedding、注意力、上下文、训练与推理、幻觉,分别是什么?

这六个词在讲大模型时出现得最多,也最常被混用。首屏把一句提问依次送过六个工位,每一站对应一个词。

① 切分整句先被切成一枚枚 Token,每枚对应词表里的一个编号。「年糕」是常用词,整个只占一枚。 看「Token」这一格 ↓

编号、向量、注意力权重和生成概率都是示意数据,不来自真实模型

先看全貌

每格回答三件事:它是什么,人们常把它误会成什么,它又容易和谁搞混。每格都附一个能动手的小装置,以及去正文的详细讲解。

01① 切分

Token 词元

一句话

模型读写文字的最小单位。文字先被分词器切成片段,每个片段对应词表里的一个整数编号。

常见误解

一个 Token 就是一个字,或者一个词。

实际上

Token 是分词器从大量语料里统计出来的片段⁠[1]⁠:常用词可能整个算一枚,少见的字可能被拆成几个字节,各占一枚。换一个模型,切法和编号也跟着换。GPT-2 就是在字节上做这种切分,词表共有 50,257 个 Token⁠[2]⁠。

容易和谁混淆,区别在哪

Token和字、词
字和词是语言学的单位;Token 是某一个分词器的切法。同一句话在不同模型里,Token 数可能不一样,能放进窗口的内容和按 Token 计的费用也随之不同。
Token和Embedding
Token 只是一个整数编号,相当于“第几号字模”;拿这个编号去查表,得到的一串数才是 Embedding,才是参与计算的内容。

详细讲解 第 03 章 · Token:模型读的是编号

动手试输入一句话,看它被切成几枚。灰色虚线的是字节兜底:词表里没有的字,要拆成三个字节。

分词器:把一句话切成字模 手工小词表的简化分词器,编号为演示用

规则只有一条:从左到右,每次取词表里能匹配上的最长片段。词表里没有的生僻字会被拆成 UTF-8 字节(灰色),一个字要占三个 Token。

02② 查表

Embedding 嵌入向量

一句话

每个 Token 编号在一张大表里对应一串数(向量),可以看成它在高维空间里的坐标;用法相近的词,坐标也相近。

常见误解

向量里的每个数各管一种含义,比如某一维专门代表“性别”。

实际上

单个维度通常说不出明确的含义,有意义的是向量之间的距离和方向,比如“国王 − 男人 + 女人 ≈ 女王”⁠[3]⁠。查表得到的也只是起点:经过一层层注意力,同一个词在不同句子里会变成不同的向量。GPT-3 最大的模型里,每个 Token 的向量有 12,288 个数⁠[4]⁠。

容易和谁混淆,区别在哪

Embedding和参数
嵌入表本身就是模型参数的一部分:训练时被调整,推理时只查不改。
模型里的 Embedding和检索用的“文本向量”
做资料检索时说的 Embedding,常指把一整段文字压成一个向量,用来比较两段话像不像(第 08 章)。它和模型内部每个 Token 的嵌入用途不同。

详细讲解 第 03 章 · Embedding:编号变成坐标

动手试点一个词找它的邻居,或者做一道向量算术。

词向量地图:意思相近,位置就相近 二维示意,坐标为手工摆放;真实向量有几百到上万维
国王 女王 王子 公主 男人 女人 男孩 女孩 法国 巴黎 日本 东京 中国 北京 猫 狗 老虎 狮子 香蕉 橘子 苹果 手机 电脑

点一个词,找它的邻居

或者做一道向量算术

选一个词,或点一道算式。

03③ 注意力

注意力 Attention

一句话

一种计算:每个 Token 和窗口里的其他 Token 逐一打分,再按分数比例,把它们的信息混进自己的表示。

常见误解

注意力就是模型像人一样“专注”在重点上,权重最高的词就是它得出结论的原因。

实际上

它是打分、归一化(softmax)、加权求和三步乘加运算,“注意力”只是一个比喻⁠[5]⁠。权重高说明这个词的信息被取用得多,不等于模型“因为”它才得出结论;拿注意力图解释模型行为要谨慎。

容易和谁混淆,区别在哪

注意力和上下文窗口
窗口决定哪些 Token 在场;注意力决定在场的 Token 之间各取多少。窗口外的内容,注意力根本够不着。
注意力和Embedding
嵌入表给“苹果”一个固定的起点;注意力根据前后文,把它改写成更像“水果”或更像“手机”的表示。下面的演示做的就是这件事。

详细讲解 第 03 章 · 注意力:每个词都向整句话提问

动手试换一句话,看同一个「苹果」被前后文拉向哪一边。

同一个「苹果」,前后文不同,表示也不同 坐标与打分为手工设定的二维示意;softmax 与加权求和是真实计算
← 更像水果 更像电子产品 → 香蕉橘子手机电脑 查表起点 苹果

「苹果」对句中每个词的打分 → 权重

04④ 装进窗口

上下文 Context Window

一句话

模型一次计算能放进来的全部 Token:你的问题、之前的对话、附上的资料,以及它已经写出的字,总量有上限。

常见误解

聊天机器人记得上周聊过的事,说明模型自己有记忆。

实际上

对话时模型的参数不变。所谓“记忆”,多半是软件把之前的内容重新放进窗口;放不下时,就截断、做摘要,或者从外部资料里检索回来(第 08 章)。GPT-3 的窗口是 2,048 个 Token⁠[4]⁠,后来的模型扩大了许多,最新情况见第 09 章。

容易和谁混淆,区别在哪

上下文和训练数据
训练数据只在训练时用过,留下的是参数的变化;上下文是这一次计算真正“看得见”的原文,可以逐字引用。
上下文和产品里的“记忆”功能
“记忆”是软件功能:把你过去说过的要点存起来,下次再放进窗口。模型本身没有因此改变。

详细讲解 第 03 章 · 上下文窗口:一次能看多长

动手试把窗口调小,看猫的名字什么时候滑出去。

上下文窗口:盘子只有这么大 窗口按 Token 数截取的示意,回答为预设
50
650

小明养了一只猫,名字叫年糕。它每天早上六点叫小明起床,吃完饭就趴在窗台上晒太阳。周末小明带它去公园,它一直躲在包里。问:小明的猫叫什么?

05⑤ 逐字生成

训练与推理 Training · Inference

一句话

训练是用大量数据反复调整参数;推理是参数固定以后,拿它把输入算成输出。你和聊天机器人对话时,发生的只有推理。

常见误解

我纠正了它一次,它就学会了,以后不会再错。

实际上

对话时参数一个也不会改。这次能改正,是因为你纠正的话就在当前窗口里;开一个新对话,它多半照旧。要真正改变参数,得另做一次训练(比如微调),那是在对话之外进行的。GPT-3 只靠在提示里放几个例子就能完成新任务,这种“上下文学习”同样不更新参数⁠[4]⁠。

容易和谁混淆,区别在哪

推理(inference)和推理(reasoning)
中文里是同一个词。这里的推理指“运行模型、算出输出”;第 07 章的“推理模型”指先生成一段中间步骤再作答的做法,那些步骤同样是在推理(inference)阶段生成的。
训练和微调
微调也是训练,只是在已经训练好的模型上,用少得多的数据继续调整参数(第 05 章)。

详细讲解 第 04 章 · 训练与推理:改参数,还是只读参数 第 07 章 · 推理与 MoE

动手试先切到“推理”试试没训练过的模型,再回来训练几步。留意参数被改了几次。

训练改参数,推理只读参数 只有 1 个参数的小模型,数据为虚构;梯度下降与预测都是真实计算
10203040 04080120 气温(°C) 冰饮(杯)
参数 w 1.00 可修改
参数被修改
0 次
推理调用
0 次

平均偏差 — 杯

06⑥ 核对

幻觉 Hallucination

一句话

模型生成了流畅、听起来可信,但与事实或给定资料不符,或者根本无从核实的内容⁠[6]⁠。

常见误解

幻觉是模型在故意撒谎,或者是偶尔冒出来的程序故障,修好就没了。

实际上

模型每一步只是挑出下一个 Token,生成过程本身并不核对真假;窗口里没有依据时,它照样能续写出最像答案的文字,语气也同样笃定。给它可靠的资料(检索增强,第 08 章⁠[7]⁠)、要求注明出处、允许回答“不知道”,都能降低风险,但目前没有哪种方法能保证彻底消除。

容易和谁混淆,区别在哪

幻觉和知识过时
说出训练之后已经变化的旧信息,是“过时”:参数里的知识停在训练结束那一刻。幻觉是编出根本没有依据的内容。两者都要靠放进窗口的新资料来纠正。
幻觉和信息不在窗口里
名字滑出窗口后,模型可能“编”一个出来(上面第 04 格的演示)。缺少依据,是幻觉最常见的诱因之一。

详细讲解 第 05 章 · 指令微调与对齐 第 08 章 · RAG 与 Agent

动手试勾掉或补上资料卡,再点“逐句核对”,看哪些句子有出处。

逐句核对:哪句话有出处? 回答为预设文本;核对是简化的逐条比对,真实的事实核查难得多

放进窗口的资料卡 点卡片放入或拿出

问介绍一下小明的猫。

答

有出处 无出处

两张对照表

最常被混在一起的,是“改参数”和“用参数”,以及“记在参数里”和“摆在窗口里”。

训练 vs 推理
训练推理
在做什么用数据反复调整参数,让预测越来越准用固定的参数,把输入算成输出
参数每一步都在改只读,一个也不改
什么时候模型发布之前(预训练、微调)每次你发出请求时
需要什么海量文本和大规模算力,集中投入一段输入;按生成的 Token 一个接一个计算
产出一份新的参数,也就是一个新模型一段文字
打个比方刻模铸字:造出一整套字模排版印刷:用现成的字模排出新的一页
参数里的知识 vs 上下文里的信息
参数里的知识上下文里的信息
从哪里来训练数据,被压缩进参数这一次的输入:问题、对话、附件、检索到的资料
什么时候定下训练结束那一刻(知识截止日期)每次请求时现放进去
怎么更新只能重新训练或微调换一段输入就变
精确程度概括、模糊,可能记混原文就在窗口里,可以逐字引用
容量很大,但有损受窗口上限约束
典型错误记错、过时、编造被截断;被资料里的错误或夹带的指令带偏
打个比方闭卷考试开卷考试

本页参考文献

  1. [1] Rico Sennrich, Barry Haddow, Alexandra Birch. Neural Machine Translation of Rare Words with Subword Units. ACL 2016, pp. 1715–1725 (arXiv:1508.07909).把字节对编码(BPE)压缩算法改造成子词切分方法,使神经机器翻译能用有限的词表处理罕见词和未登录词;BPE及其变体后来成为大语言模型分词器的常见做法。
  2. [2] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever. Language Models are Unsupervised Multitask Learners. OpenAI (technical report; announced in the blog post “Better language models and their implications”).在约800万个网页(WebText)上训练了最大15亿参数的GPT-2,显示语言模型无需针对任务训练也能零样本完成部分任务;OpenAI以担心被滥用为由分阶段公开了模型权重。
  3. [3] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. ICLR 2013 Workshop (arXiv:1301.3781).提出CBOW和Skip-gram两种简单高效的模型(即word2vec),可在大规模语料上快速学习词向量,词向量之间的线性关系能反映部分语义和句法关系。
  4. [4] Tom B. Brown et al.. Language Models are Few-Shot Learners. NeurIPS 2020 (arXiv:2005.14165).训练了1750亿参数的GPT-3,展示只需在提示中给出少量示例(上下文学习,不更新参数)就能完成许多任务。
  5. [5] Ashish Vaswani et al.. Attention Is All You Need. NIPS 2017 (arXiv:1706.03762).提出完全基于注意力、不使用循环和卷积的Transformer架构,训练可高度并行,后来成为几乎所有大语言模型的基础结构。
  6. [6] Ziwei Ji et al.. Survey of Hallucination in Natural Language Generation. ACM Computing Surveys, 55(12) (2023; online Mar 2023); preprint arXiv:2202.03629 (2022).系统综述了自然语言生成中的“幻觉”(生成内容与来源不符或无法验证)问题,梳理了其定义、分类、成因、评测指标和缓解方法。
  7. [7] Patrick Lewis et al.. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020 (arXiv:2005.11401).将稠密检索器与序列生成模型结合,生成答案前先从维基百科等外部文档中检索相关段落,提升了开放域问答等知识密集型任务的表现,“RAG”一词由此而来。

全部文献、素材与许可见 来源与许可。