NLP模型:Attetion注意力机制
参考 https://www.jianshu.com/p/e14c6a722381
1.Encoder-Decoder 模型
其中,$x_1x_2 \cdots x_4 $为输入(假设为待翻译的句子),$y_1y_2 \cdots y_4 $为输出(假设为目标翻译句子),$c$为中间语义变量
$$c=g(x_1,x_2 \cdots x_4)$$
$$
y_1 = f( c )
$$
$$
y_2 = f(c,y_1)
$$
$$
y_i = f(c,y_1,y_2 \cdots y_{i-1})
$$
$g$和$f$为任意非线性变换,如RNN,CNN
2.Attention模型
Attetion 在 Encoder-Decoder 基础上,使输出$y_i$不再共享同一个$c$,每个$y_i$对应一个$c_i$。注意力的意思就是对于一个输出$y_1$,可能更关注$x_1$而比较少关注其他输入,即$y_1$主要被$x_1$影响,计算$c_1$时,$x_1$的权重也更大
$$
c_i = g(\omega_1 * x_1 +\omega_2 * x_2 + \cdots + \omega_i * x_i)
$$
$$
y_1 = f(c_1)
$$
$$
y_2 = f(c_2,y_1)
$$
$$
y_i = f(c_i,y_1,y_2 \cdots y_{i-1})
$$
下面讨论$\omega$的值如何计算
如图,$h_i$为输入的隐藏层,$H_i$为输出的隐藏层,都可以在计算$y_i$前算出
向量$\omega$由$h_i$和$H_i$经某种变换$F$并经过softmax层得出:
3. 对Attetnion模型进行更一般化的表示
如图,Query相当于上面提到的RNN的Encoder中的隐藏层$h$,Key相当于RNN的Encoder中的隐藏层$H$,a相当于$\omega$,Value相当于输入$x$,Attention Value相当于中间语义$c$