论文笔记 已读 ★★★★★

Attention Is All You Need

作者 Ashish Vaswani, Noam Shazeer, Niki Parmar

来源 NeurIPS · 2017

原文 https://arxiv.org/abs/1706.03762 ↗

笔记 · 更新于 2026年6月20日 · 约 2 分钟阅读

#transformer#attention#nlp

摘要

提出 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$ 投影到多个子空间并行计算注意力,再拼接:

multi_head_attention.py
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 等位置编码变体相对本文方案的改进动机。