Attention总结

  • Global Attention
  • Local Attention
  • Soft Attention
  • Hard Attention
  • Multi-Head Attention

 

Global Attention:传统的Attention model一样。所有的hidden state都被用于计算Context vector 的权重,即变长的对齐向量at,其长度等于encoder端输入句子的长度。结构如图所示。

在t时刻,首先基于decoder的隐状态ht和源端的隐状态hs,计算一个变长的隐对齐权值向量at,其计算公式如下:

计算Attention Score计算方式:

Soft/Hard Attention:上述即为Soft Attention,Hard Attention则是以概率Si来采样输入端的隐状态一部分来进行计算,而不是整个encoder的隐状态。为了实现梯度的反向传播,需要采用蒙特卡洛采样的方法来估计模块的梯度。

 

Local Attention:Global Attention有一个明显的缺点就是,每一次,encoder端的所有hidden state都要参与计算,这样做计算开销会比较大,特别是当encoder的句子偏长,比如,一段话或者一篇文章,效率偏低。因此,为了提高效率,Local Attention应运而生:Local Attention首先会为decoder端当前的词,预测一个source端对齐位置(aligned position)pt,然后基于pt选择一个窗口,用于计算背景向量ct。

 

Multi-Head Attention:

 

Multi-Head Attention由多个结构相似的Scaled Dot-Product Attention单元组成,结构如下图所示。

其中使用到的Self Attention是在Scaled Dot-Product Attention单元里面实现的,如上图左图所示,首先把输入Input经过线性变换分别得到Q、K、V,注意,Q、K、V都来自于Input(Self Attention名字由来),只不过是线性变换的矩阵的权值不同而已。然后把Q和K做dot Product相乘,得到输入Input词与词之间的依赖关系,然后经过尺度变换(scale)、掩码(mask)和softmax操作,得到最终的Self Attention矩阵。尺度变换是为了防止输入值过大导致训练不稳定。

最后,把encoder端self Attention计算的结果加入到decoder做为k和V,结合decoder自身的输出做为q,得到encoder端的attention与decoder端attention之间的依赖关系。其中,mask则是为了保证预测第i个位置时不会接触未来信息【只有decode才需要mask,训练会给ground truth】。

相关公式:

 

这里其实值得注意的是 Q·K = H·W_q·W_k·H

 

第一层输入有word_emb+pos_emb,pos_emb公式为:其中d表示pos_emb维度,i表示pos_emb中的位置

最后前馈层:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值