目录

背景

1. Attention Function

2. Scaled Dot-Product Attention

3. Multi-attention --> Q, K=V

4. self-attention --> Q=K=V

5. Transformer

6. softmax function

参考


背景

Attention机制的本质来自于人类视觉注意力机制。人们视觉在感知东西的时候一般不会是一个场景从到头看到尾每次全部都看,而往往是根据需求观察注意特定的一部分。而且当人们发现一个场景经常在某部分出现自己想观察的东西时,人们会进行学习在将来再出现类似场景时把注意力放到该部分上

Attention机制最早是在视觉图像领域提出来的,应该是在九几年思想就提出来了,但是真正火起来应该算是2014年google mind团队的这篇论文《Recurrent Models of Visual Attention》,他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是第一个将attention机制应用到NLP领域中。接着attention机制被广泛应用在基于RNN/CNN等神经网络模型的各种NLP任务中。2017年,google机器翻译团队发表的《Attention is all you need》中大量使用了自注意力(self-attention)机制来学习文本表示。自注意力机制也成为了大家近期的研究热点,并在各种NLP任务上进行探索。下图为attention研究进展的大概趋势。

1. Attention Function

Attention function can be described as mapping a query and a set of key-value pairs to an output.

在计算attention时主要分为三步,第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;然后第二步一般是使用一个softmax函数对这些权重进行归一化;最后将权重和相应的键值value进行加权求和得到最后的attention。目前在NLP研究中,key和value常常都是同一个,即key=value

2. Scaled Dot-Product Attention

scaled dot-Product attention就是我们常用的使用点积进行相似度计算的attention,只是多除了一个(为K的维度)起到调节作用,使得内积不至于太大

3. Multi-attention --> Q, K=V

head:Query,Key,Value首先进过一个线性变换,然后输入到放缩点积attention,注意这里要做h次,其实也就是所谓的多头,每一次算一个头。而且,每次线性变换的w是不一样的。然后将h次的放缩点积attention结果进行拼接,再进行一次线性变换得到的值作为多头attention的结果。

可以允许模型在不同的表示子空间里学习到相关的信息。

4. self-attention --> Q=K=V

single sequence:每个序列中的单元和该序列中所有单元进行attention计算。

目的是学习句子内部的词依赖关系,捕获句子的内部结构

5. Transformer

《Attention is all you need》

该论文模型的整体结构如下图,还是由编码器和解码器组成,在编码器的一个网络块中,由一个多头attention子层和一个前馈神经网络子层组成,整个编码器栈式搭建了N个块。类似于编码器,只是解码器的一个网络块中多了一个多头attention层。为了更好的优化深度网络,整个网络使用了残差连接和对层进行了规范化(Add&Norm)。

这篇论文主要亮点在于1)不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,该论文用attention机制代替了RNN搭建了整个模型框架。2)提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-attention)。3)在WMT2014语料中的英德和英法任务上取得了先进结果,并且训练速度比主流模型更快。

--> Why self-attention?

论文中提到主要从三个方面考虑(每一层的复杂度,是否可以并行,长距离依赖学习),并给出了和RNN,CNN计算复杂度的比较。可以看到,如果输入序列n小于表示维度d的话,每一层的时间复杂度self-attention是比较有优势的。当n比较大时,作者也给出了一种解决方案self-attention(restricted)即每个词不是和所有词计算attention,而是只与限制的r个词去计算attention。在并行方面,多头attention和CNN一样不依赖于前一时刻的计算,可以很好的并行,优于RNN。在长距离依赖上,由于self-attention是每个词和所有词都要计算attention,所以不管他们中间有多长距离,最大的路径长度也都只是1。可以捕获长距离依赖关系。

6. softmax function

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的Softmax值就是

softmax层只是对神经网络的output layer的输出结果进行了一次换算,将输出结果用概率的形式表现出来。

参考

自然语言处理中的自注意力机制(Self-attention Mechanism)

为什么是SoftMax?

注意力机制~Attention Mechanism相关推荐

  1. 注意力机制Attention Mechanism及论文

    注意力机制Attention Mechanism Q,K,V 注意力分数 seq2seq中注意力机制的应用 注意力机制源于对人类视觉的研究.在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息 ...

  2. 计算机视觉中的注意力机制--attention mechanism

    转载:https://zhuanlan.zhihu.com/p/56501461 张戎 引言 在机器翻译(Machine Translation)或者自然语言处理(Natural Language P ...

  3. 图像处理注意力机制Attention汇总(附代码)

    原文链接: 图像处理注意力机制Attention汇总(附代码,SE.SK.ECA.CBAM.DA.CA等) 1. 介绍 注意力机制(Attention Mechanism)是机器学习中的一种数据处理方 ...

  4. 注意力机制(Attention)最新综述论文及相关源码

    来源:专知 注意力机制(Attention)起源于模仿人类的思维方式,后被广泛应用于机器翻译.情感分类.自动摘要.自动问答等.依存分析等机器学习应用中.专知编辑整理了Arxiv上一篇关于注意力机制在N ...

  5. 注意力机制Attention详解

    注意力机制Attention详解 一.前言 2018年谷歌提出的NLP语言模型Bert一提出,便在NLP领域引起热议,之所以Bert模型能够火出圈,是由于Bert模型在NLP的多项任务中取得了之前所有 ...

  6. 神经网络注意力机制--Attention in Neural Networks

    Attention in Neural Networks and How to Use It http://akosiorek.github.io/ml/2017/10/14/visual-atten ...

  7. 注意力机制 Attention

    注意力机制 前沿 注意力 认知神经学中的注意力 人工神经网络中的注意力机制 HAN(Hierarchical Attention Networks) Bi-LSTM + Attention + ten ...

  8. 序列到序列网络seq2seq与注意力机制attention浅析

    序列到序列网络 序列到序列网络(Sequence to Sequence network),也叫做seq2seq网络, 又或者是编码器解码器网络(Encoder Decoder network), 是 ...

  9. VALSE学习(四):注意力机制-Attention Network

    VALSE2019 会议论文 一.精细化图像理解与多媒体内容创作 Trilinear Attention Sampling Network 近年来,精细化图像识别任务通常采用具有"注意力&q ...

  10. 论文阅读: 图像分类中的注意力机制(attention)

    本文简要总结一下attention机制在图像分类任务中的应用.attention作为一种机制,有其认知神经或者生物学原理: 注意力的认知神经机制是什么? 如何从生物学的角度来定义注意力? 在计算机视觉 ...

最新文章

  1. 嵌入式学习笔记之三 (uboot我来看)
  2. Nature 子刊:三代测序的DNA提取和宏基因组学分析
  3. max7456 C语言,用于MAX7456随屏显示器SPI
  4. 多项式概率分布(Multinomial probability distribution)和分类分布(categorical distribution)
  5. 移动端popstate的怪异行为
  6. MS SQLServer2000中在还原备份文件时出现的奇怪问题.
  7. 自定义 VIEW 截图 保存到图库 并分享
  8. Android属性动画 Interpolator
  9. android活动开始,android – 点击谷歌地图标记infoWindow开始活动
  10. linux 文件系统 xfs、ext4、ext3 的区别
  11. Mysql 查询当月时间数据
  12. Java api监控_网站api监控、api监控教程详解
  13. numpy 的三角函数运算
  14. 医院管理源码 排队叫号管理源码
  15. 常用算法解析------二分法
  16. Android--CardView详解
  17. 海大C程序期末上机题库20道
  18. 单片机学习入门 我们应该这样学习单片机
  19. MySQL调优之性能分析
  20. XM6748F-IDK TMS320C6748+FPGA高速数据采集处理平台

热门文章

  1. win10下使用python访问vmbox中的redis
  2. Python第一弹--------初步了解Python
  3. MySql链接字符串 各种程序连接大合集(包括asp.net,c#,等等)
  4. 使用 IIS Manager 对 Windows Azure 网站进行远程管理
  5. 在融通一年多来,海哥一直在分享看过的比较不错的文章,借花献佛下
  6. WatiN——Web自动化测试(三)【弹出窗口处理】
  7. 战胜 Flash ,HTML5 还需要什么?
  8. secureCRT脚本----vbs语法
  9. 剑指offer:表示数值的字符串cpp题解:指针
  10. GRE核心词汇助记与精练-List8倒、流