【NLP模型】Attetion注意力机制

参考 https://www.jianshu.com/p/e14c6a722381

1.Encoder-Decoder 模型

Encoder-Decoder 模型

其中,x_1x_2 \cdots x_4为输入(假设为待翻译的句子),y_1y_2 \cdots y_4为输出(假设为目标翻译句子),c为中间语义变量

c=g(x_1,x_2 \cdots x_4)

\left\{ \begin{aligned} y_1 = f(c) \\ y_2 = f(c,y_1) \\ y_i = f(c,y_1,y_2 \cdots y_{i-1}) \end{aligned} \right.

gf为任意非线性变换,如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的权重也更大

引入注意力机制后的Attetion模型.png

c_i = g(\omega_1*x_1 +\omega_2*x_2 + \cdots + \omega_i*x_i)

\left\{ \begin{aligned} 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}) \end{aligned} \right.

下面讨论\omega的值如何计算

假设Encoder和Decoder都是RNN模型

如图,h_i为输入的隐藏层,H_i为输出的隐藏层,都可以在计算y_i前算出

向量\omegah_iH_i经某种变换F并经过softmax层得出:

计算w的过程

3. 对Attetnion模型进行更一般化的表示

attention模型权重的一般化计算方法

如图,Query相当于上面提到的RNN的Encoder中的隐藏层h,Key相当于RNN的Encoder中的隐藏层H,a相当于\omega,Value相当于输入x,Attention Value相当于中间语义c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容