六个容易
混淆的词
Token、Embedding、注意力、上下文、训练与推理、幻觉,分别是什么?
这六个词在讲大模型时出现得最多,也最常被混用。首屏把一句提问依次送过六个工位,每一站对应一个词。
先看全貌
每格回答三件事:它是什么,人们常把它误会成什么,它又容易和谁搞混。每格都附一个能动手的小装置,以及去正文的详细讲解。
Token 词元
一句话
模型读写文字的最小单位。文字先被分词器切成片段,每个片段对应词表里的一个整数编号。
常见误解
一个 Token 就是一个字,或者一个词。
实际上
Token 是分词器从大量语料里统计出来的片段[1]:常用词可能整个算一枚,少见的字可能被拆成几个字节,各占一枚。换一个模型,切法和编号也跟着换。GPT-2 就是在字节上做这种切分,词表共有 50,257 个 Token[2]。
容易和谁混淆,区别在哪
- Token和字、词
- 字和词是语言学的单位;Token 是某一个分词器的切法。同一句话在不同模型里,Token 数可能不一样,能放进窗口的内容和按 Token 计的费用也随之不同。
- Token和Embedding
- Token 只是一个整数编号,相当于“第几号字模”;拿这个编号去查表,得到的一串数才是 Embedding,才是参与计算的内容。
动手试输入一句话,看它被切成几枚。灰色虚线的是字节兜底:词表里没有的字,要拆成三个字节。
规则只有一条:从左到右,每次取词表里能匹配上的最长片段。词表里没有的生僻字会被拆成 UTF-8 字节(灰色),一个字要占三个 Token。
Embedding 嵌入向量
一句话
每个 Token 编号在一张大表里对应一串数(向量),可以看成它在高维空间里的坐标;用法相近的词,坐标也相近。
常见误解
向量里的每个数各管一种含义,比如某一维专门代表“性别”。
实际上
单个维度通常说不出明确的含义,有意义的是向量之间的距离和方向,比如“国王 − 男人 + 女人 ≈ 女王”[3]。查表得到的也只是起点:经过一层层注意力,同一个词在不同句子里会变成不同的向量。GPT-3 最大的模型里,每个 Token 的向量有 12,288 个数[4]。
容易和谁混淆,区别在哪
- Embedding和参数
- 嵌入表本身就是模型参数的一部分:训练时被调整,推理时只查不改。
- 模型里的 Embedding和检索用的“文本向量”
- 做资料检索时说的 Embedding,常指把一整段文字压成一个向量,用来比较两段话像不像(第 08 章)。它和模型内部每个 Token 的嵌入用途不同。
动手试点一个词找它的邻居,或者做一道向量算术。
点一个词,找它的邻居
或者做一道向量算术
选一个词,或点一道算式。
注意力 Attention
一句话
一种计算:每个 Token 和窗口里的其他 Token 逐一打分,再按分数比例,把它们的信息混进自己的表示。
常见误解
注意力就是模型像人一样“专注”在重点上,权重最高的词就是它得出结论的原因。
实际上
它是打分、归一化(softmax)、加权求和三步乘加运算,“注意力”只是一个比喻[5]。权重高说明这个词的信息被取用得多,不等于模型“因为”它才得出结论;拿注意力图解释模型行为要谨慎。
容易和谁混淆,区别在哪
- 注意力和上下文窗口
- 窗口决定哪些 Token 在场;注意力决定在场的 Token 之间各取多少。窗口外的内容,注意力根本够不着。
- 注意力和Embedding
- 嵌入表给“苹果”一个固定的起点;注意力根据前后文,把它改写成更像“水果”或更像“手机”的表示。下面的演示做的就是这件事。
动手试换一句话,看同一个「苹果」被前后文拉向哪一边。
「苹果」对句中每个词的打分 → 权重
上下文 Context Window
一句话
模型一次计算能放进来的全部 Token:你的问题、之前的对话、附上的资料,以及它已经写出的字,总量有上限。
常见误解
聊天机器人记得上周聊过的事,说明模型自己有记忆。
实际上
对话时模型的参数不变。所谓“记忆”,多半是软件把之前的内容重新放进窗口;放不下时,就截断、做摘要,或者从外部资料里检索回来(第 08 章)。GPT-3 的窗口是 2,048 个 Token[4],后来的模型扩大了许多,最新情况见第 09 章。
容易和谁混淆,区别在哪
- 上下文和训练数据
- 训练数据只在训练时用过,留下的是参数的变化;上下文是这一次计算真正“看得见”的原文,可以逐字引用。
- 上下文和产品里的“记忆”功能
- “记忆”是软件功能:把你过去说过的要点存起来,下次再放进窗口。模型本身没有因此改变。
动手试把窗口调小,看猫的名字什么时候滑出去。
小明养了一只猫,名字叫年糕。它每天早上六点叫小明起床,吃完饭就趴在窗台上晒太阳。周末小明带它去公园,它一直躲在包里。问:小明的猫叫什么?
训练与推理 Training · Inference
一句话
训练是用大量数据反复调整参数;推理是参数固定以后,拿它把输入算成输出。你和聊天机器人对话时,发生的只有推理。
常见误解
我纠正了它一次,它就学会了,以后不会再错。
实际上
对话时参数一个也不会改。这次能改正,是因为你纠正的话就在当前窗口里;开一个新对话,它多半照旧。要真正改变参数,得另做一次训练(比如微调),那是在对话之外进行的。GPT-3 只靠在提示里放几个例子就能完成新任务,这种“上下文学习”同样不更新参数[4]。
容易和谁混淆,区别在哪
- 推理(inference)和推理(reasoning)
- 中文里是同一个词。这里的推理指“运行模型、算出输出”;第 07 章的“推理模型”指先生成一段中间步骤再作答的做法,那些步骤同样是在推理(inference)阶段生成的。
- 训练和微调
- 微调也是训练,只是在已经训练好的模型上,用少得多的数据继续调整参数(第 05 章)。
动手试先切到“推理”试试没训练过的模型,再回来训练几步。留意参数被改了几次。
- 参数被修改
- 0 次
- 推理调用
- 0 次
平均偏差 — 杯
预测 = 1.00 × 28 = 28.0 杯
幻觉 Hallucination
一句话
模型生成了流畅、听起来可信,但与事实或给定资料不符,或者根本无从核实的内容[6]。
常见误解
幻觉是模型在故意撒谎,或者是偶尔冒出来的程序故障,修好就没了。
实际上
模型每一步只是挑出下一个 Token,生成过程本身并不核对真假;窗口里没有依据时,它照样能续写出最像答案的文字,语气也同样笃定。给它可靠的资料(检索增强,第 08 章[7])、要求注明出处、允许回答“不知道”,都能降低风险,但目前没有哪种方法能保证彻底消除。
容易和谁混淆,区别在哪
- 幻觉和知识过时
- 说出训练之后已经变化的旧信息,是“过时”:参数里的知识停在训练结束那一刻。幻觉是编出根本没有依据的内容。两者都要靠放进窗口的新资料来纠正。
- 幻觉和信息不在窗口里
- 名字滑出窗口后,模型可能“编”一个出来(上面第 04 格的演示)。缺少依据,是幻觉最常见的诱因之一。
动手试勾掉或补上资料卡,再点“逐句核对”,看哪些句子有出处。
放进窗口的资料卡 点卡片放入或拿出
问介绍一下小明的猫。
两张对照表
最常被混在一起的,是“改参数”和“用参数”,以及“记在参数里”和“摆在窗口里”。
| 训练 | 推理 | |
|---|---|---|
| 在做什么 | 用数据反复调整参数,让预测越来越准 | 用固定的参数,把输入算成输出 |
| 参数 | 每一步都在改 | 只读,一个也不改 |
| 什么时候 | 模型发布之前(预训练、微调) | 每次你发出请求时 |
| 需要什么 | 海量文本和大规模算力,集中投入 | 一段输入;按生成的 Token 一个接一个计算 |
| 产出 | 一份新的参数,也就是一个新模型 | 一段文字 |
| 打个比方 | 刻模铸字:造出一整套字模 | 排版印刷:用现成的字模排出新的一页 |
| 参数里的知识 | 上下文里的信息 | |
|---|---|---|
| 从哪里来 | 训练数据,被压缩进参数 | 这一次的输入:问题、对话、附件、检索到的资料 |
| 什么时候定下 | 训练结束那一刻(知识截止日期) | 每次请求时现放进去 |
| 怎么更新 | 只能重新训练或微调 | 换一段输入就变 |
| 精确程度 | 概括、模糊,可能记混 | 原文就在窗口里,可以逐字引用 |
| 容量 | 很大,但有损 | 受窗口上限约束 |
| 典型错误 | 记错、过时、编造 | 被截断;被资料里的错误或夹带的指令带偏 |
| 打个比方 | 闭卷考试 | 开卷考试 |
本页参考文献
- [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] 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] 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] Tom B. Brown et al.. Language Models are Few-Shot Learners. NeurIPS 2020 (arXiv:2005.14165).训练了1750亿参数的GPT-3,展示只需在提示中给出少量示例(上下文学习,不更新参数)就能完成许多任务。
- [5] Ashish Vaswani et al.. Attention Is All You Need. NIPS 2017 (arXiv:1706.03762).提出完全基于注意力、不使用循环和卷积的Transformer架构,训练可高度并行,后来成为几乎所有大语言模型的基础结构。
- [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] Patrick Lewis et al.. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020 (arXiv:2005.11401).将稠密检索器与序列生成模型结合,生成答案前先从维基百科等外部文档中检索相关段落,提升了开放域问答等知识密集型任务的表现,“RAG”一词由此而来。
全部文献、素材与许可见 来源与许可。