Transformer 架构:大模型是怎么理解你说的话的
说白了,Transformer 就是让每个词都能"看到"其他词,然后决定哪些词更重要。这篇文章用最直白的方式解释 Transformer 的工作原理。
我最近在研究大模型的时候,一直在想一个问题:当我给 ChatGPT 发一段很长的话,它是怎么理解这段话的?后来发现,这背后的核心技术就是 Transformer。
说白了,Transformer 就是让每个词都能”看到”其他词,然后决定哪些词更重要。听起来简单,但实现起来挺巧妙的。
前提:词向量
在讲 Transformer 之前,得先说说词向量。
当你给大模型发送一段话时,这段话会被拆分成很多个词,每个词都会被转换成一个高维向量。这个向量里存储了三种信息:
- 值(这个词本身的含义)
- 位置(这个词在句子里的位置)
- 语义权重(这个词和其他词的关系)
这就是词向量。有了词向量,Transformer 才能开始工作。
Transformer 的核心:QKV 机制
Transformer 提供了三个矩阵:Wq、Wk、Wv。
每个词向量分别和这三个矩阵相乘,就得到了三个新的向量:
- Q(Query):查询向量,代表”我想找什么”
- K(Key):键向量,代表”我是什么”
- V(Value):值向量,代表”我的内容是什么”
有了 Q、K、V,接下来就是四个步骤。
Step 1:打分
每个词用自己的 Q 去乘一遍其他词的 K(包括自己),也就是做点积。
这样每个词和其他词都会得到一个分数,代表了这个词和其他词的相关性。分数越高,相关性越高。
比如:[10, 5, 2]
Step 2:归一化
问题来了:这些分数太大了,会导致梯度不稳定。
为什么?因为后面要用 softmax 公式进行归一化,而 softmax 里用的是 e^x。当 x 的值越大或越小,就会导致某些词的权重变成 0。
比如:
e^10 = 22026e^2 = 7.4
这样就会导致分数大的词权重无限大,分数小的词权重无限小。
所以要给分数除以一个缩放因子:√dk(dk 是 K 向量的维度)。
这样概率大的词还是大,但其他词的概率也得到了平等对待。
缩放之后,再用 softmax 进行概率处理。
Step 3:加权融合
这一步就是将每个词计算出的权重乘以它自己的 V 向量,然后把结果相加。
最终得到的就是以这个词自己的视角所携带的上下文信息的词向量。
Step 4:回答
大模型会做这几件事情:
-
多头注意力:大模型其实会同时进行好几组 QKV,进行比较分析。这样可以从不同角度理解同一个词。
-
FFN(前馈神经网络):将 Step 3 计算出的结果放进 FFN 的输入层,进行前向传播和反向传播的不断学习。经过反复训练调整 w 和 b 的参数,最终用户看到的回答就是经过训练后的回答。
我的理解
Transformer 的核心就是让每个词都能”看到”其他词,然后通过 QKV 机制计算出哪些词更重要。
这个机制的巧妙之处在于:
- 每个词都有自己的视角(Q)
- 每个词都能被其他词看到(K)
- 每个词都有自己的内容(V)
通过这三个向量的计算,每个词就能知道自己应该关注哪些词,从而理解整个句子的意思。
这就是 Transformer 的核心原理。
参考资料:
- Attention Is All You Need - Transformer 原始论文
- The Illustrated Transformer - 图解 Transformer
- Transformer Explainer - 交互式可视化工具,可以在浏览器里实时看到 GPT-2 的工作过程
- TensorFlow Embedding Projector - 词向量可视化工具,可以把高维词向量投影到 3D 空间
- Transformer 模型详解 - 知乎详细解析