前置知识

先把序列建模看成“把一串符号映射为另一串符号”。RNN 按时间步串行更新隐藏状态,长距离信息需要经过多次传递;Transformer 试图减少这种串行路径。

理解本章只需要四个入口:

  • query 表示当前位置想寻找什么,key 表示可被匹配的特征,value 表示被汇聚的信息;
  • softmax 把相关性分数变成归一化权重;
  • 多头注意力在多个投影子空间并行计算关系;
  • 自注意力本身没有顺序概念,需要显式位置表示。

阅读前还应复习矩阵乘法的形状。若 Qn×d_kKn×d_k,则 QK^Tn×n:序列中每个位置都能与其他位置形成分数,这既解释了直接依赖,也解释了长序列的平方成本。

核心问题

为什么注意力可以直接建立序列元素之间的关系,同时摆脱 RNN 的严格串行计算?核心公式是:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

本页固定使用 Attention Is All You NeedarXiv:1706.03762v7 abstract官方 PDF。阅读时追踪六个子问题:缩放因子、多头投影、位置编码、mask、序列长度复杂度,以及残差/归一化如何包围子层。

逐节中文精读导读

引言:论文先改变计算路径

引言把 RNN/CNN 的序列计算限制与注意力的并行能力并列。这里的主张不是“顺序不重要”,而是顺序信息可以由位置编码注入,元素关系不必依赖逐步递归才能建立。

第 2 节:背景工作告诉你比较对象

作者回顾 recurrent、convolutional 和 attention 模型,目的是说明当时多数注意力仍依附于循环结构。阅读这一节时记录“完全移除 recurrence”是什么变化,不必把所有引用展开成技术史。

第 3.1 节:先看完整 encoder-decoder 图

图 1 可以拆成重复的子层:注意力、前馈网络、残差连接和归一化。encoder 建立输入表示;decoder 还要处理已生成前缀,并通过 encoder-decoder attention 读取输入。先辨清三种注意力的 Q/K/V 来源,再看具体矩阵。

第 3.2 节:注意力公式是本章核心

QK^T 产生相关性,除以 sqrt(d_k) 控制数值尺度,softmax 形成权重,再对 V 汇聚。multi-head 不是简单复制同一个结果,而是为每个头使用不同的投影矩阵,最后拼接并重新投影。

第 3.3–3.5 节:位置、前馈和 embedding 补齐模型

每个位置共享同一个前馈网络,但各位置独立计算。embedding 将离散 token 变成向量;位置编码让相同 token 在不同位置拥有不同表示。正弦方案是论文选择,不意味着所有 Transformer 都必须使用同一种位置编码。

第 4–6 节:效率、训练和结果必须一起看

表 1 比较每层复杂度、并行操作数和最大路径长度。训练细节包含 optimizer、学习率调度、regularization 等条件;BLEU 等结果不能脱离这些条件单独归因于某个公式。本项目尚未复现翻译训练和指标。

关键公式与结构

缩放点积注意力中的 sqrt(d_k) 用于避免高维点积幅度增大后让 softmax 进入过于尖锐的区域。因果 mask 则在 softmax 前把未来位置设为不可选,使位置 t 只能读取不晚于 t 的信息。

多头注意力可写为:

head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
MultiHead(Q,K,V) = Concat(head_1, ..., head_h)W^O

残差路径与 ResNet 有相似的“保留较直接信息通路”直觉,但模块、任务与实验完全不同,不能把它们写成相同机制或严格继承关系。

最小复现

固定提交 2b8b41e63608725e6d4f25a44599014b1c22596e 提供一个 Python 3.11 小型离线 attention 脚本。它使用内置输入检查张量路径、训练反向传播和因果 mask,不下载数据集;这不能代表论文发表指标的复现,也没有重跑机器翻译训练。

git clone https://github.com/momo0205/paper-deep-dive.git
cd paper-deep-dive
git checkout 2b8b41e63608725e6d4f25a44599014b1c22596e
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -e .
python3 code/transformer/tiny_attention.py --smoke --offline --output-dir /tmp/paper-deep-dive-transformer

检查输出时,先确认 attention shape,再确认因果 mask 后上三角权重是否为零。工作台中的 loss 变化只属于这个 tiny 脚本与固定随机设置,不能外推成翻译质量或架构优越性结论。

自测与能力边界

本章仍是“框架已发布”。自测应覆盖:QK^T、softmax、V 分别承担什么;为什么缩放;多头是否增加总表示维度;位置编码为何必要;padding mask 与 causal mask 的用途;O(n²d) 的瓶颈在哪里。

当前没有 BLEU 对照、长序列消融、位置编码比较或完整推导。能运行 smoke 只说明实现路径可执行,不能说明注意力在所有长距离任务上都能学到正确关系。

一页纸总结

Transformer 用注意力把任意两个位置之间的计算路径缩短为一次权重计算,并通过多头投影、位置编码、前馈层、残差和归一化构成可堆叠结构。它换来了更强的并行能力,也引入随序列长度平方增长的注意力矩阵。

首发内容已经固定原文、概念路径和离线代码入口;论文级翻译实验、指标与个人消融仍未形成公开结论。