注意力(Attention)机制概述
注意力(Attention)机制概述
1 前言
在视觉方面,注意力机制的核心思想是突出对象的某些重要特征。【从关注全部到关注重点】
注意力机制的目的可以认为是在深度神经网络的结构设计中,对某些权重添加注意力。可以理解为再增加一层权重,重要的部分这个权重设的大一点,不重要的部分设的小一点。【参数少+速度快+效果好】
视觉注意力分为几种,核心思想是基于原有的数据找到其之间的关联性,然后突出其某些重要特征,有通道注意力,像素注意力,多阶注意力等,也有把NLP中的自注意力引入。
2 常见注意力机制的基本结构
2.1 transformer
自注意力(self-attention,又称内部注意力),目的是计算序列的表达形式,与单个序列的不同位置相关的注意力机制,因为解码器的位置不变性,以及在DETR中,每个像素关注数值信息和位置信息。
Self-Attention是Transformer最核心的内容,可以理解位将队列和一组值与输入对应,即形成querry,key,value向output的映射,output可以看作是value的加权求和,加权值则是由Self-Attention来得出的。
所有编码器(encoder)结构相同,但没有共享参数。
解码器(decoder)结构由多个相同的堆叠组成。
2.2 soft-attention
属于[0,1]间的连续分布问题,更加关注区域或通道。
对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也可以叫Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权。但计算量较大。
属于确定性注意力,学习完成后可以通过网络生成,且是可微的。可以通过神经网络计算出梯度,可以通过前向传播和后向反馈来学习,得到注意力的权重。
与hard-attention区别:“hard-attention model” 选择固定数量的输入部分,而 “soft-attention model” 选择动态数量的输入部分,并将它们加权组合以生成输出。【6】hard-attention直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。另一方面,因为不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel softmax之类的)
2.2.1 空间域注意力(spatial transformer network)
将原始图片中的空间信息变换到另一个空间中并保留了关键信息。训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换被框提取出来。
2.2.2 通道注意力(Channel Attention,CA)
典型代表是SENet。卷积网络的每一层都有好多卷积核,每个卷积核对应一个特征通道。相对于spatial transformer attention机制,Channel Attention在于分配各个卷积通道之间的资源,分配粒度上比spatial transformer大了一个级别。
2.2.3 混合域模型
(1)Residual Attention Network for image classification(CVPR 2017 Open Access Repository
(2)Dual Attention Network for Scene Segmentation(CVPR 2019 Open Access Repository)
2.2.4 non-local:
指的就是感受野可以很大,而不是一个局部领域。
全连接是non-local的,且是global的。但是全连接带来了大量的参数,给优化带来困难。
2.2.5 位置注意力(position-wise attention)
在上面的DANet中,attention map计算的是所有像素与所有像素之间的相似性,空间复杂度为(HxW)x(HxW)。而position-wise attention采用了criss-cross思想,只计算每个像素与其同行同列即十字上的像素的相似性,通过进行循环(两次相同操作),间接计算到每个像素与每个像素的相似性,将空间复杂度降为(HxW)x(H+W-1)。【二阶注意力,能够从所有像素中获取全图像的上下文信息,以生成具有密集且丰富的上下文信息的新特征图。】
3 注意力机制的实现过程
3.1 结构层次
结构方面根据是否划分层次关系,分为单层attention,多层attention和多头attention:
1)单层Attention,这是比较普遍的做法,用一个query对一段原文进行一次attention。
2)多层Attention,一般用于文本具有层次关系的模型,假设我们把一个document划分成多个句子,在第一层,我们分别对每个句子使用attention计算出一个句向量(也就是单层attention);在第二层,我们对所有句向量再做attention计算出一个文档向量(也是一个单层attention),最后再用这个文档向量去做任务。
3)多头Attention,这是Attention is All You Need中提到的multi-head attention,用到了多个query对一段原文进行了多次attention,每个query都关注到原文的不同部分,相当于重复做多次单层attention:head(i)=Attention(q(i),K,V),最后再把泽泻单层Attention的结果拼起来。
3.2 模型方面
从模型上看,Attention一般用在CNN和LSTM上,也可以直接进行纯Attention计算。
yolov5+Attention【ref:[9],[10]】
3.2.1 SE
添加示例:
(1)在yolov5/models文件夹下新建yolov5s_SE.yaml
(2)将SE注意力代码添加到commom.py中
(3)将类名SE加到yolov5/models/yolo.py
(4)修改yolov5s_SE.yaml,将SE注意力加到我们需要加的位置
(5)修改train.py中的相关参数开始训练
3.2.2 CBAM
3.2.3 ECA
3.2.4 CA
3.3 其它
在做attention的时候,需要计算query和某个key的分数(相似度),常用方法有:
1)点乘
2)矩阵相乘
3)cos
4)串联将q和k拼接起来
4 常见问题:
4.1 为什么有时候添加了注意力机制精度反而下降?
大部分注意力模块是有参数的,添加注意力模块会导致模型的复杂度增加。(1)如果添加attention前模型处于欠拟合状态,那么增加参数是有利于模型学习的,性能会提高。(2)如果添加attention前模型处于过拟合状态,那么增加参数可能加剧过拟合问题,性能可能保持不变或者下降。
4.2
ref:
[1] https://zhuanlan.zhihu.com/p/146130215
[2] http://papers.nips.cc/paper/7181-attention-is-all-you-need
[3] https://zhuanlan.zhihu.com/p/48508221
[4] https://github.com/huggingface/transformers
[5] https://blog.csdn.net/xys430381_1/article/details/89323444
[6] https://www.jianshu.com/p/1a78bd494c4a
[7] https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA
[8] https://www.zhihu.com/question/478301531/answer/2280232845
[9] https://zhuanlan.zhihu.com/p/543231209
[10] https://blog.csdn.net/weixin_50008473/article/details/124590939
注意力(Attention)机制概述相关推荐
- 通道注意力机制 cnn keras_【CV中的Attention机制】简单而有效的CBAM模块
前言: CBAM模块由于其使用的广泛性以及易于集成得到很多应用.目前cv领域中的attention机制也是在2019年论文中非常火.这篇cbam虽然是在2018年提出的,但是其影响力比较深远,在很多领 ...
- 通道注意力机制_即插即用,Triplet Attention机制让Channel和Spatial交互更加丰富(附开源代码)...
↑ 点击蓝字 关注极市平台作者丨ChaucerG来源丨AI人工智能初学者编辑丨极市平台 极市导读 本文介绍了一种新的注意力机制--Triplet Attention,它通过使用Triplet Bran ...
- Attention机制理解笔记(空间注意力+通道注意力+CBAM+BAM)
Attention机制理解笔记 声明 Attention分类(主要SA和CA) spitial attention channel attention SA + CA(spitial attentio ...
- seq2seq与Attention机制
学习目标 目标 掌握seq2seq模型特点 掌握集束搜索方式 掌握BLEU评估方法 掌握Attention机制 应用 应用Keras实现seq2seq对日期格式的翻译 4.3.1 seq2seq se ...
- 一文看懂 Bahdanau 和 Luong 两种 Attention 机制的区别
来自 | 知乎 作者 | Flitter 链接 | https://zhuanlan.zhihu.com/p/129316415 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系 ...
- 干货|理解attention机制本质及self-attention
点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 上一篇,我们讲述了attention的知识,这篇接上篇,更加深入的理 ...
- 「NLP」 聊聊NLP中的attention机制
https://www.toutiao.com/i6716536091681227267/ 本篇介绍在NLP中各项任务及模型中引入相当广泛的Attention机制.在Transformer中,最重要的 ...
- 什么是Attention机制以及Pytorch如何使用
文章目录 前言 注意力概况 标准注意力 变种注意力 QKV 应用 前言 看了网上大部分人做的,都是说一个比较长的项目(特别是机器翻译的多).其实没有必要,很多人并不是想看一个大项目,只是想看看怎么用, ...
- 理解LSTM/RNN中的Attention机制
转自:http://www.jeyzhang.com/understand-attention-in-rnn.html,感谢分享! 导读 目前采用编码器-解码器 (Encode-Decode) 结构的 ...
最新文章
- Spring的控制反转以及依赖注入,控制反转使程序具有高拓展性。
- c语言 rand_C语言随机数
- 复杂对象的组装与创建——建造者模式
- 从方法返回Java 8的可选项时的注意事项
- 工业交换机安全性能的必要性
- 使用PHP管理SQL
- 前端学习(2475):表单数据绑定处理
- Linux编译dhcpd,linux中搭建dhcpd服务器
- 剑指offer:8-11记录
- 图论 —— 生成树 —— 最小生成树 —— Prim
- 平面设计师常用的网站|素材路上
- iview-cli 设置跨域代理服务器
- python信用评分卡_基于Python的信用评分卡模型分析(二)
- pytroch model??(查看官方模型写法)
- 如何优雅的定义 App 的界面设计
- 密歇根州立大学联合领英提出基于AutoML的Embedding框架AutoDim
- 大数据处理的四大步骤
- Coodeforces 585D Lizard Era: Beginning (折半搜索)
- 2021年,学UI设计还吃香吗?
- Python笔记 · Python语言的“动态性”