用直觉理解注意力机制
示例文章
读一句话时,我们并不会给每个词同样多的注意。例如“杯子放不进行李箱,因为它太小了”,理解“它”时,需要回头比较杯子和行李箱。这个例子可以帮助我们接近注意力机制:当前位置的表示,会根据当前需要,从其他位置取回不同分量的信息。它不是在模拟一个人完整的理解过程,而是一种可学习的信息汇总方式。
先把问题拆成三件事
可以把 Query 想成“我正在寻找什么”,Key 想成“我能提供哪些线索”,Value 想成“真正要取回的内容”。模型将输入表示分别变换为这三组向量,再比较 Query 与各个 Key 的匹配程度。这里的线索不是程序员手写的词义标签,而是训练过程中得到的数值表示。
类比图书馆会更容易想象:问题像检索请求,索引帮助定位,而书里的内容才是最后读到的信息。但这个比喻有边界。模型并不真的打开一本书,向量也没有一套固定、可直接翻译成人类语言的含义。
从匹配程度到加权汇总
在缩放点积注意力中,Query 和 Key 的点积形成分数,缩放与 softmax 将分数转换为权重,随后用这些权重汇总 Value。同一组输入,面对不同的 Query,可以得到不同的汇总结果;因此它比“把所有位置简单平均”更灵活。
理解时先抓住一个问题:这个位置,为了形成新的表示,需要从哪些位置借用信息?
如果暂时把三个位置的权重设为 0.6、0.3、0.1,输出就是对应三个 Value 按这些比例相加。这只是算术示例,不是模型真实的测量结果。权重大小会随输入、层和注意力头而变化,不能直接当成某个词重要性的最终结论。
多头不是重复做同一道题
多头注意力允许多组不同的投影并行形成表示,再将结果组合。不同的头有机会捕捉不同关系,但不能事先保证某个头只负责语法、另一个只负责情绪。这样的命名如果没有进一步实验,只能算便于记忆的猜想。
给下一遍阅读留下入口
- 画出 Q、K、V 的形状,检查哪两个维度参与相乘。
- 区分注意力权重和输出向量,避免把两者混为一谈。
- 再看位置编码、残差连接和前馈层,理解注意力在整个模型中的位置。
这一页先停在直觉层面。下一步可以用三个很短的向量手算一次权重与加权和,再回到原论文核对完整公式。把“看懂了一张示意图”和“能够复现一次计算”分开,通常能更准确地知道自己理解到了哪里。
继续阅读:Attention Is All You Need(Vaswani 等,2017)。