什么是Attention机制

Attention机制通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素。其中重要程度的判断取决于应用场景,拿个现实生活中的例子,比如1000个人眼中有1000个哈姆雷特。根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理。本文主要介绍Attention机制在Seq2seq中的应用。

为什么要用Attention机制

我们知道在Seq2seq模型中,原始编解码模型的encode过程会生成一个中间向量C,用于保存原序列的语义信息。但是这个向量长度是固定的,当输入原序列的长度比较长时,向量C无法保存全部的语义信息,上下文语义信息受到了限制,这也限制了模型的理解能力。所以使用Attention机制来打破这种原始编解码模型对固定向量的限制。

Attention原理

Attention的原理就是计算当前输入序列与输出向量的匹配程度,匹配度高也就是注意力集中点其相对的得分越高,其中Attention计算得到的匹配度权重,只限于当前序列对,不是像网络模型权重这样的整体权重。

算法过程:

1)encode对输入序列编码得到最后一个时间步的状态c,和每个时间步的输出h,其中c又作为decode的初始状态z0。

2)对于每个时间步的输出h与z0做匹配也就是match操作,得到每个时间步的匹配向量α01,如图1。

图1

3)对所有时间步的输出h与z0的匹配度α0,使用softmax做归一化处理,得到各个时间步对于z0的匹配分数。

4)求各个时间步的输出h与匹配分数的加权求和得到c0,作为decode的下一个时间步的输入,如图2。

图2

5)计算各个时间步的输出h与z1的匹配度得到c1作为decode下一个时间步的输入,如此一步一步重复下去,如图3。

图3

这样就可以把每个时间步重要的信息传给decode中,以上就是Attention机制的处理过程。其中match操作一般是求两个向量的相似度,通常有如下方法:

1)余弦相似度

2)一个简单的 神经网络,输入为hh和ww,输出为α

3)或者矩阵变换α=hTWzα=hTWz (Multiplicative attention,Luong et al., 2015)

在tensorflow1.0版本以后的api seq2seq库中,包含了两种Attention算法,他们的区别就是match操作的不同,因此也有人称他们为加法Attention和乘法Attention,具体内容下:

图4

图5

由于图片来自不同地方,所以符号有些不同,图4和图5中的h是上文所说的每个时间步的输出向量,d是decode中每个时间步的状态,也就是上文中的z,c是match后计算的权值加和后的向量用于decode中每个时间步的输入,a就是match操作中经过softmax后的匹配权重,v是一个向量,相当于w一样的权重需要去学习。有上面两个公式可以看出,BahdanauAttention和LuongAttention的区别就是在match过程中的计算方式不同,一个是将decode的状态与encode的输出求和,一个是求乘,所以才有了加法Attention和乘法Attention的叫法。

待更新。。

参考:

空间注意力机制sam_Attention注意力机制介绍相关推荐

  1. 关于《注意力模型--Attention注意力机制》的学习

    关于<注意力模型--Attention注意力机制>的学习 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程.在github上找到一份基于 ...

  2. 【TransformerCNNTiDE】从CNN到ViT,再从ViT到TiDE,回顾近十年顶刊和会议发表的关于Attention自注意力、Conv卷积机制以及最新诞生的TiDE模型的发展历程

    目录 一.CV中的Transformer介绍 二.Attention机制增强CNN 前言: 1. Attention Augmented Convolutional Networks(ICCV 201 ...

  3. 什么是注意力机制?注意力机制的实现步骤

    我们观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的),是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断,而并非是从头到尾的观察一遍事物后,才能有判断结果,正是基于这样 ...

  4. 注意力机制(一):注意力提示、注意力汇聚、Nadaraya-Watson 核回归

    专栏:神经网络复现目录 注意力机制 注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分.在自然语言处理 ...

  5. 注意力机制之注意力分数

    目录 注意力分数 扩展到高维 加性注意力 scaled 点积注意力 总结 代码 注意力分数 注意力分数和注意力权重的区别: 扩展到高维 这里,q的数量和key-value对的数量可以不一致.q,k,v ...

  6. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)

    PART0:OS,这货到底是个啥? OS,是个啥? OS的结构们: 存储器: 存储器的层次结构: 内存:我们的程序和数据都是存储在内存,我们的程序和数据都是存储在内存,每一个字节都对应一个内存地址.内 ...

  7. java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍

    本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...

  8. 【干货】APP产品处理加载机制和刷新机制的交互方法解析

    外行人对交互设计的第一印象是什么?画线框图的?做草稿的? 的确,大家所看到交互设计师的日常工作成果都是一些线框图,从表面上理解的确是这样. 其实,交互设计师做的远远不止这些.往深一步想,信息架构.界面 ...

  9. namenode和datanode工作机制_Hadoop的namenode的管理机制,工作机制和datanode的工作原理...

    HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...

最新文章

  1. iptables防火墙策略
  2. linux下 发布qt程序,Linux下发布qt程序
  3. U3D physics总结
  4. 双向TVS管 30KP42CA
  5. ES6生成器函数generator
  6. ProcessStartInfo 例子
  7. ❀❀ 名词解释(PM、PD、UE、UI、RD....)
  8. Hibernate中的HQL语言
  9. 转:如何在Ubuntu系统下安装使用LaTeX
  10. Matlab论文插图绘制模板第19期—散点折线图
  11. 色彩校正中的Gamma(人眼亮度感应的非线性)
  12. arduino智能闹钟_要写一个Arduino的电子闹钟程序,板子是Arduino UNO,和一个实时钟的芯片DS1307,开发环境是Arduino-1.0.2...
  13. 数据库期末考试(考点以及相关概念整理)
  14. 前端开发之走进Vue.js(入门者看过来)
  15. 黑马程序员--typedef关键字和结构体 枚举类型
  16. 从FASTA文件中批量提取指定序列【Python脚本】
  17. 临时牙冠为何选择用3D打印来制作?
  18. Web程序设计-JavaBean的使用
  19. 511遇见易语言重定义数组和复制数组
  20. Kubernetes安装和试用

热门文章

  1. linux shell if
  2. ubuntu下vim语法高亮问题
  3. lucene中对不同的域使用不同的分析器
  4. C#做的一个加密/解密的类
  5. Depth-first Search深度优先搜索专题1
  6. 【模板】最新空web.xml模板
  7. android.9背景图变形,Android聊天背景图片变形解决方案
  8. 富士通台式电脑_电脑bios怎么进入-电脑bios进入方法介绍
  9. html怎么在字体中加波浪线,CSS3实现文字波浪线效果
  10. 微信小程序php实现登陆的代码,微信小程序实现微信登录