一、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,记住一个生活场景

想象你在一个嘈杂的派对上,想听清楚你朋友(小明)说的话。

这时候你的大脑在做三件事:

  1. 聚焦:把注意力主要放在小明身上(忽略远处的噪音)

  2. 参考:偶尔听一下旁边小红的反应,看她的表情是否附和(获取上下文)

  3. 回顾:回想小明刚才说的前半句话(理解完整的逻辑)

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
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐