Attention机制的理解

详细内容请参考论文Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate, 2015

注意力机制(Attention mechanism)运用在编解码器的框架内,通过在编码端加人Attention机制,对源数据序列进行加权变换;或者在解码端引入对目标数据进行加权变化,可以有效提高sequence-to-sequence模型在自然语言处理任务上的表现。

1、Attention

对于attention机制的理解可以联系到我们自身,当我们人在解决问题的时候,具体问题不一样那么我们需要关注的方面也不一样。下面我们举一个具体的例子来进行说明:

翻译句子 This will change my future.  --> 这将会改变我的未来。

那么在翻译“我”的时候就应该把注意力放在“I”上,翻译“未来”的时候注意力则应该在“future”上……

2、为什么要加入Attention

在普通的encoder-decoder模型中,输入序列不论多长都会被编码成一个固定长度的向量表示,这样当输入序列很长时就很难保留全部的必要信息,使得解码效果变差,因此我们引入了Attention机制。Attention机制通过保留编码器对输入序列的中间输出结果,在解码时选择性地与这些中间输出结果进行关联,更好地利用了对应的输入信息。

3、具体的Attention模型

引入Attention机制后,decoder的具体公式如下:

p(y_i|y_1,...,y_{i-1},x)&=g(y_{i-1},s_i,c_i)),  其中s_i对应decoder中i时刻的hidden state。

s_i &= f(s_{i-1},y_{i-1},c_i).

每次解码输出y_i时对应不同的编码向量c_ic_i由输入编码的中间结果(h_1,...,h_{T_x})决定,计算如下

c_i = \sum_{j=1}^{T_x} \alpha_{ij}h_j,            \alpha_{ij} =\frac{\exp(e_{ij})}{\sum_{k=1}^{T_x}\exp(e_{ik})},              e_{ij}=a(s_{i-1},h_j)

其中a是一个前向神经网络,可以与encoder-decoder网络一起进行训练,α反映出每个输入向量对于y_i的重要性。

网络结构图如下所示:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值