在Self-Attention机制中,除以根号dk(即Key向量的维度)是为了防止点积结果过大,从而导致梯度消失或爆炸的问题。具体来说,有以下几个原因:
-
缩放点积结果:
- 当Key和Query向量的维度较大时,它们的点积结果可能会非常大。这会导致Softmax函数的输入值变得非常大,从而使梯度变得不稳定,容易出现梯度消失或梯度爆炸的问题。
- 通过除以dk,可以将点积结果缩放到一个合理的范围内,使得Softmax函数的输出更加稳定。
-
保持数值稳定性:
- Softmax函数的输入值如果过大,会导致数值计算上的不稳定。例如,当输入值非常大时,指数函数的结果可能会超出浮点数的表示范围,导致溢出。
- 通过缩放点积结果,可以避免这种情况,确保数值计算的稳定性。
-
理论依据:
- 在原始的Transformer论文《Attention is All You Need》中,作者提到这种缩放方法是基于理论分析得出的。具体来说,假设Query和Key向量是独立同分布的随机变量,那么它们的点积结果的方差会随着维度的增加而线性增加。为了保持点积结果的方差不变,需要除以dk。
公式解释
Scaled Attention Scores=QKTdk
- Q 是Query矩阵
- K 是Key矩阵
- dk 是Key向量的维度