今日阅读了两篇attention机制的论文,两篇论文思想类似,但实现原理和方法不同,在此小记,以便后用。部分内容为本人个人理解,如果错误,欢迎指正,如果侵权,请联系删除。谢谢! 转载请标明出处,谢谢
思想
Attention机制的思想其实很简单,其寻常的RNN中,对于某一个位置的预测,需参考整个句子之前全部的信息,然而,对于过长的句子,容易丢失一些信息,即使是LSTM,虽然可以在一定程度上解决这个问题,但是对于更长的句子,便力有不足,所以attention机制的思想是,在预测某个位置时,只考虑句子中的部分内容,而不是全部的信息。
全局的attention机制
原理
RNN:
Encoder:
X—转化为—>C,
x为输入input,输入的是词向量的序列,
c is a vector generated from the sequence of thehidden states:![](https://i-blog.csdnimg.cn/blog_migrate/616e1daf18964ce57323ca02abc3b05b.png)
Decoder:
![](https://i-blog.csdnimg.cn/blog_migrate/6c21826aa939b92e3eb92568b3ac18a3.png)
g是非线性函数,St是RNN的hidden state,c 是context vector
RNNsearch
下面详细介绍一下这个论文中的原理,
Encoder:
使用的是BiRNN(可以用LSTM):
Forward:![](https://i-blog.csdnimg.cn/blog_migrate/f16b4598bd05717021feb68a4a6c33d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7897fcb568eeb789cd9495f35588e9c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a3ae15d707243cdf090cfe51e596b08a.png)
Decoder:
这里的Ci是根据encoder的hj计算得到的:
![](https://i-blog.csdnimg.cn/blog_migrate/0f40ce3d15724cdc26f5c17b8cb1a5e1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b8fa7d6bf7f3df8a188895d9721592b.png)
具体的实现
![](https://i-blog.csdnimg.cn/blog_migrate/0ad14866ebb4718db39843189845be31.png)
![](https://i-blog.csdnimg.cn/blog_migrate/99e9830a4f452c0776e7a279c7bb2577.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37a5a856b32669bc17760db77fd87a5b.png)
Encoder:
前向:
![](https://i-blog.csdnimg.cn/blog_migrate/a81526d506e110bef6775a82562ff843.png)
反向:类似上面
然后:
Decoder:
![](https://i-blog.csdnimg.cn/blog_migrate/48bbd0ea7e01f0d1b05322adfad2ef2c.png)
窗口的Attention机制
它分为两种,global和local,这里提到global主要是为了和local作为比较,global其实和不使用attention机制没有什么区别(因为他们都把全部的信息考虑进去了)
Global
其过程如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/15cacca9295c09ba043ede792aa82c9b.png)
Local
Hard and softattention的一种平衡的实现
Hard and softattention:
![](https://i-blog.csdnimg.cn/blog_migrate/1a6ecd08575178f9dc46abf0bc6e402f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6040825ed334d58c8a56075498bc0f5.png)
下面来说一下local 的实现:
对于each target wordat time t 产生一个aligned position Pt,
Ct = [Pt-D,Pt+D],D是一个窗口的大小,凭借经验设置的。
Local-m:
![](https://i-blog.csdnimg.cn/blog_migrate/73680f18692a3413b046d76702b7c7a5.png)
Local-p:
![](https://i-blog.csdnimg.cn/blog_migrate/ec21654abdda3af48b085d9a7f6f2b11.png)
其实现过程如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/bc31fa0f42aeb006f069ca83ba8bb359.png)
Input-feeding Approach
![](https://i-blog.csdnimg.cn/blog_migrate/e14e7974229fdac4b76594dd9970c30b.png)
其实现原理如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/1bd9a469150695911f3308a68d57128c.png)