Attention机制的理解

Attention机制也就是注意力机制,在自然语言处理中,就是对于一个语言序列的不同的部分给予不同的注意力,在数学上一般表现为权重,也就是对一个语言序列的各个元素加权。

对Attention机制给一个通用的定义:给定一组向量集合values,以及一个向量query,attention机制是一种根据该query计算values的加权求和的机制。这个定义来源于cs224n。

所谓attention就是这个value集和中的每个向量的权值的大小,attention机制就是用一种方式来计算出这个权值。

seq2seq中Attention机制的运用

attention在seq2seq模型中的计算方法大致如下:

  1. 将文本信息输入encoder模型中,每一步均会产生一个hidden state:
  2. 将encoding最后一个hidden state作为decoder中hidden state的初始值,输入到decoder中。
  3. 在decoder中每一个timestep均会产生一个hidden state:
  4. decoder的上一个timestep产生的hidden state:,将与encoder中的每个hidden state:分别做点积,得到的标量叫做encoder中的每个hidden state的Attention score。
  5. 然后对Attention score做softmax得到一个概率分布叫做Attention distribution
  6. 根据Attention distribution对encoder中的每个hidden state加权平均得到context vector。
  7. 然后将context vector输入decoder最后输出预测的词。

上图中大概展示了attention机制中是如何计算出attention score 。

上图展示了如何计算Attention distribution:

上图展示了如何计算attention output,也就是context vector:

常见的几种Attention计算方式

  • soft attention, global attention
  • hard attention
  • local attention

soft attention也就是global attention,soft attention和hard attention相对应,global attention和local attention相对应。soft attention在求出attention distribution之后将概率分布和encoder的hidden state相乘求和,也就是求加权平均。hard attention就是将attention distribution中概率最大的一项置为一,其余置为0。也就是将所有的attention集中在概率最大的一个hidden state,其他的直接忽略。local attention是soft和hard的结合体,先求hard attention,找到attention score最高的那个hidden state,然后以这个为中心,选取他周围的几个做soft attention。

如何改变Attention计算方式

有几个方向重新设计Attention:

  1. 改变Attention score/distribution的计算方式
  2. 改变加权平均hidden state的计算方式

上面介绍的soft attention/global attention、hard attention、local attention就是在改变加权平均hidden state的计算方式。通过改变计算Attention score的计算方式,也可以设计出很多新的attention机制。例如对将点乘改为concat、改为线性组合、加入激励函数等。

同样可以改变计算Attention distribution的计算方式,例如直接对Attention score归一化等:

自然语言处理中的Attention机制相关推荐

  1. 自然语言处理中的Attention机制总结

    在面试的过程中被问到了attention,原来虽然其实已经实际用过attention了,也知道个大概原理是加权求和,但是对于加权的具体方法以及权值得分的计算并不是很清晰,面试答的一般,正好最近实习的地 ...

  2. 自然语言处理中的Attention Model:是什么以及为什么[一]

    转载自  自然语言处理中的Attention Model:是什么以及为什么[一] 自然语言处理中的Attention Model:是什么以及为什么[一] 1.前言 要是关注深度学习在自然语言处理方面的 ...

  3. [转]自然语言处理中的Attention Model:是什么及为什么

    自然语言处理中的Attention Model:是什么及为什么 https://blog.csdn.net/malefactor/article/details/50550211 /* 版权声明:可以 ...

  4. 自然语言处理中的Attention Model原理介绍

    原文作者:张俊林 原文地址:自然语言处理中的Attention Model:是什么及为什么 版权声明:转载时请附上原文作者和地址 要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Att ...

  5. (zhuan) 自然语言处理中的Attention Model:是什么及为什么

    自然语言处理中的Attention Model:是什么及为什么 2017-07-13 张俊林 待字闺中 要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model( ...

  6. 自然语言处理中的Attention Model:是什么以及为什么[二]

    转载自  自然语言处理中的Attention Model:是什么以及为什么[二] 自然语言处理中的Attention Model:是什么以及为什么[二] 1.Attention Model 图一见下: ...

  7. 如何理解自然语言处理中的注意力机制? | 技术头条

    作者 | yuquanle 责编 | 郭芮 你的颜值及格没?人工智能测试? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 近些年来,注意力机制一 ...

  8. 深度学习方法(九):自然语言处理中的Attention Model注意力模型

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.NET/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 上一篇博文深度学习方法(八):Enc ...

  9. (转载)自然语言处理中的Attention Model:是什么及为什么

    转载说明来源:http://blog.csdn.net/malefactor/article/details/50550211 author: 张俊林 原文写得非常好! 原文: 要是关注深度学习在自然 ...

  10. 自然语言处理中的Attention Model:是什么及为什么

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 (想更系统地学习深度学习知识?请参考:深度学习枕边书) 要是关注深度学习在自然语言处理方面的研究进展, ...

最新文章

  1. asp.net中显示DataGrid控件列序号的几种方法
  2. 关于学习Python的一点学习总结(38)
  3. Gut:人体最初的微生物起源与生殖健康
  4. arcgis 10.0中的server报错说工作站服务没有打开
  5. MyBatis源码- SqlSession门面模式 selectList 源码解析
  6. php和java之间rsa加密互通
  7. Xshell操控kali-linux虚拟机
  8. webkit如何实现JS DOM binding—基于V8分析
  9. 购物车的实现(cookie、session)
  10. css中position的两种定位(absolute、relative)
  11. [Java网络编程基础]UDP发送和接收数据
  12. redis源码剖析(十四)—— dump.rdb文件分析工具
  13. iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)
  14. 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
  15. Layer单选框非空校验注意
  16. Hownet在NLP领域内是什么样的地位?
  17. 《领导力与沟通艺术》
  18. 什么是 IT 运营管理 (ITOM)
  19. 比最快的超级计算机快一百万亿倍!中国科学家实现“量子计算优越性”里程碑
  20. 1080p60Hz需要传多少数据,怎么计算显示器带宽(一)【华光昱能知识与您分享】

热门文章

  1. 如何解决SSM框架前台传参数到后台乱码的问题
  2. 《Google Go: A Primer》学习笔记
  3. FLASK安装--兼收EZ_INSTALL及PIP
  4. JAVA中易出错的小问题(二)
  5. 什么是我想要守护的东西?
  6. python中函数的返回值
  7. redis和couchbase的比较
  8. sts bug SpringJUnit4ClassRunner
  9. jQuery事件学习
  10. DataSet如何处理海量数据