Attention机制学习笔记

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

思想

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

全局的attention机制

原理

RNN:

Encoder:

X—转化为—>C,

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

c is a vector generated from the sequence of thehidden states: ,ht是hidden state,


Decoder:



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

RNNsearch

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

Encoder:

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

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

Decoder:


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


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



具体的实现

输入:
输出:


Encoder:

前向:


反向:类似上面

然后:



Decoder:





窗口的Attention机制

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

Global



其过程如下图:


Local

Hard and softattention的一种平衡的实现

Hard and softattention:




下面来说一下local 的实现:

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

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


Local-m:


Local-p:


其实现过程如下图:


Input-feeding Approach


其实现原理如下图:





猜你喜欢

转载自blog.csdn.net/mingzheng114/article/details/80946912
今日推荐