完整题目
请详细介绍 Transformer 模型的整体架构,包括其编码器-解码器结构、自注意力机制、前馈网络、位置编码等核心组件的工作原理。
本文目录
原始Transformer:encoder-decoder
输入token embedding与位置编码相加后进入N层encoder。每层包含multi-head self-attention和逐位置FFN;每个子层外有残差、dropout和LayerNorm。原始论文使用Post-LN:
LayerNorm(x + Sublayer(x))
不是现代Pre-LN的 x + Sublayer(LN(x))。
Decoder每层依次包含masked self-attention、对encoder memory的cross-attention和FFN。因果mask阻止目标位置看到未来token;cross-attention以decoder状态为Q、encoder输出为K/V。
核心计算
Attention(Q,K,V)=softmax(QK^T/sqrt(d_k)+mask)V。多头把Q/K/V投影到多个子空间,并行计算后拼接,再经线性输出投影。缩放用于控制点积幅度,输出投影仍是线性混合。
FFN对每个位置使用同一组两层MLP,原论文为ReLU,现代模型常用GELU、SwiGLU等变体。位置编码用于打破纯attention对顺序的置换对称;原论文使用正弦余弦编码。它可计算到训练长度之外,但“可计算”不保证模型可靠外推。
现代架构要分开说
BERT是encoder-only;GPT是decoder-only,没有原始seq2seq decoder中的cross-attention;T5属于encoder-decoder。现代LLM常采用Pre-Norm、RMSNorm、RoPE和不同FFN,不能倒写成原始Transformer定义。训练时decoder各位置可在因果mask下并行,推理时通常自回归生成。
图解
继续追问 · 3 个问题
- 为什么Transformer比RNN更适合长序列?计算复杂度是多少?
- 多头注意力中"多头"的设计动机是什么?不同头学到什么不同特征?
- 实际应用中Encoder-only(如BERT)、Decoder-only(如GPT)、Encoder-Decoder(如T5)各适合什么场景?
换一种问法,检查是否真正理解
场景切入
假设我们要做一个电商客服机器人,用户发来一句“我的订单怎么还没到?”,Transformer模型是怎么编码这句话并理解每个词之间的关系的?你给我讲讲整体流程。
层层追问
Transformer的核心是自注意力,那它怎么处理序列顺序?……位置编码有哪些实现方式?……那编码器和解码器的注意力有什么不同?
直球架构
请详细讲解Transformer的整体架构,包括编码器-解码器结构、自注意力机制、前馈网络和位置编码的工作原理。
练习口述回答 · 约4分钟
- 从原始encoder-decoder总图开始
- 拆解attention与多头
- 说明decoder两类attention
- 解释FFN、残差、归一化与位置编码
- 分开现代三类架构
我先讲原始论文的encoder-decoder,而不是一上来把GPT混进表格。源token embedding和位置编码相加后进入多层encoder,encoder输出是一组源序列表示,也叫memory。目标侧decoder读取已经生成的目标前缀,同时通过cross-attention读取这组memory,最后经线性层和softmax预测下一个token。
每个encoder层有两个核心子层:multi-head self-attention和逐位置前馈网络。Self-attention先从输入线性投影出Q、K、V,计算QK转置除以根号d_k,加mask后softmax,再对V加权求和。缩放用于控制点积随维度增长的幅值,避免softmax过早饱和。
多头attention把Q、K、V投影到多个表示子空间,各头并行计算,再拼接并经过输出线性投影。不同头有机会形成不同关系,但不能预设每个头一定对应某种人类可解释语义。输出投影做的是跨头线性混合,本身不是非线性层。
Decoder层比encoder多一类attention。第一类是目标侧masked self-attention,用因果mask挡住未来位置;第二类是cross-attention,Q来自decoder当前状态,K和V来自encoder memory。之后同样接逐位置FFN。训练时目标序列已知,可以在causal mask下并行算所有位置;推理时因为下一个token依赖已生成前缀,通常逐token进行。
FFN对每个token位置独立应用同一组两层MLP。原始论文使用ReLU,现代模型可能换GELU或SwiGLU。各子层外还有残差、dropout和LayerNorm。这里要准确:原始Transformer是Post-LN,形式是LayerNorm作用在x加Sublayer x之后;x加Sublayer作用在LayerNorm x上,是后来常见的Pre-LN,不能倒过来介绍。
Attention本身若不加入位置信息,对输入顺序缺少区分,所以原始模型加入正弦余弦位置编码。它的公式可以计算到训练长度以外,但这只说明数值可生成,不代表模型在未见长度上一定可靠外推。现代模型还有learned position、RoPE、ALiBi等选择,各自边界不同。