大模型是怎么学会"接话"的?从 Token 到自注意力一次讲清楚

0 阅读5分钟

大模型是怎么学会"接话"的?从 Token 到自注意力一次讲清楚

LLM 看起来无所不能,但本质上它只会做一件事——预测下一个词。

一、LLM 的核心工作:预测下一个词

不管你问 ChatGPT 什么,它的底层逻辑都只有一句话:根据前面的输入,预测下一个最可能的词

-> tokenID -> LLM(...) -> tokenID ->

比如你输入"你好",模型做的事就是:

  • 看到"你" → 预测下一个大概率是"好"
  • 看到"你好" → 预测下一个可能是"吗"、"。"、"!"
  • 以此类推,一个词一个词地往外蹦

这个过程叫自回归生成——用已经生成的内容,预测下一个内容,循环往复,直到输出完整的结果。

中国的首都是 → LLM 计算概率 → 北京 92%,北平 4%,长安 2% → 输出"北京"

模型不是在"理解"问题,而是在做概率计算。它训练过海量文本,知道"中国首都"后面跟着"北京"的概率最大。

二、Token:LLM 世界的货币

你输入的 prompt 是一段自然语言,但模型不认识文字,它只认识数字。中间需要一个翻译步骤。

第一步:把文本切成 Token(词元)

Token 不一定是完整的"词",可以是子词、字符,甚至是标点符号。

unhappiness["un", "happy", "ness"]  // 拆成三个子词
我爱人工智能 → ["我", "爱", "人工智能"]  // 中文按词切分

为什么要把词拆开?如果模型只认完整的词,它需要记住几十万个英文单词和几百万个中文词汇,计算量太大了。切成子词后,只需要掌握几万块基础"积木",就能拼出所有词汇。

每个 Token 会对应一个 Token ID(数字编号),这就是模型真正看到的输入。

"你" → Token ID: 57668
"好" → Token ID: 24793

把 Token 理解为 LLM 的货币。 你花的钱是按 Token 计费的,模型处理的每一个单元都是 Token。

三、Embedding:把数字变成语义

Token ID 只是一个编号——57668 不靠近 57667,也不靠近 57669,它们之间没有任何数学关系。

但"你"和"好"在语义上是有关系的。怎么把这种关系告诉模型?

答案是用 Embedding

Token ID(数字索引)→ Embedding(高维语义向量)

模型内部有一张巨大的向量查找表(Embedding Matrix)。拿到 Token ID 57668,就去 57668 号柜子里,把对应的向量取出来。

这个向量是一个高维空间中的坐标点,比如 1024 维。语义相近的词,在向量空间里的距离也近。

国王 → [0.85, 0.23, -0.12, ...]  // 1024 维向量
王后 → [0.82, 0.21, -0.10, ...]  // 距离很近
苹果 → [0.05, 0.87, 0.33, ...]   // 距离很远

甚至可以做向量运算:

国王 - 男性向量 + 女性向量 ≈ 王后

这就是语义迁移——模型通过海量训练,在向量空间里构建了一套几何结构。

四、位置编码:给 Token 加上顺序

光有语义还不够。一样的词,顺序不同意思完全不同。

我咬了狗  🆚  狗咬了我

Embedding 不携带位置信息,所以需要给每个向量叠加一个 位置编码(Positional Encoding),告诉模型这个词在句子里的第几个位置。

每个 Token 最终携带两类信息:

信息作用类比
语义信息(是什么)这个词的含义一个人的长相
位置信息(在哪里)这个词在第几位这个人站第几排

有了位置编码,模型才知道"我"在前、"狗"在后,顺序不一样含义不同。

五、自注意力:模型怎么理解上下文

位置编码解决的是顺序问题,但还有一个更复杂的问题——指代

看这句话:

The animal didn't cross the street because it was too tired.

这里的 it 指的是 animal 还是 street?对人类来说一目了然——动物过马路,累了的是动物。但模型怎么知道的?

答案是 Self-Attention(自注意力机制)

自注意力的核心思想是:让每个词去"看"句子里的其他词,找出跟自己最相关的那些。

实现上,每个 Token 的 Embedding 会分解为三个向量:

向量含义类比
Q(Query)我在找什么你要搜的关键词
K(Key)我能提供什么网页的标题标签
V(Value)我能贡献什么网页的实际内容

计算过程:

it 的 Query  → 和句子每个词的 Key 做点积运算 → 得到注意力分数
               animal 的 Key 分数最高 → it 指代 animal
token1: animal → (Q₁, K₁, V₁)
token2: it     → (Q₂, K₂, V₂)

score = Q₂ · K₁  ← it 和 animal 的相关性

分数越高,说明两个词的相关性越强。这样模型就知道:it 从 animal 那里"借"来了语义,指代的是动物。

这就是 Transformer 架构最核心的机制——靠自注意力,模型能理解长距离的依赖关系,不再局限于相邻的几个词。

总结一张图

输入文本 → Tokenization → Token IDs → Embedding → 语义向量 + 位置编码
                                                          ↓
                                                    自注意力(QKV)
                                                          ↓
                                                    预测下一个词
                                                          ↓
                                                    重复直到结束

几个核心概念速记:

概念一句话
TokenLLM 的最小处理单元,不一定是完整的词
Embedding把 Token ID 映射成高维语义向量
位置编码给向量加上位置信息,区分顺序
自注意力QKV 机制,让词之间互相"关注",理解上下文

LLM 看起来复杂,拆开来看其实就是这几步——切词、向量化、加位置、算注意力、预测下一个词。循环往复,就生成了你能读懂的文本。