原博链接: 论文解读:Attention is All you need - 知乎 (zhihu.com)
Attention用于计算“相关程度”。
例如在翻译过程中,不同的英文对中文的依赖程度不同。
Attention:$query space \times key-value pairs space \rightarrow attention output vector, $
$(Q, (K_i, V_i)) \mapsto output$
其中$Q$指query,$(K_i, V_i)$指key-value pair.
step 1: 计算$Q$和$K$的相似度, 用$f$表示
$$ f(Q, K_i), i=1,2,\ldots,m $$
step 2: 将上一步的相似度进行softmax操作, 归一化
$$ \alpha_i = \frac {e^{f(Q, K_i)}} {\sum_{j=1}^m e^{f(Q, K_j)}} $$
step 3: 针对计算出来的权重$\alpha_i$, 对V中所有的values进行加权求和, 得到Attention向量
$$ output = \sum_{i=1}^m \alpha_i V_i $$
回过头来看step 1的相似度计算, 有如下四种:
- 点乘 dot product: $f(Q, K_i) = Q^T K_i$
- 权重 general: $f(Q, K_i) = Q^T W K_i$
- 拼接权重 concat: $f(Q, K_i) = W [Q; K_i]$
- 感知机 percepton: $f(Q, K_i) = V^T \tanh (WQ+UK_i)$