写在前面:今天老师带我们"走进科学"——走进 LLM 的内部,看看模型拿到 Token 后到底经历了什么。以前我以为 AI 是"读懂"了我的话,结果老师说:它根本不懂,它只是在做一件极其纯粹的事——预测下一个词的概率。 而且这个过程极其复杂,涉及查表、空间向量、位置编码和注意力机制……我听完只想说:原来 AI 的工作方式,比我想象中更像"玄学"。
一、LLM 的"本职工作":猜下一个词
1.1 它只会做一件事
老师说了一句让我醍醐灌顶的话:
"LLM 只会做一件事——预测下一个词。"
你给它输入一段文字,它不会"理解",不会"思考",它只做一件事:根据前面的词,猜下一个词是什么。
"中国的首都是" → LLM → "北京"(92%)、"北平"(4%)、"长安"(2%)……(概率分布)
LLM 从来不"想"答案,它只是算概率。 算出来"北京"的概率最大,就输出"北京"。
那"北京"之后呢?LLM 会把"北京"也加入输入,继续预测下一个词:
"中国的首都是北京" → LLM → "。"(85%)、"。"后继续预测……
这就是自回归生成(Autoregressive Generation):预测一个词 → 加入输入 → 预测下一个词 → 循环。
1.2 Token 是 LLM 的"货币"
老师说:
"把词元(Token)理解为 LLM 的货币。"
用户输入的 Prompt(自然语言)被分割为多个 Token,每个 Token 转成一个 Token ID,这些 Token ID 就是模型的输入。
但Token 不等于"词"。老师说:
"大模型处理的最小单元不一定是完整的'词',可能是'子词'、'字符'甚至是'标点'。"
看这个例子:
unhappiness → un + happi + ness(拆成了 3 个 Token)
为什么要把词拆碎?
老师说:
"如果只认识完整的词,模型需要记住几十万个英文单词和几百万个中文词汇,计算量太大了。把词切成子词,模型只需要掌握几万个基础积木(词元)。Token 查找表大小就不会那么大,运算效率就高。"
这就像乐高——你不是用现成的房子、车子、飞机去搭东西,而是用几千块基础积木,自由组合出任何造型。 Token 就是 LLM 世界里的"基础积木"。
中文的例子:
"我爱人工智能,自然语言处理很有趣"
→ ["我"、"爱"、"人工智能"、","、"自然语言处理"、"很"、"有趣"]
二、Embedding:从数字编号到"语义坐标"
2.1 Token ID 只是个编号,没有意义
你的文字变成了 Token ID(比如 "你" → 57668),但这个编号本身没有任何含义。
老师说:
"不能通过这个编号,加减乘除计算得到好的编号。57668 减 1 不等于 57667,它们之间没有数学关系。"
Token ID 就像图书馆里的索书号——它告诉你"这本书在第几个柜子",但不告诉你"这本书讲什么"。
要让 LLM "理解"语义,需要下一步——Embedding(嵌入/向量化)。
2.2 从编号到高维向量
老师说:
"第一步:用 Token ID(数字表达)变成一个 Embedding(语义向量),一个坐标。模型拿到 Token ID 57668 '你',就直接去 57668 的柜子里,把对应的向量'抽'出来。"
这就像你去图书馆:
- 查索引(Token ID)→ 找到 57668 号柜子。
- 打开柜子(Embedding Matrix)→ 抽出一张卡片(1024 维的向量)。
- 卡片上写满了数字,代表了"你"这个词的语义。
LLM 内部有个巨大的向量查找表——Embedding Matrix。 模型拿到 Token ID,直接查表,找出对应的向量。
老师说:
"Embedding(1024 维)——语义向量(Pre-trained 神经元)——语义相近的词,他们的向量距离就比较近。"
"你"和"好"在 1024 维空间中离得很近,因为它们在语义上相关。 就像北京和上海在地图上的距离很近,因为它们都是中国的大城市。
2.3 向量的"数学魔法":国王 - 男性 + 女性 ≈ 王后
老师举了一个经典例子:
"国王 - 男性的向量 + 女性的向量 ≈ 王后。向量的计算和语义的迁移。"
真的可以用向量运算来做"语义算术":
国王的向量 - 男性的向量 + 女性的向量 ≈ 王后的向量
同样:
巴黎的向量 - 法国的向量 + 中国的向量 ≈ 北京的向量
模型的训练就是会构建这样的几何结构和空间坐标系。 在这个 1024 维的空间里,语义相近的词靠得近,语义无关的词离得远。
比如:
- "国王"和"王后":距离很近。
- "苹果"(水果):离"国王"很远。
- "苹果"(手机品牌):离"科技"很近。
三、位置编码:顺序不一样,意思完全不一样
3.1 "我咬了狗" vs "狗咬了我"
老师说:
"光有语义的理解还不够,相同的四个字顺序不一样,表达的意思不一样。顺序、当前上下文非常重要。"
Embedding 只告诉模型"这个词是什么",但不告诉"这个词在第几个位置"。
如果不知道位置,模型会认为"我咬了狗"和"狗咬了我"是一样的。
3.2 给每个 Token 加一个"座位号"
老师说:
"Embedding 不携带位置信息,我们就给每个向量叠加一个位置编码(Positional Encoding, PE),告诉 LLM,这个词属于句子的第几个。"
每个 Token 携带两类信息:
| 信息 | 作用 | 比喻 |
|---|---|---|
| 语义向量(Embedding) | 是什么 | 你是谁 |
| 位置编码(PE) | 在哪里 | 你坐在第几排 |
位置编码叠加在语义向量之上——模型同时知道"这个词是什么"和"这个词在句子的哪个位置"。
这就像开会点名:
- 语义向量 = 你叫什么名字。
- 位置编码 = 你坐在几排几号。
- 两个信息合在一起,模型才能完整理解一句话。
四、Self-Attention:模型怎么知道"it"指代谁?
4.1 代词指代的难题
老师说了一个经典句子:
The animal didn't cross the street because it was too tired.
这里的 it 指代谁? 是 animal(动物),还是 street(街道)?
动物会累,街道不会累——所以 it 指代 animal。
但模型怎么知道这个关系?
4.2 自注意力机制:每个词都问"谁跟我有关系?"
老师说:
"LLM 引用的机制叫 Self-Attention(自注意力)。每一个 Embedding 分成三个部分:Q(Query)、K(Key)、V(Value)。"
| 角色 | 含义 | 比喻 |
|---|---|---|
| Q(Query) | 我在找什么? | 你在找人问路 |
| K(Key) | 我能提供什么?名片 | 别人给你的名片 |
| V(Value) | 我能贡献什么内容? | 名片上的具体内容 |
整个过程是这样的:
it发出一个 Query:"我在找前文中的谁?"- 句子里的每个词都递上自己的 Key(名片):"我是 animal"、"我是 street"、"我是 the"……
it的 Query 和每个词的 Key 做点积运算(相似度计算),得到一组"注意力分数"。- 分数越高,说明两个词的相关性越强。
- 模型取分数最高的词——把它的 Value(语义内容)加权合并到
it的理解中。
老师用一个例子说明了 Token 之间的计算:
Token1: animal → (Q1, K1, V1)
Token2: it → (Q2, K2, V2)
Score(animal, it) = Q2 · K1
Score(street, it) = Q2 · K3
如果 Score(animal, it) 远大于 Score(street, it),模型就知道 it 指代的是 animal。
然后模型会把 animal 的 Value(具体的语义特征)加权合并到 it 的表示中——这样 it 就"继承"了 animal 的语义。
五、完整的"预测下一个词"流程
老师把整个流程串起来了:
输入 Prompt(自然语言)
↓
Tokenization(分词)
↓
Token ID → Embedding(语义向量 + 位置编码)
↓
Self-Attention(理解上下文,计算语义关联)
↓
预测下一个词的概率分布
↓
输出概率最高的词
↓
把新词加入输入 → 继续预测下一个词(自回归)
| 步骤 | 做了什么 | 关键概念 |
|---|---|---|
| 1 | 分词 | Token、Token ID |
| 2 | 查表找向量 | Embedding Matrix |
| 3 | 加位置信息 | Positional Encoding |
| 4 | 理解上下文 | Self-Attention(Q/K/V) |
| 5 | 算概率 | 概率分布,选最高的 |
| 6 | 继续生成 | 自回归生成 |
六、总结:LLM 的内部,是一个"数学宇宙"
| 概念 | 说明 |
|---|---|
| Token | LLM 的"货币",计算和计价最小单位 |
| Token ID | 词的编号,但没有语义 |
| Embedding | Token ID → 高维语义向量(1024 维) |
| Positional Encoding | 给每个词加"座位号" |
| Self-Attention | 通过 Q/K/V 计算词之间的相关性 |
| Autoregressive | 预测一个词 → 加入输入 → 继续预测 |
LLM 的内部,是一个 1024 维的数学宇宙。 Token 是这个宇宙里的坐标点,Attention 是坐标点之间的引力,Positional Encoding 是时间维度。
它不懂语言,它只懂数字。但通过海量的预训练数据,这些数字构建出了一个能"模拟"人类语言的几何空间。
写在最后
今天最大的收获,是理解了 LLM 预测下一个词的完整流程。从 Token 到 Embedding,从位置编码到 Self-Attention,每一步都是"数学操作",没有一步是"理解"。但就是这些纯粹的数学操作组合在一起,产生了让人惊叹的"智能"。
下次面试官问你:"LLM 是怎么预测下一个词的?"
你可以淡定地说:
"LLM 的核心工作是预测下一个词的概率分布。流程是:① Tokenization 把文本切成 Token 并转成 Token ID;② 通过 Embedding Matrix 查表,把 Token ID 变成高维语义向量(如 1024 维);③ 叠加 Positional Encoding 加入位置信息;④ 通过 Self-Attention 机制(Q/K/V)计算每个词和其他词的关联程度;⑤ 输出下一个词的概率分布,选概率最高的输出;⑥ 把新词加入输入,继续预测下一个词——这就是自回归生成。整个过程没有'理解',只有数学运算,但组合起来产生了智能。"
然后看着面试官惊讶的表情,心里默念:这波,又稳了。
本文所有代码示例均来自课堂学习资料,真实可运行。