Transformer 简介

Transformer 简介 Transformer 是 2017 年《Attention Is All You Need》论文提出的完全基于自注意力机制的序列建模架构彻底摒弃了 RNN 类的循环结构与 CNN 的局部卷积结构解决了传统序列模型并行能力差、长距离依赖建模弱的核心痛点现已成为 NLP、CV、语音、多模态等几乎所有 AI 领域的基础底座。一、核心设计初衷传统序列建模方案存在致命缺陷RNN/LSTM/GRU串行计算必须按顺序处理 token无法并行训练效率极低长距离 token 之间的依赖路径过长极易出现梯度消失难以建模全局语义。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。原文采用正余弦固定位置编码公式如下位置编码的偶数维度2iPE(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​)位置编码的奇数维度2i1PE(pos,2i1)cos⁡(pos100002i/d∗∗∗∗model)\text{PE}{(\text{pos}, 2i1)} \cos\left(\frac{\text{pos}}{10000^{2i/d**_**{\text{model}}}}\right)PE(pos,2i1)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_kd_vd_model/hh 为注意力头数。核心计算公式Attention(Q,K,V)softmax(dkQKT)V Attention(Q,K,V)softmax(dkQKT)VAttention(Q,K,V)softmax(dkQKT)V计算步骤拆解相似度计算QKT 得到维度为[batch, seq_len_q, seq_len_k]的相似度矩阵每个元素代表第 i 个 query token 与第 j 个 key token 的语义关联度。缩放修正除以dk解决 d_k 过大时内积值过高、softmax 后梯度消失的问题内积过大会让 softmax 输出接近 one-hot 分布梯度趋近于 0。掩码屏蔽可选将不需要关注的位置的得分设为−∞softmax 后权重趋近于 0实现信息屏蔽如 Decoder 的因果掩码。权重归一化对相似度矩阵的每一行做 softmax将得分转为 0-1 之间、和为 1 的权重分布。加权求和权重矩阵与 V 相乘得到融合全局上下文的注意力输出。2. 自注意力Self-Attention当 Q、K、V全部来自同一个输入序列时即为自注意力。核心作用让序列中的每个 token都能与序列中所有其他 token 计算关联度建模序列内部的全局依赖关系。直观例子句子 “我把猫抱起来它很乖” 中自注意力可以让 “它” 直接和 “猫” 建立强关联无论两个 token 间隔多远。3. 多头注意力Multi-Head Attention, MHA将 Q、K、V 通过线性投影拆分为 h 个并行的头每个头独立执行缩放点积注意力再将所有头的输出拼接最后通过线性投影得到最终结果。核心公式MultiHead(Q,K,V)headiConcat(head1,head2,...,headh)WoAttention(QWqi,KWki,VWvi) MultiHead(Q,K,V)headiConcat(head1,head2,...,headh)WoAttention(QWqi,KWki,VWvi)MultiHead(Q,K,V)headiConcat(head1,head2,...,headh)WoAttention(QWqi,KWki,VWvi)原文默认配置h8d_model512因此每个头的维度 d_k512/864。设计目的单头注意力只能捕捉单一类型的依赖关系多头注意力可让不同的头学习到不同维度的语义关联如句法依赖、指代关系、局部短语关联、长距离语义关联极大提升模型的特征表达能力。五、编码器Encoder完整结构每层 Encoder 包含 2 个核心子层每个子层均遵循「层归一化→子层计算→残差连接」的 Pre-LN 结构训练更稳定为当前主流方案结构如下子层 1多头自注意力Q/K/V 全部来自上一层 Encoder 的输出无掩码约束可看到输入序列的所有位置建模全局上下文输出后执行残差连接 层归一化子层 2前馈神经网络FFN对每个 token 的特征独立进行非线性变换不改变序列长度公式如下FFN(x)max(0,xW1b1)W2b2 FFN(x)max(0,xW1b1)W2b2FFN(x)max(0,xW1b1)W2b2原文中FFN 的中间层维度为 2048是 d_model 的 4 倍输出后执行残差连接 层归一化6 层 Encoder 堆叠完成后输出维度为[batch, seq_len_input, d_model]的上下文编码矩阵包含输入序列的完整全局语义将送入 Decoder 的交叉注意力层。六、解码器Decoder完整结构每层 Decoder 包含 3 个核心子层同样遵循 Pre-LN 残差连接的结构核心是适配自回归生成的逻辑防止未来信息泄露。子层 1带掩码的多头自注意力Masked MHAQ/K/V 全部来自上一层 Decoder 的输出核心约束加入因果掩码Causal Mask让每个 token 只能关注自身和之前的位置完全屏蔽未来的 token生成第 i 个 token 时i1 及以后的 token 尚未生成必须防止信息泄露输出后执行残差连接 层归一化子层 2交叉注意力Encoder-Decoder Attention核心设计Q 来自上一个掩码注意力子层的输出K 和 V 全部来自 Encoder 的最终输出核心作用让 Decoder 在生成每个 token 时动态关注输入序列中语义相关的部分如机器翻译中生成英文单词时精准匹配对应的中文原词输出后执行残差连接 层归一化子层 3前馈神经网络FFN与 Encoder 中的 FFN 完全一致对每个 token 独立做非线性变换输出后执行残差连接 层归一化。6 层 Decoder 堆叠完成后输出维度为[batch, seq_len_output, d_model]的生成特征矩阵。七、输出层与生成逻辑线性映射Decoder 的输出特征通过线性层将 d_model 维度映射为词表大小的维度概率归一化通过 Softmax 函数得到词表中每个 token 的生成概率自回归解码通过贪心搜索 / 束搜索等策略选择概率最高的 token 作为当前步的输出将其加入 Decoder 的输入序列重复上述流程直到生成结束符EOS完成整个序列的生成。八、完整前向传播流程以机器翻译为例输入中文「我爱中国」目标输出英文「I love China」输入预处理将「我爱中国」分词为 token 并转为 id经过 Token Embedding 位置编码得到输入矩阵X: [1,4,512]Encoder 编码X 送入 6 层 Encoder逐层完成多头自注意力→残差 LN→FFN→残差 LN最终输出编码矩阵Enc_out: [1,4,512]Decoder 自回归生成初始输入为起始符sos经过 Embedding 位置编码送入 Decoder经过 6 层 Decoder 的掩码自注意力→交叉注意力→FFN输出特征映射为词表概率选择最高概率 token「I」将「I」加入 Decoder 输入变为sos I重复解码流程依次生成「love」「China」生成结束符EOS解码终止得到最终翻译结果九、核心优势与主流变体核心设计优势全并行计算Encoder 对输入序列的所有 token 可同时处理无需 RNN 的串行计算训练效率实现数量级提升长距离依赖建模极强任意两个 token 的依赖路径恒为 1彻底解决 RNN 长距离梯度消失的问题超强可扩展性可通过堆叠层数、增加维度、扩充头数灵活提升模型容量当前千亿 / 万亿参数大模型均基于 Transformer 架构扩展高适配性可通过调整架构适配不同任务无需修改核心注意力机制主流变体Encoder-only代表模型 BERT仅用编码器擅长文本分类、命名实体识别等理解类任务Decoder-only代表模型 GPT 系列、LLaMA仅用解码器擅长文本生成、对话等生成类任务也是当前大语言模型的主流架构Encoder-Decoder代表模型 T5、BART完整的编解码架构擅长机器翻译、文本摘要等 seq2seq 任务