$$
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
$$
那么除以 $\sqrt{d}$ 的原因是什么呢?其实很简单,就是为了数值的稳定性。
深度学习会有一些假设,这里可以认为在初始状态下,$Q$ 和 $K$ 独立,且服从标准正态分布。为了保证数值的稳定性,我们会希望输出依然服从标准正态分布,这样有利于 softmax 和下一层的计算稳定。
从方差角度,为了让 $QK^T$ 的输出也服从标准正态分布。假设有:
$$
Q \sim \mathcal{N}(0,1), \quad K \sim \mathcal{N}(0,1)
$$
那么:
$$
\mathrm{Var}(QK^T)
= \mathrm{Var}\left(\sum_{i=1}^{d} Q_i K_i^T \right)
$$
由于各项独立:
$$
= \sum_{i=1}^{d} \mathrm{Var}(Q_i K_i^T)
$$
以一组 $\mathrm{Var}(Q_1 K_1^T)$ 为例计算,记住这里 $Q$ 和 $K$ 相互独立:
$$
\mathrm{Var}(Q_1 K_1^T)
= \mathrm{Var}(Q_1)\mathrm{Var}(K_1)
= 1
$$
那么:
$$
\mathrm{Var}(QK^T)
= \sum_{i=1}^{d} 1
= d
$$
所以这里对 $QK^T$ 的结果除以 $\sqrt{d}$,即可使其方差变为 1,从而恢复到标准正态分布的尺度。
$$
\mathrm{Var}\left(\frac{QK^T}{\sqrt{d}}\right)
= \frac{d}{d}
= 1
$$
评论
留下评论
邮箱仅用于识别,不会公开
$...$行内 ·$$...$$独立公式