论文笔记 已读
Attention Is All You Need
摘要
提出 Transformer 架构,完全基于自注意力(self-attention)机制,摒弃了循环(RNN)与卷积(CNN)结构,在机器翻译任务上取得当时最优效果,且训练并行度更高。
核心笔记
1. Scaled Dot-Product Attention
$$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$
除以 $\sqrt{d_k}$ 是为了防止点积结果过大导致 softmax 梯度消失。
2. Multi-Head Attention
把 $Q,K,V$ 投影到多个子空间并行计算注意力,再拼接:
def multi_head_attention(q, k, v, num_heads): d_model = q.shape[-1] d_k = d_model // num_heads
heads = [] for i in range(num_heads): qi, ki, vi = split_head(q, k, v, i, d_k) heads.append(scaled_dot_product_attention(qi, ki, vi)) return concat(heads)3. Positional Encoding
没有循环结构就没有位置信息,用正弦/余弦函数编码位置:
$$ PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) $$
我的评价
工程价值极高:并行度带来的训练效率提升,是后续大模型能 scale 起来的前提之一。第一次读时对多头注意力”为什么要多头”理解不深,二刷后觉得可以类比 CNN 的多通道——每个头学到不同的关系模式。
待深挖:注意力矩阵的可解释性、以及后续 RoPE / ALiBi 等位置编码变体相对本文方案的改进动机。