No history yet

注意力数学本质

自注意力的数学核心

要理解 Transformer 为何如此强大,我们必须深入其核心机制:自注意力(Self-Attention)。这个机制允许模型在处理一个词时,权衡输入序列中所有其他词的重要性。这一切都始于将每个输入词向量线性映射到三个不同的空间:查询(Query)、键(Key)和值(Value)。

想象一下在图书馆里查找资料。你的“查询”是你脑中的问题。书架上每本书的标题或标签就是“键”,而书中的具体内容则是“值”。自注意力机制就是用你的查询去匹配所有书的键,找到最相关的那些,然后根据相关性程度,把这些书的值(内容)整合起来,得到最终的答案。

在模型中,这意味着每个输入词向量 xx 都会通过乘以三个独立训练的权重矩阵 WQW^QWKW^KWVW^V 来生成对应的查询向量 qq、键向量 kk 和值向量 vv

q=xWQk=xWKv=xWVq = x W^Q \\ k = x W^K \\ v = x W^V

缩放点积注意力

生成了 Q、K、V 矩阵后,模型需要计算注意力分数。这是通过计算一个查询向量和所有键向量的点积来实现的。这个分数衡量了在当前词的上下文中,我们应该对其他每个词投入多少“注意力”。

然而,仅仅做点积是不够的。当键向量的维度 dkd_k 很大时,点积的结果也可能变得非常大。这会将 Softmax 函数 推向其梯度极小的区域,导致训练过程中的 梯度消失 问题。为了解决这个问题,“注意力就是你所需要的一切”(Attention Is All You Need)这篇开创性论文引入了一个缩放因子。

Lesson image
Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

这个公式优雅地将查询与键的相似度计算、梯度稳定化以及值的加权整合在了一起。最终得到的输出向量融合了整个序列中所有词的信息,并根据其与当前词的关联性进行了加权。

路径长度与计算复杂度

自注意力机制相比于循环神经网络(RNN)等早期序列模型,最大的优势之一在于其处理长距离依赖的能力。在 RNN 中,信息需要通过时间步依次传递。如果两个词在序列中相距很远(例如,一个在句首,一个在句尾),它们之间的依赖关系路径长度为 O(n)O(n),其中 nn 是序列长度。信号在长距离传递中很容易衰减或失真。

相比之下,自注意力机制直接计算序列中任意两个词之间的关联。这意味着任何两个词之间的路径长度都是 O(1)O(1)。模型可以直接、完整地捕捉它们之间的关系,无论它们相距多远。