【AI核心原理30讲】-Transformer架构

Transformer架构:从零开始的完整指南

🔔 本专栏《AI核心原理30讲》:专注AI核心原理,回归技术本质。每篇追求一个目标------让复杂的东西变简单。


一、从"记性不好"说起

要理解Transformer,最简单的切入点是它的"前任"------RNN(循环神经网络)。

想象一下,你读一本侦探小说。读到第50页的时候,RNN要做的事情是:合上书,试图靠脑子里的几句话概括前49页的所有情节。它只能用最后那几个"隐藏状态"来代表整本书的信息。

这就是RNN的根本缺陷:信息是一步一步传递的,就像用竹签串糖葫芦,串到后面的时候,最前面那颗山楂的味道早就淡得差不多了。

当序列变长(比如翻译一篇5000词的论文),RNN就会出现长期依赖问题------早期的重要信息在层层传递中已经被稀释得面目全非。


二、Attention机制:让每个词都"看到"全文

2015年,Bahdanau等人提出了Attention机制。这个想法朴素却致命地有效:

翻译的时候,不要只盯着上一个词,而是去看整个句子。

具体怎么做?拿英译中举例:

复制代码
输入: "The animal didn't cross the street because it was too tired"
输出: "这种动物没有穿过街道,因为它太累了"

这句话里,"it"到底指什么? 是"street"还是"animal"?

人类读到这个句子会自然地回看,找到"animal",因为"动物"才可能"太累"。Attention机制就是在做这件事------它让模型在翻译"it"的时候,加权地看向"animal"和"street",最终给"animal"更高的权重。

Attention的核心公式:

复制代码
Attention(Q, K, V) = softmax(QK^T / √d_k) × V

别被公式吓到。拆开来看:

  • Q(Query):我当前要翻译的词,"it"在问"谁是it?"
  • K(Key):所有词都在喊"我是谁谁谁",每个词都有一个Key
  • V(Value):词的实际内容

Q和K做点积,得到相似度分数;除以√d_k是为了防止点积过大导致梯度消失;softmax归一化后得到权重;最后用权重对V做加权求和。

翻译成大白话就是:用我(Q)的问题,去和所有人(K)的回答做匹配,找到最相关的几个,然后取他们的值(V)。


三、Self-Attention:自己看自己

真正的革命来自Self-Attention。这个概念出现在2017年的经典论文《Attention is All You Need》中。

它和普通Attention的区别在于:

  • 普通Attention:源序列和目标序列之间的交互(翻译场景)
  • Self-Attention:序列内部自己玩,自己看自己

还是翻译"The animal didn't cross the street"这句话。当处理到"didn't"这个词的时候,Self-Attention让它能够同时"看到":

  • "The animal"(主语是谁)
  • "cross the street"(在做什么)
  • "tired"(为什么没做)

这就是Transformer的核心能力------并行看到全序列,不像RNN必须一个个词顺序处理。


四、Multi-Head Attention:多角度理解

一个Attention头只能学到一种"看问题的方式"。Multi-Head就是同时用多个脑袋从不同角度分析

论文中用了8个head。每个head有自己独立的W_Q、W_K、W_V权重矩阵。你可以理解为:

  • Head 1:关注语法结构------主谓宾在哪里
  • Head 2:关注指代关系------谁指向谁
  • Head 3:关注语义相似------哪些词意思相近
  • Head 4:关注位置关系------谁在谁旁边
  • ......

最后把8个head的输出拼接起来,再做一个线性变换。

复制代码
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O

这样做的好处是什么?模型可以从多个子空间同时学习不同类型的依赖关系。 研究表明,不同的head确实会学到不同的模式------有的专门处理语法,有的处理语义,有的处理位置。


五、Positional Encoding:给模型一双"耳朵"

Attention机制本质上是无序的------它对输入序列的顺序是"盲"的。

"The cat sat on the mat" 和 "The mat sat on the cat",用Attention来处理,产生的表示可能几乎一样。

但语言是有顺序的。"我打你"和"你打我"意思完全相反。

所以需要Positional Encoding,给每个位置一个独特的"门牌号"。

论文用的公式是:

复制代码
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

用正弦余弦交替的原因:每个位置的编码是唯一的,且可以用线性变换相互转换------这让模型能够学习到相对位置关系(比如"i在j的左边3步")。

后来也有很多变体,比如BERT用的学习式位置编码,RoPE用的旋转编码等,但核心思想都是把位置信息注入到表示中


六、编码器与解码器

完整的Transformer是编码器-解码器架构

复制代码
输入 → [编码器] → 上下文向量 → [解码器] → 输出

编码器(Encoder)

  • 6层相同结构堆叠
  • 每层:Self-Attention + Feed Forward
  • 每个子层周围有残差连接,然后做LayerNorm

解码器(Decoder)

  • 也是6层
  • 每层:Masked Self-Attention + Encoder-Decoder Attention + Feed Forward
  • "Masked"的意思是:预测第N个词的时候,只能看到第1到第N-1个词,不能偷看后面的内容------这叫因果掩码(Causal Mask)
  • Encoder-Decoder Attention层:Q来自解码器,K和V来自编码器输出------这是翻译过程中"对照原文"的关键步骤

七、Feed Forward Network:非线性变换

每个编码器/解码器层里,除了Attention,还有一个全连接前馈网络:

复制代码
FFN(x) = max(0, xW_1 + b_1)W_2 + b_2

这是一个两层MLP,第一层展开维度是2048(4倍隐藏层大小),用ReLU激活;第二层映射回原始维度。

Attention负责**"看全局",FFN负责"消化和提炼"**。两者的分工很清晰。


八、LayerNorm与残差连接

每个子层都有残差连接:

复制代码
output = LayerNorm(x + Sublayer(x))

残差连接让梯度可以直接流过,缓解深层网络的梯度消失问题。LayerNorm则是对每个样本做均值方差归一化,让训练更稳定。


九、数字能说明一些问题

Transformer的关键参数(以base版本为例):

组件 数值
模型维度 d_model 512
Attention头数 h 8
每个头的维度 d_k 64
FFN隐藏维度 2048
编码器/解码器层数 6
注意力参数量 ~4 × d_model² = ~1M

原始Transformer在WMT 2014英德翻译任务上达到了28.4 BLEU(当时SOTA),训练成本在当时约为25,000美元/次。


十、为什么Transformer这么重要

回顾一下它的核心贡献:

  1. 并行化:摆脱了RNN的顺序依赖,训练速度大幅提升
  2. 全局视野:任意两个位置之间可以直接交互,路径长度O(1)
  3. 可扩展性:堆更多的层、更大的维度、更宽的head,都能work
  4. 通用性:从NLP出发,现在已经扩展到CV、语音、代码、多模态......

BERT用编码器做预训练,GPT用解码器做自回归生成。ViT把图像切成patch当作token。Whisper用Transformer做语音识别。AlphaFold2用Transformer预测蛋白质结构。

Transformer这篇论文,引用量已经超过10万次。《Attention is All You Need》几乎以一己之力重塑了整个深度学习领域。


如果你想进一步深入,可以关注这几个方向:

  • Flash Attention:IO-aware的高效注意力实现,让长上下文成为可能
  • RoPE / ALiBi:位置编码的改进,解决外推问题
  • Grouped Query Attention:Llama、Mistral等模型采用的注意力变体
  • Sparse Attention:降低二次复杂度的一些尝试

本文参考资料:《Attention is All You Need》(Vaswani et al., 2017)及后续相关研究。


📢 关注作者,第一时间获取更新。本专栏持续更新中,下一篇:《RNN与LSTM:记忆的救赎》。

有任何疑问欢迎留言讨论。

相关推荐
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第八篇-Python 综合实战|完整大模型调用脚本,8 天成果落地
人工智能·python·ai编程·大模型开发
若尘7972 小时前
【 AI 工作流】
人工智能
码农小白AI2 小时前
AI审核驱动动态预警:IACheck如何重塑环境数据一致性监测与质量管控新模式
大数据·人工智能
Warren2Lynch2 小时前
为什么选择 Flipbook 与 OpenDocs?用户体验分享
人工智能·架构·ux
iNeuOS工业互联网2 小时前
开源:iNeuOS_Doctor,一款基于人工智能在医疗领域的病情咨询及医学影像分析平台,例如CT\X光片\病理成像\诊断病历等
人工智能·开源·制造·智能制造·工业互联网·ineuos
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-04-02
大数据·人工智能·经验分享·搜索引擎
龙文浩_2 小时前
AI深度学习中的张量的类型转换
人工智能·深度学习
hhy_smile2 小时前
对于AI奉承行为的思考
人工智能
gis分享者2 小时前
什么是 AI Agent 中的 Skills?它有什么用?
人工智能·ai·agent·作用·概念·实现原理·skills