paper 4:Attention is all you need

 

原博链接: 论文解读:Attention is All you need - 知乎 (zhihu.com)

注意力机制可以分为三步:一是信息输入;二是计算注意力分布α;三是根据注意力分布α 来计算输入信息的加权平均

Attention用于计算query与输入$X$的“相关程度”。

例如在中译英(?)翻译过程中,不同的英文对中文的依赖程度不同。

$Attention:query\ space \times key-value\ pairs\ space \rightarrow attention\ vector\ space, $

$(q, (k_i, v_i)) \mapsto output$

其中$q$指query,$(k_i, v_i)$指key-value pair.

step 1: 计算$q$和$k$的相似度$s$

$$ s(q, k_i), i=1, 2, \ldots, m $$

step 2: 将上一步的相似度进行softmax操作, 得到归一化的权重$\alpha_i$

$$ \alpha_i = \frac {e^{s(q, k_i)}} {\sum_{j=1}^m e^{s(q, k_j)}} $$

step 3: 针对计算出来的权重$\alpha_i$, 对V中所有的values进行加权求和, 得到attention向量

$$ output = \sum_{i=1}^m \alpha_i V_i $$

 注: 这种编码方式成为soft attention. 进一步可细分为: 普通模式(x=key=value)和键值对模式(x=key!=value)

回过头来看step 1的相似度计算, 有如下四种:

  • 点乘 dot product: $s(q, k_i) = q^T k_i$ (可增加缩放)
  • 权重 general: $s(q, k_i) = q^T W k_i$
  • 拼接权重 concat: $s(q, k_i) = W [q; k_i]$
  • 感知机 percepton: $s(q, k_i) = V^T \tanh (Wq+Uk_i)$

 

attention机制的变种

1. hard attention

仅选取最高概率的输入信息

在注意力分布式上随机采样

基于最大采样或随机采样, 使得最终的损失函数与注意力分布之间的函数关系不可导,因此无法使用反向传播算法进行训练.

因此, 为了应用反向传播算法, 一般使用soft attention. 而hard attention利用强化学习来训练.

2. key-value attention

3. multi-head attention

利用多个查询Q=[q1, ... , qM]来平行地从输入信息中选取多个信息. 每个attention关注输入信息的不同部分, 然后再进行拼接

4. self-attention (在处理长距离序列时强大)

(1)CNN和RNN都是对变长序列的一种局部编码, CNN基于N-gram的局部编码, 而对于RNN, 由于梯度消失问题也只能建立短距离依赖

(2) 为解决局部编码的短距离依赖问题, 可以: 一时增加网络层数, 二是使用全连接网络

全连接网络无法处理可变长度的输入序列

这是我们可以利用attention机制动态地生成不同连接的权重, 

(3) self-attention的计算流程

输入X=[x1, ..., xN], 通过线性变化得到查询向量需求

$Q=W_Q X$

$K=W_K X$

$V = W_V X$

从上面看出, Q是对X自身的变换, 而传统的attention中, Q来自外部

attention向量计算公式为

$$ h_i = att((K,V), q_i) = \sum _{j=1}^N \alpha_{ij} v_j = \sum_{j=1}^N softmax(s(k_j, q_i))v_j$$

在self-attention, 通常使用缩放点积来作为attention打分函数, 输出向量序列可以写为:

$$ H = V softmax(\frac{K^TQ}{\sqrt{d_k}}) $$

其中 $d_k$ 为每个隐向量 $k_i$ 的维数.

posted @ 2021-08-07 08:22  Raylan  阅读(75)  评论(0)    收藏  举报