详解attention机制

introduction

本文是参考了以下经典论文和网络上其它解读文章。

Effective Approaches to Attention-based Neural Machine Translation

网络上有很多attention的解读,但大部分是复制论文和莫名其妙的公式,前几天深入看了下论文和代码才略微搞懂一些,便记录一下我对attention的理解,以便初学者和我理解。

什么是attention

attention可以简单的理解为,当我读完一句话,再去预测一个词时,我需要从开始的那一句话提炼出哪些精华。
在这里插入图片描述
attention矩阵是一个mxn维的矩阵,m、n分别是encoder和decoder时间步的长度。矩阵的明亮程度决定了当我们翻译某一个词时需要从原文集中的注意力。

怎么计算attention

又要贡献出这幅图了,我在论文的原图上加了几个符号以便理解。
在这里插入图片描述
在这里插入图片描述

这里的h都是隐藏层的输出,与无attention别无二样。唯一的区别是引入了attention权重和上下文向量。

1、attention权重向量a的计算方法在文中提供了四种,看下图
在这里插入图片描述
2、计算得到权重向量便可以以它为权重,对encoder的隐藏层向量作加权平均得到上下文向量C
在这里插入图片描述
3、得到上下文向量,我们可以将它与一开始的隐藏层做级联,再连接FNN后激活,作为新的decoder隐藏层,到此接下来就和无attention机制一样了。
在这里插入图片描述

4、由新的隐藏层再链接FNN并用softmax激活得到预测向量,也即和无attention相同。
在这里插入图片描述

实例讲解attention计算流程

在这里插入图片描述

这里还用上面的图为例,注意到encoder有5个时间步;decoder只画出了2个当然后面还有,我们就以计算第二个时间步为例。即t=2:
在这里插入图片描述

补充

一些其它技巧:
1、刚才我们介绍的是global attention。
2、hard attention
global attention也可以说是soft attention,即给每一个encoder隐藏层赋予一个权重或概率,而hard attention与之不同的是,我们用0或1来取代原来的权重,即对隐藏层向量,我要么注意要么不注意。

3、local attention:

Soft attention 每次对齐的时候都要考虑前面的encoder的所有hi,所以计算量会很大,因此一种朴素的思想是只考虑部分窗口内的encoder隐藏输出,其余部分为0,在窗口内使用softmax的方式转换为概率。
滑动窗口选择方法:
在这里插入图片描述
4、Input-feeding Approach
这个我还没搞懂,大概是说用弱监督,即前一时刻的输出和隐藏层作为当前时刻的输入。
区别于上文介绍的强监督,即前一时刻的真实标签值和隐藏层作为当前时刻的输入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值