在Transformer模型中,self-attention机制是其中的核心部分,使用了点积(dot-product)来计算keys和queries之间的关系。具体地,我们对queries和keys进行点积以获得注意力权重,然后这些权重用于加权平均values。但在实际实现中,这个点积会被缩放,即除以keys的维度的平方根,常常表示为 d_k 。这里 d_k 是key向量的维度。

我们先考虑两个随机向量 u v ,其长度都为 d ,且它们的元素都来自均值为0、方差为1的独立分布。对于向量的元素 u_i v_i 来说,它们的点积为 u_i v_i 。我们首先计算这一项的期望值和方差。
期望值:
E[u_i v_i] = E[u_i] E[v_i] = 0
因为 u_i v_i 都是均值为0的随机变量。
方差:
Var(u_i v_i) = E[(u_i v_i)^2] - (E[u_i v_i])^2
由于 u_i v_i 都是均值为0、方差为1的独立随机变量,我们有:
E[u_i^2] = E[v_i^2] = 1
所以
E[(u_i v_i)^2] = E[u_i^2] E[v_i^2] = 1
结合上面的期望值,我们得到:
Var(u_i v_i) = 1 - 0^2 = 1
因此,向量 u v 的点积是这些 u_i v_i 项的总和:
u \cdot v = \sum_{i=1}^{d} u_i v_i
对于这个和,其期望值是 d 乘以每一项的期望值,因此为0(因为单项期望值为0)。
其方差是 d 乘以每一项的方差(因为它们是独立的):
Var(u \cdot v) = d \times 1 = d
所以,点积 u \cdot v 的方差是 d 。至此,我们可以得出结论queries和keys点积的方差与 d_k 成正比。

在实际训练深度学习模型时,控制梯度的范围和保持其稳定性是非常关键的,因为不稳定的梯度会导致训练的不稳定性,可能导致模型无法收敛或需要更多的调整和细调。通过对点积进行适当的缩放(将方差保持为1),Transformer模型确保了其self-attention机制的有效性和稳定性。