LLM中的Transformer架构
一、Transformer 是什么?
Transformer 是 2017 年 Google 提出的神经网络架构,它抛弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全基于注意力机制。
核心优势:
-
可以并行处理整个序列(不像 RNN 必须逐个词处理)
-
能捕捉长距离的依赖关系(比如句子开头和结尾的关联)
在大模型中的地位:GPT、BERT、LLaMA、ChatGLM 等主流大模型,底层都是 Transformer 架构或其变体。
传统序列模型的缺陷
| 模型 | 缺点 |
|---|---|
| RNN/LSTM | 必须逐个词处理,无法并行;长距离依赖容易遗忘(梯度消失) |
| CNN | 需要堆叠很多层才能捕获长距离依赖,感受野受限 |
Transformer 的革命性
-
完全抛弃循环与卷积 → 可以并行计算
-
自注意力机制 → 任意两个位置直接交互,1 步捕获长距离依赖(自注意力机制是Transformer模型的核心组件)
-
可扩展性极强 → 模型越大效果越好(Scaling Law)
-
RNN/CNN/Transfermer对比
原始 Transformer 有两大部分(以翻译为例)
| 部分 | 作用 | 输入 | 输出 | 类比 |
|---|---|---|---|---|
| Encoder(编码器) | 理解源语言 | “How are you” | 一组“深度理解后的向量” | 你把英文句子完全读懂 |
| Decoder(解码器) | 生成目标语言 | 已生成的中文词 + Encoder 的输出 | 下一个中文词 | 你一句句写出中文翻译 |
现代大模型只用其中一部分
| 架构 | 使用部分 | 代表模型 | 任务 |
|---|---|---|---|
| Decoder-Only | 只用 Decoder | GPT、LLaMA、ChatGLM | 文本生成(续写、对话) |
| Encoder-Only | 只用 Encoder | BERT | 文本理解(分类、实体识别) |
| Encoder-Decoder | 两者都用 | T5、BART | 转换任务(翻译、摘要) |
为什么 GPT(Decoder-Only)成为主流?
-
训练简单:只需要“预测下一个词”,不需要标注数据
-
通用性强:通过提示词(prompt)可以完成理解、生成、推理等各种任务
Encoder 负责“读懂”,Decoder 负责“写出”。GPT 只用 Decoder 也能“读懂”,是因为它把理解能力内化在了自注意力里
看起来比较抽象, 下面将举例说明:
一、先忘掉 Transformer,记住一个生活场景
想象你在一个嘈杂的派对上,想听清楚你朋友(小明)说的话。
这时候你的大脑在做三件事:
-
聚焦:把注意力主要放在小明身上(忽略远处的噪音)
-
参考:偶尔听一下旁边小红的反应,看她的表情是否附和(获取上下文)
-
回顾:回想小明刚才说的前半句话(理解完整的逻辑)
Transformer 做的事情完全一样:读一个句子的时候,每个词都会“看一看”句子里的其他词,决定要重点关注谁。
一句话总结:Transformer 就是一种让每个词都能“环顾四周、决定关注谁”的机制。
二、一个具体例子:理解“它”指什么
句子:
“小明很累了,它没有吃饭。”
你读这个句子的时候,怎么知道“它”是谁?
-
你会回看 → 小明 → 哦,“它”指的是小明
-
你不会去看 → 苹果、桌子(这些词不在句子里)
实际上你就在做“注意力”:把“它”这个词的注意力,指向了“小明”。
Transformer 干的活就是这个:让“它”这个位置的向量,主动吸收“小明”位置的信息。
三、那 Q、K、V 又是什么?
还是上面这个句子:“小明 很 累 了”
当模型处理“累”这个词的时候:
| 角色 | 比喻 | 在模型里 |
|---|---|---|
| Q(查询) | 你向全场问:“谁和我有关系?” | “累”发出一个信号 |
| K(键) | 每个人举牌子:“我是小明”、“我是很”、“我是了” | 每个词都准备好被匹配 |
| 计算匹配 | 看 Q 和谁的 K 最匹配 → 得分高 | “累”的 Q 和“小明”的 K 匹配度高 |
| V(值) | 匹配上之后,把对方的信息拿过来用 | “小明”的真实词义传递给了“累” |
结果:最后“累”这个词的表示里,混入了“小明”的信息。模型就知道:这是小明的累。
类比:你在查资料(Q),书籍有标签(K),书籍内容(V)。匹配标签后,你拿走内容。
四、整体流程图
输入:一句话分成多个词
“我 喜欢 猫” ↓ ↓ ↓ [词1] [词2] [词3] (每个词是一个向量,你可以理解为数字列表)
核心操作(每个词同时做):
对于“喜欢”这个词:
Step 1:发出一个“查询信号”(Q)
Step 2:看所有词的“标签信号”(K),计算一个匹配分数
→ 和自己的匹配度最高(0.7)
→ 和“我”的匹配度中等(0.2)
→ 和“猫”的匹配度低(0.1)
Step 3:用这些分数去加权“内容信号”(V)
→ 新的“喜欢” = 0.7×自己的V + 0.2ד我”的V + 0.1ד猫”的V
结果:每个词都变成了“融合了上下文的新版本”。
五、多头注意力又是什么?
单头:只有一个人帮你判断谁重要(可能看走眼)
多头:8 个人同时帮你判断:
-
第 1 个人专看“语法关系”(主谓宾)
-
第 2 个人专看“语义相似”(情感色彩)
-
第 3 个人专看“位置远近”
-
...
最后把 8 个人的结果综合起来,更全面。
多头注意力 = 让模型同时从多个角度理解词与词之间的关系,避免“一叶障目”
六、为什么需要位置编码?
因为 Transformer 的 Self-Attention 本身是顺序无关的。如果不加位置信息,模型会把“我打你”和“你打我”当成同一个意思(词的集合相同,只是顺序不同)。
解决方案:给每个位置生成一个独特的向量,加到词向量上。
-
原始 Transformer:正弦/余弦函数生成
-
现代大模型(LLaMA、GPT):RoPE(旋转位置编码)或 ALiBi
位置编码 = 给词加上“座位号”,否则模型分不清“我打你”和“你打我”
七、最后一张类比表
| 概念 | 通俗类比 | 专业术语 |
|---|---|---|
| 输入句子 | 一个班级的学生 | 词序列 |
| 每个词是一个学生 | 每个学生有自己的头像 | 词向量(embedding) |
| Q 查询 | 你问“谁跟我关系好?” | Query |
| K 键 | 每个人举着“我是XX”的牌子 | Key |
| 匹配分数 | 谁和你兴趣爱好最匹配 | 注意力权重 |
| V 值 | 这个人的实际影响力 | Value |
| 多头 | 从兴趣、性格、背景多个角度评估 | Multi-Head |
| 位置编码 | 给每个学生编号(1号、2号...) | Positional Encoding |
| FFN | 每个学生独立思考、加工信息 | Feed-Forward Network |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)