对比Attention的几种结构

前言

  Attention是一种思想,在当前输出上,是存在部分输入需要重点关注的,其对该输出贡献非常大。之前看到几篇关于attention思想的应用文章,现对比下其中的Attention具体结构上的区别。

NMT using Attention

  这篇文章是Bahdanau的2015年佳作,将Attention引入到NMT中并取得了非常好的效果,其中的attention结构不是非常容易理解。
  NMT面临的问题:通常的Encoder-Decoder翻译模式下,Encoder会将所有必要的信息压缩到一个定长向量中,而Decoder则依赖这个定长向量来做翻译。定长向量成了制约翻译效果的瓶颈,拓展模型自动寻找与待预测部分相关的source作辅助,会有更好的效果。该方法的主要思路是:每次翻译某个词之前,先找到source中最相关信息的位置,然后利用包含这些位置信息及之前预测词的context vector来预测下个词。其最大的特点:将输入序列编码到序列向量中,自适应地选择其子集供翻译时使用。

  让我们仔细地研究下Decoder其中的公式关系。
  当预测某个词时:

p(yi|y1,y2,...,yi1,X)=g(yi1,si,ci) p ( y i | y 1 , y 2 , . . . , y i − 1 , X ) = g ( y i − 1 , s i , c i )

依赖于三个变量,前刻预测词 yi1 y i − 1 ,当前的隐状态 si s i ,当前的上下文向量 ci c i
  而当前的隐状态:
si=f(si1,yi1,ci) s i = f ( s i − 1 , y i − 1 , c i )
,则依赖于前刻的隐状态 si1 s i − 1 ,前刻的预测词 yi1 y i − 1 ,当前的上下文向量 ci c i 不同于常见的RNN结构里面的隐状态,增加对上下文 ci c i 的依赖。
  上下文向量 ci c i 涵盖了当前待预测词 yi y i 需要关注的source信息总和, ci=Txj=1αijhj c i = ∑ j = 1 T x α i j h j 。到底需要关注哪些source信息呢?对输入序列的对应定义 解释变量 hj h j ,该变量描述了输入序列位置 j j 处及附近的信息。 α i j 则表示当前待预测词 yi y i 与source词 xj x j 附近信息的 相关性程度(对每个 xj x j 的关注度)
   疑问1:为什么不直接model xj x j yi y i 的关系呢?后文后有解释。
   疑问2:如何具体表示 αij α i j 呢?
   αij=exp(eij)Txk=1exp(eik) α i j = e x p ( e i j ) ∑ k = 1 T x e x p ( e i k ) ,根据所有输入词对 yi y i 的相关值 eij e i j 作normalize,得到归一化的概率权重,其中 eij=a(si1,hj) e i j = a ( s i − 1 , h j )
   疑问3:如何理解
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值