🌠 "你"为什么和"好"在 AI 脑子里离得很近?揭秘 LLM 预测下一个词的底层逻辑

5 阅读9分钟

写在前面:今天老师带我们"走进科学"——走进 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 的柜子里,把对应的向量'抽'出来。"

这就像你去图书馆:

  1. 查索引(Token ID)→ 找到 57668 号柜子。
  2. 打开柜子(Embedding Matrix)→ 抽出一张卡片(1024 维的向量)。
  3. 卡片上写满了数字,代表了"你"这个词的语义。

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)我能贡献什么内容?名片上的具体内容

整个过程是这样的:

  1. it 发出一个 Query:"我在找前文中的谁?"
  2. 句子里的每个词都递上自己的 Key(名片):"我是 animal"、"我是 street"、"我是 the"……
  3. it 的 Query 和每个词的 Key 做点积运算(相似度计算),得到一组"注意力分数"。
  4. 分数越高,说明两个词的相关性越强。
  5. 模型取分数最高的词——把它的 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 的内部,是一个"数学宇宙"

概念说明
TokenLLM 的"货币",计算和计价最小单位
Token ID词的编号,但没有语义
EmbeddingToken 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)计算每个词和其他词的关联程度;⑤ 输出下一个词的概率分布,选概率最高的输出;⑥ 把新词加入输入,继续预测下一个词——这就是自回归生成。整个过程没有'理解',只有数学运算,但组合起来产生了智能。"

然后看着面试官惊讶的表情,心里默念:这波,又稳了。


本文所有代码示例均来自课堂学习资料,真实可运行。