
简述
Transformer是现今所有LLM的底层架构,作为序列模型彻底抛弃了RNN的循环结构,完全依赖注意力机制。
Transformer原始架构由多层编码器和多层解码器两个部分组成,其内部和连接引入了三种多头注意力来保证序列之间的语义性,又有逐位前馈神经网络来保证每个词语在每个序列位置中的特征。在外部引入了位置编码让模型感知语序,利用残差连接和层归一化保证模型梯度。
此外,单独的编码器代表模型有bert,解码器则是GPT。
相比RNN的串行,Transformer支持全量并行计算,极大提升了训练效率;相比CNN,它拥有全局感受野。这些特点保证了在堆参数的数量和质量下保证模型不过拟合。
不过,自注意力机制需要计算序列中每一个词与所有词的相关性,计算复杂度的平方级增长(O(n2)O(n2) 复杂度)。同时,过度依赖空间位置和数据量,带来极高的训练门槛和训练成本,同时有上下文窗口限制,内存占用随序列长度线性增长。
未来:
“Mamba 是 2023 年提出的一个挑战 Transformer 的新架构,它的核心是状态空间模型(SSM)。
和 Transformer 每次都要看全部历史不同,Mamba 把所有历史信息压缩成一个固定大小的‘内部状态’,每次只更新这个状态。这让它的计算复杂度和内存占用从平方级降到了线性,在处理超长序列时,推理速度能快好几倍,显存占用也低得多。
当然,它也有短板,比如早期的 Mamba 在复杂推理上比 Transformer 稍弱。不过最新的 Mamba-3 已经在性能和效率上有了很大提升。总的来说,Mamba 在效率上是 Transformer 的劲敌,尤其适合长序列和 AI Agent 这类场景,未来两者很可能会走向融合。
注意力机制
处理信息时,不是平均看待所有输入,而是计算‘哪些输入更重要’,再按照重要程度汇总信息。
- 自注意力(Self-Attention):这是最核心的变体。Q、K、V都来自同一个输入。作用:让句子中的每个词都能“看一眼”句子里的其他词,从而理解上下文。例如,模型看到“苹果”时,会通过自注意力发现“手机”或“水果”来辅助判断语义。
在当今最主流的Transformer架构中,注意力机制通过三个向量实现:
- Q(Query,查询):你想找什么?(比如你在搜索的关键词)。
- K(Key,键):我有什么特征?(比如网页的标题和索引)。
- V(Value,值):我的实际内容是什么?(比如网页的正文)。
三种多头注意力层
- 掩码多头注意力(Masked Multi-Head Attention):核心物理意义:单向可见性(因果律)。掩码多头注意力是并行训练时代的“时间作弊器”—它通过给未来位置打上 −∞的标签,强行在数学上创造“因果错觉”,让模型在同时看到所有词的情况下,依然只能学到顺序依赖,从而保证了生成内容的时间逻辑自洽。
- 交叉多头注意力(Cross Multi-Head Attention):用一个序列的“需求”(Q),去另一个序列的“知识库”(K/V)中检索并提取信息。作用:用于机器翻译或图文生成,让文本去“检索”图片中的重点区域。自注意力是“同一份简历的自我审视”,而交叉多头注意力是“面试官(Q)拿着岗位要求,去翻阅应聘者的简历(K/V),并且 8 个面试官(多头)分别从学历、经验、性格等不同维度给简历打分,最终汇总决定录用哪部分信息
- 多头注意力(Multi-Head Attention):并行运行多组注意力机制(比如8组或32组)。将高维语义空间“切分”成多个子空间,在每个子空间里独立做注意力。这强制每个头只能在特定的 64 维“语义切片”中寻找相关性。因为维度降低了,每个头不得不“专注”于提取某一种特定的关系模式
Q、K、V & softmax
一个词,通过三个不同的线性层产生的QKV:
假设输入句子是 “猫追老鼠”,模型正在生成下一个字:
- 当前生成位置产生 Q(猫的追击意图)。
- Q 去和 “猫”、“追”、“老鼠” 各自的 K 做点积。
- 和“追”的 K 得分最高(动作匹配),和“老鼠”的 K 得分中等(宾语候选),和“猫”的 K 得分最低(自己不能追自己)。
- 原始分数传入 Softmax,被放大差距,变成权重:80% 给“追”,15% 给“老鼠”,5% 给“猫”。
- 用这组权重去加权求和对应的 V(真实语义内容)。
- 最终输出向量里包含了 80% 的“追”的语义和 15% 的“老鼠”的语义,模型据此顺利预测下一个词是 “到” 或 “跑”。
计算过程(以“缩放点积注意力”为例):
- 打分:计算每个 Q 和所有 K 的匹配度(点积)。
- 缩放:为了防止分数过大导致梯度消失,除以一个缩放因子。
- 归一化:通过 Softmax 函数将分数转换为概率(权重总和为1)。
- 加权求和:用这些权重去乘以对应的 V,得到最终输出。
缩放因子的物理意义 :
你提到的公式里有除以 dk,这是另一个关乎“物理存亡”的细节。
- 当维度 dk很大时(比如 512 或 4096),Q 和 K 的点积数值会变得非常大(几十甚至上百)。
- 物理后果:巨大的数值会被塞进 Softmax 的指数函数,导致输出极度接近 One-hot(一个接近1,其余接近0)。
- 梯度灾难:此时函数的导数趋近于 0,模型权重几乎无法更新,训练就“僵死”了。
- 缩放物理意义:除以 dk,相当于把方差拉回 1,把分数稳定在 [-3, 3] 的合理区间。这让 Softmax 进入“敏锐但不过激”的状态,既能区分主次,又能保证每个 V 都获得微弱的“活着”的梯度。
如果说 Q/K 决定了“谁更配”,那么 Softmax 就是决定“怎么分钱”。
物理作用:将 Q 和 K 算出的原始分数(可能是有正有负、尺度不定的数),转换为一个总和为 1 的概率分布。
它的核心物理特性有两层:
- (1)竞争性(Winner-takes-most): 它通过指数运算 e分数e分数,把分数间的微小差距急剧放大。假设两个原始分数是 2 和 4,经过 Softmax,权重可能变成 0.12 和 0.88。这强迫模型“做取舍”——即使所有词都有用,也必须把绝大部分“注意力预算”集中到最相关的那个词上。这就模拟了人类大脑无法多线程深度处理信息的生理限制。
- (2)可微的软选择(非 Argmax): 为什么不直接用 Argmax(只取最高分,设为1,其余为0)?因为 Argmax 不可导,没法反向传播训练。Softmax 虽然放大了差距,但依然保留了微弱的梯度——哪怕某个词的权重只有 0.001,它在反向传播时依然能收到信号,告诉模型“下次稍微多给我点分”,这就是深度学习能“学会”注意力的根本。
逐层前馈网络(Position-wise FNN)
关键物理动作——“逐位置(Position-wise)”:
- 含义:序列中每个位置的向量 xx(比如“猫”这个词的向量),独立地、互不干扰地经过完全相同的 W1,W2*W*1,*W*2 权重矩阵。
- 对比:注意力机制是“位置之间混合信息”(词看词);而 FFN 是“位置内部变换特征”(词想词)。
- 共享权重:无论序列长度是 10 还是 10000,所有位置都共用同一组 W1,W2W1,W2。这保证了模型能处理任意长度的输入,且极大地减少了过拟合风险。
内部结构:“升维-激活-降维”(计算放大器)
FFN 是一个两层的全连接网络,中间夹着一个非线性激活函数(ReLU/GELU)。它的隐藏层维度 dffd**ff 通常是模型维度 dmodeldmode**l 的 4 倍(例如 dmodel=4096dmode**l=4096,则 dff=16384d**ff=16384)。
物理动作分解:
- 第一层升维(xW1*x**W*1):将 4096 维映射到 16384 维。
- 物理意义:高维空间拥有更强的线性可分性。这相当于给模型发了一张“超大草稿纸”,允许它将注意力提取到的有限特征,在 4 倍大的空间里进行“展开”和“分解”,细化出极其复杂的子特征(比如同时区分时态、单复数、情感强度)。
- 非线性激活(ReLU/GELU):将负值置零或压缩(非线形映射)。
- 物理意义(极其重要):多头注意力无论怎么算,归根结底是 线性加权求和(QKTVQKT**V)。两个线性变换堆叠依然是线性变换。激活函数是全网唯一的“非线性来源”之一,它让模型具备了拟合任意复杂函数的能力——没有它,100层 Transformer 等价于一个线性回归。
- 第二层降维(ReLU(⋅)W2*R*e*LU*(⋅)*W*2):将 16384 维压缩回 4096 维。
- 物理意义:提取高维空间中最重要的“激活模式”,将其蒸馏成“精华”,输出给下一层。这保证了模型维度恒定,便于残差连接。
近年来(特别是 2022-2024 年)的可解释性研究(如 Anthropic 的 Toy Models of Superposition)揭示了一个反直觉的真相:
- 注意力(Attention)负责“路由(Routing)”:它只决定“当前词应该去查资料库里的哪个位置”。
- FFN 负责“检索与回填(Retrieval & Copy)”:FFN 的第一层(W1W1)存储了成千上万个“模式探测器(Pattern Detectors)”,第二层(W2W2)存储了对应的“结果输出器(Output Responders)”
现在的 GPT-4、LLaMA、DeepSeek 几乎不再使用原始 ReLU FFN,而是采用更先进的结构:
- SwiGLU(门控线性单元变体):将 xW1x**W1 拆分成两部分,一部分经过激活(SiLU/Swish),另一部分不做激活,两者逐元素相乘(GLU(x)=激活(xW1)⊙(xW3)GLU(x)=激活(x**W1)⊙(x**W3))。
- 物理优势:引入了“门控机制(Gating)”,让模型学会动态开关特定的神经元。只有当前语境需要时,才激活对应的知识通道,表达能力更强。
- 代价:参数比原始 FFN 多了 1/3(因为多了一个 W3W3 矩阵)。
- MoE(混合专家,Mixture of Experts):将单个巨大的 FFN 替换成几十上百个“专家 FFN”(如 8 个或 256 个)。推理时,路由器(Router)只挑选最相关的 1-2 个专家进行计算。
- 物理意义:将“全才”变为“专才”团队。参数总量增加(存储知识更多),但计算量不变(仅激活部分专家)。这也是 GPT-4 和 DeepSeek-V3 能做到万亿参数但推理速度尚可的核心机密。
回到完整旅程中,FFN 在每一层的位置极其固定:
输入 → 归一化 → 注意力(信息交换) → 残差相加 → 归一化 → FFN(独立思考) → 残差相加 → 输出给下一层
这形成了一个鲜明的职责分工:
- 注意力层:负责“民主”,把大家的智慧汇集到每个词身上。
- FFN 层:负责“集中”,每个词根据汇集到的集体智慧,独立进行复杂的非线性变换和知识检索。
残差连接&层归一化
- 残差:解决了退化问题。允许梯度直接回传(恒等映射)。但这是有代价的——它限制了表达能力吗?不,它允许网络偏向恒等映射。
- LayerNorm:稳定分布。但为何是LayerNorm而非BatchNorm?独立性于批次大小,适用于序列(可变长度)。
- 交互作用(关键点):它们共同创建了一个平滑的优化地形。残差连接提供了“零映射”路径(如果F(x)为0,则x无损通过),而LayerNorm确保进入F(x)的输入不会爆炸,从而使F(x)更容易学习微小的调整(增量更新)。
- 新焦点:它们如何影响信号传播。在初始化时,残差块表现为近似恒等映射。LayerNorm将方差缩放回1,防止深层中的方差爆炸/消失。这称为“动态平衡”。