Transformer 简介

Transformer 是 2017 年《Attention Is All You Need》论文提出的完全基于自注意力机制的序列建模架构,彻底摒弃了 RNN 类的循环结构与 CNN 的局部卷积结构,解决了传统序列模型并行能力差、长距离依赖建模弱的核心痛点,现已成为 NLP、CV、语音、多模态等几乎所有 AI 领域的基础底座。


一、核心设计初衷

传统序列建模方案存在致命缺陷:

  1. RNN/LSTM/GRU:串行计算,必须按顺序处理 token,无法并行训练,效率极低;长距离 token 之间的依赖路径过长,极易出现梯度消失,难以建模全局语义。
  2. CNN:虽支持并行,但感受野有限,需多层堆叠才能覆盖长距离序列,全局依赖建模能力弱。

Transformer 的核心突破:用自注意力机制一步到位建模序列中任意两个 token 的关联,实现全序列并行计算,同时让任意位置 token 的依赖路径长度恒为 1,彻底解决长距离建模难题。


二、整体架构总览

标准 Transformer 采用Encoder-Decoder(编码器 - 解码器) 架构,核心结构如下:

  • 主体:6 层 Encoder 堆叠 + 6 层 Decoder 堆叠

  • 基础单元:每层 Encoder/Decoder 均由注意力子层 + 前馈网络子层 构成,搭配残差连接 + 层归一化保证深度网络的训练稳定性

  • 分工:

    • Encoder:对输入序列进行编码,输出包含全局上下文语义的特征表示
    • Decoder:基于 Encoder 的编码结果,自回归地逐 token 生成输出序列

三、输入层:词嵌入 + 位置编码

Transformer 无循环 / 卷积的时序归纳偏置,无法感知 token 的位置顺序,而序列顺序是语义的核心,因此输入层需同时注入语义信息与位置信息。

1. Token Embedding(词嵌入)

将离散的 token(词 / 字 / 子词)映射为固定维度的稠密向量,维度为d_model(原文默认 512 维)。

  • 核心作用:把不可计算的离散符号转为可计算的向量,同时编码 token 的基础语义
  • 优化设计:Embedding 层权重与最终输出层的线性层权重共享,大幅减少参数量,同时提升泛化能力

2. Positional Encoding(位置编码)

为序列中每个位置注入唯一的位置信息,让模型能区分不同位置的 token。原文采用正余弦固定位置编码,公式如下:

位置编码的偶数维度(2i): PE(pos,2i)=sin⁡(pos100002i/d∗∗∗∗model)\text{PE}{(\text{pos}, 2i)} = \sin\left(\frac{\text{pos}}{10000^{2i/d**_**{\text{model}}}}\right)PE(pos,2i)=sin(100002i/d∗∗∗∗modelpos)

位置编码的奇数维度(2i+1): PE(pos,2i+1)=cos⁡(pos100002i/d∗∗∗∗model)\text{PE}{(\text{pos}, 2i+1)} = \cos\left(\frac{\text{pos}}{10000^{2i/d**_**{\text{model}}}}\right)PE(pos,2i+1)=cos(100002i/d∗∗∗∗modelpos)

  • 符号说明:pos为 token 的位置索引,i为向量的维度索引
  • 核心优势:可泛化到训练时未见过的更长序列,同时天然建模 token 之间的相对位置关系

最终输入向量 = Token Embedding + Positional Encoding,完成后送入 Encoder/Decoder。


四、核心基石:注意力机制

注意力机制的本质:为目标 token 计算它与所有关联 token 的相似度权重,再用权重对所有 token 的特征加权求和,得到融合全局上下文的目标特征

1. 基础单元:缩放点积注意力

这是 Transformer 注意力的最小计算单元,输入为三个矩阵:

  • Q (Query):查询向量,代表「当前 token 想要找什么信息」
  • K (Key):键向量,代表「每个 token 拥有什么信息」
  • V (Value):值向量,代表「每个 token 实际的语义内容」

维度约定:Q: [batch, seq_len_q, d_k]K: [batch, seq_len_k, d_k]V: [batch, seq_len_k, d_v],原文中d_k=d_v=d_model/h(h 为注意力头数)。

核心计算公式:

Attention(Q,K,V)=softmax(dkQKT)V Attention(Q,K,V)=softmax(dkQKT)V Attention(Q,K,V)=softmax(dkQKT)V

计算步骤拆解:

  1. 相似度计算 :QKT 得到维度为[batch, seq_len_q, seq_len_k]的相似度矩阵,每个元素代表第 i 个 query token 与第 j 个 key token 的语义关联度。
  2. 缩放修正:除以dk,解决 d_k 过大时内积值过高、softmax 后梯度消失的问题(内积过大会让 softmax 输出接近 one-hot 分布,梯度趋近于 0)。
  3. 掩码屏蔽(可选):将不需要关注的位置的得分设为−∞,softmax 后权重趋近于 0,实现信息屏蔽(如 Decoder 的因果掩码)。
  4. 权重归一化:对相似度矩阵的每一行做 softmax,将得分转为 0-1 之间、和为 1 的权重分布。
  5. 加权求和:权重矩阵与 V 相乘,得到融合全局上下文的注意力输出。

2. 自注意力(Self-Attention)

当 Q、K、V全部来自同一个输入序列时,即为自注意力。

  • 核心作用:让序列中的每个 token,都能与序列中所有其他 token 计算关联度,建模序列内部的全局依赖关系。
  • 直观例子:句子 "我把猫抱起来,它很乖" 中,自注意力可以让 "它" 直接和 "猫" 建立强关联,无论两个 token 间隔多远。

3. 多头注意力(Multi-Head Attention, MHA)

将 Q、K、V 通过线性投影拆分为 h 个并行的头,每个头独立执行缩放点积注意力,再将所有头的输出拼接,最后通过线性投影得到最终结果。

核心公式:

MultiHead(Q,K,V)headi=Concat(head1,head2,...,headh)Wo=Attention(QWqi,KWki,VWvi) MultiHead(Q,K,V)headi=Concat(head1,head2,...,headh)Wo=Attention(QWqi,KWki,VWvi) MultiHead(Q,K,V)headi=Concat(head1,head2,...,headh)Wo=Attention(QWqi,KWki,VWvi)

原文默认配置:h=8,d_model=512,因此每个头的维度 d_k=512/8=64。

  • 设计目的:单头注意力只能捕捉单一类型的依赖关系,多头注意力可让不同的头学习到不同维度的语义关联(如句法依赖、指代关系、局部短语关联、长距离语义关联),极大提升模型的特征表达能力。

五、编码器(Encoder)完整结构

每层 Encoder 包含 2 个核心子层,每个子层均遵循 「层归一化→子层计算→残差连接」 的 Pre-LN 结构(训练更稳定,为当前主流方案),结构如下:

子层 1:多头自注意力

  • Q/K/V 全部来自上一层 Encoder 的输出
  • 无掩码约束,可看到输入序列的所有位置,建模全局上下文
  • 输出后执行残差连接 + 层归一化

子层 2:前馈神经网络(FFN)

对每个 token 的特征独立进行非线性变换,不改变序列长度,公式如下:

FFN(x)=max(0,xW1+b1)W2+b2 FFN(x)=max(0,xW1+b1)W2+b2 FFN(x)=max(0,xW1+b1)W2+b2

  • 原文中,FFN 的中间层维度为 2048,是 d_model 的 4 倍
  • 输出后执行残差连接 + 层归一化

6 层 Encoder 堆叠完成后,输出维度为[batch, seq_len_input, d_model]的上下文编码矩阵,包含输入序列的完整全局语义,将送入 Decoder 的交叉注意力层。


六、解码器(Decoder)完整结构

每层 Decoder 包含 3 个核心子层,同样遵循 Pre-LN + 残差连接的结构,核心是适配自回归生成的逻辑,防止未来信息泄露。

子层 1:带掩码的多头自注意力(Masked MHA)

  • Q/K/V 全部来自上一层 Decoder 的输出
  • 核心约束:加入因果掩码(Causal Mask),让每个 token 只能关注自身和之前的位置,完全屏蔽未来的 token(生成第 i 个 token 时,i+1 及以后的 token 尚未生成,必须防止信息泄露)
  • 输出后执行残差连接 + 层归一化

子层 2:交叉注意力(Encoder-Decoder Attention)

  • 核心设计:Q 来自上一个掩码注意力子层的输出,K 和 V 全部来自 Encoder 的最终输出
  • 核心作用:让 Decoder 在生成每个 token 时,动态关注输入序列中语义相关的部分(如机器翻译中,生成英文单词时,精准匹配对应的中文原词)
  • 输出后执行残差连接 + 层归一化

子层 3:前馈神经网络(FFN)

与 Encoder 中的 FFN 完全一致,对每个 token 独立做非线性变换,输出后执行残差连接 + 层归一化。

6 层 Decoder 堆叠完成后,输出维度为[batch, seq_len_output, d_model]的生成特征矩阵。


七、输出层与生成逻辑

  1. 线性映射:Decoder 的输出特征通过线性层,将 d_model 维度映射为词表大小的维度
  2. 概率归一化:通过 Softmax 函数,得到词表中每个 token 的生成概率
  3. 自回归解码:通过贪心搜索 / 束搜索等策略,选择概率最高的 token 作为当前步的输出,将其加入 Decoder 的输入序列,重复上述流程,直到生成结束符<EOS>,完成整个序列的生成。

八、完整前向传播流程(以机器翻译为例)

输入中文:「我爱中国」,目标输出英文:「I love China」

  1. 输入预处理:将「我爱中国」分词为 token 并转为 id,经过 Token Embedding + 位置编码,得到输入矩阵X: [1,4,512]

  2. Encoder 编码:X 送入 6 层 Encoder,逐层完成多头自注意力→残差 + LN→FFN→残差 + LN,最终输出编码矩阵Enc_out: [1,4,512]

  3. Decoder 自回归生成:

    • 初始输入为起始符<sos>,经过 Embedding + 位置编码送入 Decoder
    • 经过 6 层 Decoder 的掩码自注意力→交叉注意力→FFN,输出特征映射为词表概率,选择最高概率 token「I」
    • 将「I」加入 Decoder 输入,变为<sos> I,重复解码流程,依次生成「love」「China」
    • 生成结束符<EOS>,解码终止,得到最终翻译结果

九、核心优势与主流变体

核心设计优势

  1. 全并行计算:Encoder 对输入序列的所有 token 可同时处理,无需 RNN 的串行计算,训练效率实现数量级提升
  2. 长距离依赖建模极强:任意两个 token 的依赖路径恒为 1,彻底解决 RNN 长距离梯度消失的问题
  3. 超强可扩展性:可通过堆叠层数、增加维度、扩充头数灵活提升模型容量,当前千亿 / 万亿参数大模型均基于 Transformer 架构扩展
  4. 高适配性:可通过调整架构适配不同任务,无需修改核心注意力机制

主流变体

  • Encoder-only:代表模型 BERT,仅用编码器,擅长文本分类、命名实体识别等理解类任务
  • Decoder-only:代表模型 GPT 系列、LLaMA,仅用解码器,擅长文本生成、对话等生成类任务,也是当前大语言模型的主流架构
  • Encoder-Decoder:代表模型 T5、BART,完整的编解码架构,擅长机器翻译、文本摘要等 seq2seq 任务
相关推荐
阴阳怪气乌托邦2 小时前
请注意!AI低代码正在干掉传统开发
人工智能·低代码·工作流引擎
KG_LLM图谱增强大模型2 小时前
Palantir官方揭秘AIP:企业级人工智能平台的端到端架构
大数据·人工智能
hughnz2 小时前
Agentic LLM工作流在钻井日报分析中的应用
人工智能·钻井
arvin_xiaoting2 小时前
常驻Agent vs无状态Agent:多渠道AI架构的两条路
人工智能·ai agent·claude code·openclaw
新缸中之脑2 小时前
实战建筑智能体
人工智能
AI攻城狮2 小时前
小白如何选择LLM引擎:从架构视角看懂本地大模型的前台、后端与推理核心
人工智能·云原生·aigc
冴羽2 小时前
OpenClaw 龙虾零成本快速安装教程,不用花钱,无须 API Key
人工智能·aigc
RPA机器人就用八爪鱼2 小时前
RPA+AI赋能数字化办公:告别机械劳作,解锁全场景自动化
人工智能·机器人·自动化·rpa
码路高手2 小时前
Trae Agent中的agent模块
人工智能