Transformer 架构核心组件原理
编码器-解码器、自注意力、位置编码等核心组件详解
原题:请详细介绍 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下并行,推理时通常自回归生成。
口语版讲法(约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等选择,各自边界不同。
最后分清现代架构:BERT是encoder-only,适合理解和表征;GPT是decoder-only,只用因果self-attention,没有原始seq2seq decoder的cross-attention;T5保留encoder-decoder。现代LLM还常改用Pre-Norm、RMSNorm和RoPE。面试时先准确回答原始结构,再补充这些演进,逻辑最清楚。
复杂度上,标准全局self-attention的主要项随序列长度平方增长,FFN主要随序列长度线性增长并受隐藏维影响。Transformer比RNN更容易在训练时并行处理位置,但这不意味着长序列成本更低。padding mask、causal mask和cross-attention mask也要按各自语义组合,不能用一个“掩码”笼统带过。工程实现还需考虑KV cache、算子融合和并行切分。
输出层通常把decoder隐藏状态投影到词表logit,输入embedding与输出权重可以共享,但并非所有实现都必须共享。训练还要用目标padding mask排除无效loss。讲整体架构时把表示层、堆叠块和任务头分开,才能避免把某个现代模型的具体选择误当成Transformer定义。
关键一句:原始Transformer使用Post-LN,而现代decoder-only常见Pre-Norm或RMSNorm。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设我们要做一个电商客服机器人,用户发来一句“我的订单怎么还没到?”,Transformer模型是怎么编码这句话并理解每个词之间的关系的?你给我讲讲整体流程。
- 问法 2 · 层层追问
Transformer的核心是自注意力,那它怎么处理序列顺序?……位置编码有哪些实现方式?……那编码器和解码器的注意力有什么不同?
- 问法 3 · 直球架构
请详细讲解Transformer的整体架构,包括编码器-解码器结构、自注意力机制、前馈网络和位置编码的工作原理。