umich cv-6-2 注意力机制
这节课中介绍了循环神经网络的第二部分,主要引入了注意力机制,介绍了注意力机制的应用以及如何理解,在此基础上建立了注意力层以及transformer架构
注意力机制
上次我们没有提到sequence to sequence的RNN结构:

以文字翻译应用为例,我们可以看到它由编码器与解码器组成,先是将我们要翻译的句子拆分成一个个输入向量,和之前vanilla架构做的事情一样,经过权重矩阵不断生成新的隐藏层,最终得到最初的解码状态与一个上下文向量,相当于把原始的信息都编码到这两个结果之中,然后解码器再利用上下文向量与s,不断生成新的s,同时将输出的y作为新输入向量。
但是这种结构的问题在于解码器使用的是同一个固定大小的上下文向量,当我们这个输入向量很长很长,比如有1000或者10000时,那么此时一个上下文向量很难去存储所有的编码信息。
我们可以想到,如果,我们为解码器的每一层都创建一个上下文向量,就可以解决上述问题,这就引入了注意力机制:

我们使用一个全连接网络计算s与不同隐藏层之间的匹配程度,得到e11,e12......,然后再经过一个softmax,得到一个概率分布a11,a12.....,我们可以用这个概率分布去对隐藏层进行线性组合,这样就产生了第一个上下文向量,这些权重就被称为注意力权重
这里的直觉是不同的上下文向量可以去关注输入向量最匹配的部分,从而去理解不同部分的信息
然后我们将上述部分扩大成循环形式即可,之前是用s0生成c1,然后我们用s1生成c2,再用c2计算s2与y2:

我们将上述结构引用到语言翻译中,并且可视化注意力权重的结果:

可以看到对角线上重合的说明这些英语单词与法语单词是按照顺序相对应的,中间有一部分虽然英语与法语单词不是按照顺序对应,但是注意力机制也还是发现了它们之间的关系,红色部分就是对应出现错误的部分
应用与理解
我们其实可以发现注意力机制并不关心输入向量以及隐藏层是否按照顺序,这种性质可以使它应用到更广泛的领域:

我们可以将隐藏层替换为使用cnn从图像中提取的特征图,应该注意力机制,我们可以关注图像的不同区域,并且将不同区域翻译为对应的语言:

这里的理解是注意力机制很像人的眼睛,因为人眼只有在某些方向上才能看清,所以我们的眼睛看东西的时候经常处于运动扫视的状态,和注意力机制关注在不同的step关注不同的区域很像:

注意力层
引入了注意力机制,我们自然想能够把其抽象为更模块化的注意力层,这样我们就能够将其嵌入到不同的神经网络之中
我们先理解一下注意力层中的三个重要概念:查询,键,与值(下图来自沐神ai):

注意力层相较于我们之前的结构主要有三个变化:
首先是我们要将之前的全连接层判断相似性换成点积,并且是控制大小的点积,回忆softmax函数的性质,显然过大的数字会导致梯度消失:

其次是我们要引入多个查询向量:

最后由于之前输入向量组X有两个作用,一个是计算key,一个是计算最终输出结果的value,我们可以将其分开,通过引入两个可学习的矩阵,分别计算key vector与value vector:

更进一步地,我们可以定义查询向量组也由x得到,这样我们就有了key matrix value matrix与query matrix三个可学习矩阵

同时我们也可以发现,交换输入向量的顺序,输出向量顺序也会改变:

注意力层还有很多变体,比如masked attention layer,把相似矩阵中的某些值设置为无穷小,这样能够屏蔽掉某些输入向量的影响,使得我们的输出值只与之前的某些输入有关:

多头注意力层,我们可以使用不同的可学习的权重矩阵得到不同的注意力对应的输出,再将它们拼接在一起,这样可以帮助我们关注输入的不同部分,同时也有利于并行计算

卷积神经网络与注意力层结合:

transformer
利用注意力层我们就可以去构建transformer结构:

输入向量先经过注意力层,经过layer normalization,每个标准化的向量经过不同的mlp,再经过layer normalization输出,同时在适当的地方加入残差连接
将上述的transformer block多个拼接起来,我们就得到了仅仅使用注意力机制的transformer架构(常常使用多头注意力):

使用迁移学习,我们可以训练transformer架构,并且将其应用到nlp领域的任务:

umich cv-6-2 注意力机制的更多相关文章
- Non-local Neural Networks 原理详解及自注意力机制思考
Paper:https://arxiv.org/abs/1711.07971v1 Author:Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming ...
- CVPR2021| 继SE,CBAM后的一种新的注意力机制Coordinate Attention
前言: 最近几年,注意力机制用来提升模型性能有比较好的表现,大家都用得很舒服.本文将介绍一种新提出的坐标注意力机制,这种机制解决了SE,CBAM上存在的一些问题,产生了更好的效果,而使用与SE,CBA ...
- (转)注意力机制(Attention Mechanism)在自然语言处理中的应用
注意力机制(Attention Mechanism)在自然语言处理中的应用 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html 近年来,深度 ...
- 注意力机制(Attention Mechanism)在自然语言处理中的应用
注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了 ...
- 自然语言处理中的自注意力机制(Self-attention Mechanism)
自然语言处理中的自注意力机制(Self-attention Mechanism) 近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中,之前我对早期注意力 ...
- TensorFlow LSTM 注意力机制图解
TensorFlow LSTM Attention 机制图解 深度学习的最新趋势是注意力机制.在接受采访时,现任OpenAI研究主管的Ilya Sutskever提到,注意力机制是最令人兴奋的进步之一 ...
- 深度学习之注意力机制(Attention Mechanism)和Seq2Seq
这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容: 1.注意力机制是为了解决什么问题而提出来的? 2.软性注意力机制的数学原理: 3.软性注意力机制. ...
- Pytorch系列教程-使用Seq2Seq网络和注意力机制进行机器翻译
前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutor ...
- DeepLearning.ai学习笔记(五)序列模型 -- week2 序列模型和注意力机制
一.基础模型 假设要翻译下面这句话: "简将要在9月访问中国" 正确的翻译结果应该是: "Jane is visiting China in September" ...
- AAAI2018中的自注意力机制(Self-attention Mechanism)
近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中.随着注意力机制的深入研究,各式各样的attention被研究者们提出,如单个.多个.交互式等等.去年 ...
随机推荐
- Code Generate 代码生成器 V1.0
Code Generate V1.0 代码生成器 根据配置的模板,根据建表语句,生成Code. 例如java代码.vue代码.jsp代码以及html代码等等,均可根据自己的代码写作习惯进行配置. 缺点 ...
- 备份Ubunut已安装的软件包并在新的Ubuntu 系统上恢复
0.查看已安装列表 dpkg -L xxxx.deb 1.备份 安装apt-clone: $sudo apt-get install apt-clone 提供一个保存备份文件的位置.我们在 /back ...
- 安装deb包
输入命令: sudo dpkg -i file.deb
- CSS3属性 2D转换
* { margin: 0; padding: 0 } table { border-spacing: 0; border-collapse: collapse; margin: 10px auto ...
- 详细讲解原生js拖拽
场景描述 今天遇见一个问题,那就是产品希望在弹出来的窗口. 可以移动这个弹窗的位置 增加用户体验,我们直接使用的element-ui中的 Dialog 对话框 我们现在需要拖拽标题,移动元素位置 元素 ...
- 使用DWS集群,用户被锁定如何解锁
本文分享自华为云社区<[如何保证你的DWS数据更安全]使用DWS集群,用户被锁定如何解锁?>,作者:Shirley_Dou . 一.管理员用户被锁定,怎么破?gsql: FATAL: Th ...
- Stack Overflow开发者调查发布:AI将如何协助DevOps
Stack Overflow 发布了开创性的2023年度开发人员调查报告 [1].报告对 90,000 多名开发人员进行了调查,全面展示了当前软件开发人员的体验.接下来,本文将重点介绍几项重要发现,即 ...
- Python连接Neo4j工具比较 Neo4j Driver、py2neo
Python有许多可以连接Neo4j的库和工具,以下是一些常用的: Neo4j Driver for Python 这是官方提供的Python驱动程序,它使用Cypher查询语言与Neo4j数据库进行 ...
- 大企业才用的分布式唯一Id,它比GUID好
支持.Net Core(2.0及以上)与.Net Framework(4.5及以上) 可以部署在Docker, Windows, Linux, Mac. 分布式唯一Id,顾名思义,是指在全世界任何一台 ...
- IOS苹果应用IPA重签名软件手机版(苹果重签名,企业签名,安卓苹果平台,时间控制)
软件简介 IOS苹果应用IPA重签名软件手机版,可以在安卓或者苹果手机上,苹果应用IPA文件重新签名,无需MAC苹果电脑和配置XCODE开发环境,便可以直接对IPA文件进行签名,签名在本地进行,不消耗 ...