注意力(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)机制概述相关推荐

  1. 通道注意力机制 cnn keras_【CV中的Attention机制】简单而有效的CBAM模块

    前言: CBAM模块由于其使用的广泛性以及易于集成得到很多应用.目前cv领域中的attention机制也是在2019年论文中非常火.这篇cbam虽然是在2018年提出的,但是其影响力比较深远,在很多领 ...

  2. 通道注意力机制_即插即用,Triplet Attention机制让Channel和Spatial交互更加丰富(附开源代码)...

    ↑ 点击蓝字 关注极市平台作者丨ChaucerG来源丨AI人工智能初学者编辑丨极市平台 极市导读 本文介绍了一种新的注意力机制--Triplet Attention,它通过使用Triplet Bran ...

  3. Attention机制理解笔记(空间注意力+通道注意力+CBAM+BAM)

    Attention机制理解笔记 声明 Attention分类(主要SA和CA) spitial attention channel attention SA + CA(spitial attentio ...

  4. seq2seq与Attention机制

    学习目标 目标 掌握seq2seq模型特点 掌握集束搜索方式 掌握BLEU评估方法 掌握Attention机制 应用 应用Keras实现seq2seq对日期格式的翻译 4.3.1 seq2seq se ...

  5. 一文看懂 Bahdanau 和 Luong 两种 Attention 机制的区别

    来自 | 知乎  作者 | Flitter 链接 | https://zhuanlan.zhihu.com/p/129316415 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系 ...

  6. 干货|理解attention机制本质及self-attention

    点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 上一篇,我们讲述了attention的知识,这篇接上篇,更加深入的理 ...

  7. 「NLP」 聊聊NLP中的attention机制

    https://www.toutiao.com/i6716536091681227267/ 本篇介绍在NLP中各项任务及模型中引入相当广泛的Attention机制.在Transformer中,最重要的 ...

  8. 什么是Attention机制以及Pytorch如何使用

    文章目录 前言 注意力概况 标准注意力 变种注意力 QKV 应用 前言 看了网上大部分人做的,都是说一个比较长的项目(特别是机器翻译的多).其实没有必要,很多人并不是想看一个大项目,只是想看看怎么用, ...

  9. 理解LSTM/RNN中的Attention机制

    转自:http://www.jeyzhang.com/understand-attention-in-rnn.html,感谢分享! 导读 目前采用编码器-解码器 (Encode-Decode) 结构的 ...

最新文章

  1. Spring的控制反转以及依赖注入,控制反转使程序具有高拓展性。
  2. c语言 rand_C语言随机数
  3. 复杂对象的组装与创建——建造者模式
  4. 从方法返回Java 8的可选项时的注意事项
  5. 工业交换机安全性能的必要性
  6. 使用PHP管理SQL
  7. 前端学习(2475):表单数据绑定处理
  8. Linux编译dhcpd,linux中搭建dhcpd服务器
  9. 剑指offer:8-11记录
  10. 图论 —— 生成树 —— 最小生成树 —— Prim
  11. 平面设计师常用的网站|素材路上
  12. iview-cli 设置跨域代理服务器
  13. python信用评分卡_基于Python的信用评分卡模型分析(二)
  14. pytroch model??(查看官方模型写法)
  15. 如何优雅的定义 App 的界面设计
  16. 密歇根州立大学联合领英提出基于AutoML的Embedding框架AutoDim
  17. 大数据处理的四大步骤
  18. Coodeforces 585D Lizard Era: Beginning (折半搜索)
  19. 2021年,学UI设计还吃香吗?
  20. Python笔记 · Python语言的“动态性”

热门文章

  1. 判断某年某月有多少天(C语言)
  2. 语音识别补充(一)(音素,三音素)
  3. ubuntu 14.04系统安装 Understand
  4. 布朗大学计算机科学案例,常青藤盟校经典案例之——布朗大学
  5. 华中科技大学校长李培根演讲稿
  6. C语言里字符串的解析
  7. decimal 高精度运算
  8. 吸尘器主要原理及功能
  9. 2018中国传媒人才需求报告
  10. (一)、通信技术的基本概念