# 第 9 章 Transformer

# 本章概括

本章介绍 Transformer 的序列建模框架,重点包括 Seq2seq、Encoder、Decoder、自注意力、Q/K/V、Softmax 权重、多头注意力和训练流程。核心是理解注意力如何让每个 token 动态聚合其他 token 的信息。

# Seq2seq 与 Encoder-Decoder

Seq2seq 模型用于把一个序列映射为另一个序列,如语音到文字、机器翻译或图像描述。Encoder 负责编码输入序列,Decoder 根据编码结果逐步生成输出序列。

# Self-attention

自注意力让序列中每个位置都能关注其他位置。对输入向量 aia_i,先线性变换得到 Query、Key、Value:

qi=Wqai,ki=Wkai,vi=Wvaiq_i=W_q a_i,\qquad k_i=W_k a_i,\qquad v_i=W_v a_i

qiq_i 用于发起查询,kik_i 用于被匹配,viv_i 是被加权汇聚的信息。

相关性分数为:

αi,j=qikj\alpha_{i,j}=q_i^\top k_j

再经 softmax 归一化:

αi,j=exp(αi,j)lexp(αi,l)\alpha'_{i,j}=\frac{\exp(\alpha_{i,j})}{\sum_l\exp(\alpha_{i,l})}

输出向量为:

bi=jαi,jvjb_i=\sum_j \alpha'_{i,j}v_j

它表示第 ii 个 token 根据注意力权重从所有 token 中汇聚的信息。

# Scaled Dot-Product Attention

实际 Transformer 使用缩放点积注意力:

Attention(Q,K,V)=softmax(QKdk)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

dkd_k 是 key 的维度,除以 dk\sqrt{d_k} 可避免点积过大导致 softmax 梯度过小。

# Multi-head Attention

多头注意力把 Q,K,VQ,K,V 投影到多个子空间中并行计算注意力:

MultiHead(Q,K,V)=Concat(head1,,headh)WO\operatorname{MultiHead}(Q,K,V)=\operatorname{Concat}(head_1,\cdots,head_h)W^O

不同头可以关注不同关系,如局部关系、长距离依赖或语义相关性。

# Encoder

Encoder 通常由多层堆叠组成,每层包含多头自注意力、前馈网络、残差连接和层归一化。残差连接帮助梯度传播,层归一化稳定训练。

# Decoder

Decoder 包含 masked self-attention、encoder-decoder attention 和前馈网络。Masked self-attention 防止当前位置看到未来输出,保证自回归生成。

# Training

训练时常使用 teacher forcing,即 Decoder 输入真实前缀,预测下一个 token。损失函数通常为交叉熵。推理时模型逐步生成,每一步把已生成 token 作为下一步输入。

# 图示说明

PPT 中的 Q/K/V 和注意力权重图展示了自注意力的计算过程:先由输入生成查询、键和值,再用查询和键计算相关性,最后对 value 加权求和。复习时应能把图中的箭头对应到上述公式。