Attention机制学习笔记

今日阅读了两篇attention机制的论文,两篇论文思想类似,但实现原理和方法不同,在此小记,以便后用。部分内容为本人个人理解,如果错误,欢迎指正,如果侵权,请联系删除。谢谢!  转载请标明出处,谢谢

思想

       Attention机制的思想其实很简单,其寻常的RNN中,对于某一个位置的预测,需参考整个句子之前全部的信息,然而,对于过长的句子,容易丢失一些信息,即使是LSTM,虽然可以在一定程度上解决这个问题,但是对于更长的句子,便力有不足,所以attention机制的思想是,在预测某个位置时,只考虑句子中的部分内容,而不是全部的信息。

全局的attention机制

原理

RNN:

Encoder:

X—转化为—>C,

x为输入input,输入的是词向量的序列,

c is a vector generated from the sequence of thehidden states:Attention机制学习笔记,ht是hidden state,

Attention机制学习笔记

Decoder:

Attention机制学习笔记

Attention机制学习笔记

g是非线性函数,St是RNN的hidden state,c 是context vector

RNNsearch

下面详细介绍一下这个论文中的原理,

Encoder:

使用的是BiRNN(可以用LSTM):

Forward:Attention机制学习笔记
Backward:Attention机制学习笔记
Hidden state:Attention机制学习笔记这里的hj叫做annotation,对于i位置的X来说Xi来说,它包含了前向的信息和反向的信息,随着训练,the annotation hj will be focused on the words around Xj,然后,annotation的一个序列,也就是hj,被decoder和aligment model用来得到context vector

Decoder:

Attention机制学习笔记


这里的Ci是根据encoder的hj计算得到的:

Attention机制学习笔记
Attention机制学习笔记
Ci(我们也可以认为这个Ci是expected annotation)是hj的加权和,权重的计算方式如下:

Attention机制学习笔记

Attention机制学习笔记

Attention机制学习笔记

具体的实现

输入:Attention机制学习笔记
输出:Attention机制学习笔记
Attention机制学习笔记

Encoder:

前向:

Attention机制学习笔记

反向:类似上面

然后:

Attention机制学习笔记


Decoder:


Attention机制学习笔记

Attention机制学习笔记

Attention机制学习笔记

Attention机制学习笔记

窗口的Attention机制

        它分为两种,global和local,这里提到global主要是为了和local作为比较,global其实和不使用attention机制没有什么区别(因为他们都把全部的信息考虑进去了)

Global

Attention机制学习笔记

Attention机制学习笔记

其过程如下图:

Attention机制学习笔记
Local

Hard and softattention的一种平衡的实现

Hard and softattention:

Attention机制学习笔记
Attention机制学习笔记

下面来说一下local 的实现:

对于each target wordat time t 产生一个aligned position Pt,

Ct = [Pt-D,Pt+D],D是一个窗口的大小,凭借经验设置的。

Attention机制学习笔记

Local-m:

Attention机制学习笔记

Local-p:

Attention机制学习笔记

其实现过程如下图:

Attention机制学习笔记
Input-feeding Approach
Attention机制学习笔记

其实现原理如下图:

Attention机制学习笔记