论文名称:SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks

作者:Lingxiao Yang, Ru-Yuan Zhang, Lida Li, Xiaohua Xie

Code:https://github.com/ZjjConan/SimAM

介绍

本文提出了一种简单有效的3D注意力模块,基于著名的神经科学理论,提出了一种能量函数,并且推导出其快速解析解,能够为每一个神经元分配权重。主要贡献如下:

  • 受人脑注意机制的启发,我们提出了一个具有3D权重的注意模块,并设计了一个能量函数来计算权重;
  • 推导了能量函数的封闭形式的解,加速了权重计算,并保持整个模块的轻量;
  • 将该模块嵌入到现有ConvNet中在不同任务上进行了灵活性与有效性的验证。

相关工作

就目前而言,网络表达能力的提升主要体现在两个方面:网络结构注意力模块

网络结构:从AlexNet到VGG再到ResNet越来越深的网络堆叠结构,或是GoogLeNet等更宽的结构赋予了网络更强的表达能力,也有相当多的工作使用AutoML来避免人工设计。

然而,作者的目标是设计一个轻量级的即插即用的模块以应用于各种任务,而无需对网络结构做出较大的改变

注意力模块

以SENet为代表的通道注意力模块或是一些空间注意力模块,虽然取得了不错的效果,但是其计算权重的算法多是人工设计,需要大量的计算量,当然也有一些模块受到神经科学的启发。

局限性:对于通道注意力/空间注意力来说,他们往往只是对不同通道/位置区别对待,而对所有的位置/通道同等对待;并且其往往需要额外的子网络来生成权重。

方法

作者认为注意机制的实现应该遵循神经计算中的一些统一原则。因此,基于一些成熟的神经科学理论提出了一种新的方法。

在视觉神经学中,那些信息量(most informative)最大的神经元通常与周围神经元拥有不同的放电模式。

同时,一个活跃的神经元也可能一直周围的神经元活动,这种现象被称为”空间抑制“。

换言之,在视觉中,表现出明显空间一直效应的神经元应该被赋予更高的重要性,而找到这些神经元的最简单方式就是测量一个目标神经元与其他神经元之间的线性可分性。

能量函数

基于以上科学发现,提出了以下的能量函数(公式来源参考):
et(wt,bt,y,xi)=(yt−t^)2+1M−1∑i=1M−1(y0−x^i)2.(1)e_t(w_t,b_t,\mathbf{y},x_i) = (y_t-\hat{t})^2+\frac{1}{M-1}\sum_{i=1}^{M-1}(y_0-\hat{x}_i)^2.\tag{1} et​(wt​,bt​,y,xi​)=(yt​−t^)2+M−11​i=1∑M−1​(y0​−x^i​)2.(1)
ttt和xix_ixi​是输入X∈RC×H×WX\in \mathbb{R}^{C\times H\times W}X∈RC×H×W中单通道上的目标神经元和其他神经元

t^=wtt+bt\hat{t}=w_tt+b_tt^=wt​t+bt​和x^i=wtxi+bt\hat{x}_i=w_tx_i+b_tx^i​=wt​xi​+bt​是ttt和xix_ixi​的线性变换,wtw_twt​和btb_tbt​分别代表线性变换的权重和偏置

iii是空间维度上的索引,M=H×WM=H\times WM=H×W代表该个通道上神经元的个数

(1)(1)(1)式中的所有量都是标量,当yt=t^y_t=\hat{t}yt​=t^和所有xi=yox_i=y_oxi​=yo​时取得最小值,其中,yty_tyt​和yoy_oyo​是两个不同的值

求解(1)(1)(1)式的最小值等价于求解目标神经元和其他所有神经元之间的线性可分性

简便起见,使用二值标签,即yt=1yo=−1y_t=1\quad y_o=-1yt​=1yo​=−1,并且添加了正则项,则最终的能量函数如下:
et(wt,bt,y,xi)=1M−1∑i=1M−1(−1−(wtxi+bt))2+(1−(wtt+bt))2+λwt2.(2)e_t(w_t,b_t,\mathbf{y},x_i) = \frac{1}{M-1}\sum_{i=1}^{M-1}(-1-(w_tx_i+b_t))^2+(1-(w_tt+b_t))^2+\lambda w_t^2.\tag2 et​(wt​,bt​,y,xi​)=M−11​i=1∑M−1​(−1−(wt​xi​+bt​))2+(1−(wt​t+bt​))2+λwt2​.(2)

公式的来源应该是SVM,将当前神经元设置为正类,其余神经元设置为负类,来衡量他们之间的差异性。

解析解

理论上, 每个通道拥有MMM个能量函数,逐一求解是很大的计算负担

幸运的是,可以获得(2)(2)(2)的闭式解(即解析解),如下:
wt=−2(t−μt)(t−μt)2+2σt2+2λ,(3)w_t=-\frac{2(t-\mu_t)}{(t-\mu_t)^2+2\sigma_t^2+2\lambda},\tag3 wt​=−(t−μt​)2+2σt2​+2λ2(t−μt​)​,(3)
bt=−12(t−μt)wt.(4)b_t=-\frac{1}{2}(t-\mu_t)w_t.\tag4 bt​=−21​(t−μt​)wt​.(4)

其中μt=1M−1∑i=1M−1xi\mu_t=\frac{1}{M-1}\sum_{i=1}^{M-1}x_iμt​=M−11​∑i=1M−1​xi​,σt2=1M−1∑i=1M−1(xi−μt)2\sigma_t^2=\frac{1}{M-1}\sum_{i=1}^{M-1}(x_i-\mu_t)^2σt2​=M−11​∑i=1M−1​(xi​−μt​)2,实际上就是该通道中除去目标神经元的均值和方差

由于解析解是在单个通道上获得的,因此可以合理假设每个通道中所有像素遵循相同的分布,最小能量即为:
et∗=4(μ2+λ)(t−μ)2+2σ2+2λ.(5)e_t^*=\frac{4(\mu^2+\lambda)}{(t-\mu)^2+2\sigma^2+2\lambda}.\tag5 et∗​=(t−μ)2+2σ2+2λ4(μ2+λ)​.(5)
能量越低,神经元t与周围神经元的区别越大,重要性越高。因此,神经元的重要性可以通过1/et∗1/e_t^*1/et∗​得到。

根据以往的神经学研究,哺乳动物大脑中的注意力调节通常表现为神经元反应的增益效应,因此使用放缩运算而非加法来实现加权:
X~=sigmoid(1E)⊗X,(6)\widetilde{X}=sigmoid(\frac{1}{E})\otimes X,\tag6 X=sigmoid(E1​)⊗X,(6)
同时sigmoidsigmoidsigmoid函数还可以限制EEE中的过大值,并且不会影响每个神经元的相对重要性

Pytorch代码为:

def forward(X,lambda):n = X.shape[2] * X.shape[3] - 1d = (X - X.mean(dim=[2,3])).pow(2)v = d.sum(dim=[2,3])/nE_inv = d / (4 * (v + lambda)) +0.5return X * torch.sigmoid(E_inv)

实验

在各类任务上都取得了相当好的效果。

SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks相关推荐

  1. AW-Convlution:An Attention Module for Convolutional Neural Networks

    AW-Convlution 文章目录 AW-Convlution 参考 创新点 问题&思想描述 模块结构 实验结果 参考 原文 Xception: Deep Learning with Dep ...

  2. 论文阅读——ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

    ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 改进版通道注意力 from CVPR2020 期 ...

  3. SA-NET: SHUFFLE ATTENTION FOR DEEP CONVOLUTIONAL NEURAL NETWORKS

    论文地址:https://arxiv.org/pdf/2102.00240.pdf Github地址:https://github.com/wofmanaf/SA-Net/blob/main/mode ...

  4. Attention和增强RNN (Attention and Augmented Recurrent Neural Networks)

    原文: Attention and Augmented Recurrent Neural Networks 递归神经网络是一种主流的深度学习模型,它可以用神经网络模型来处理序列化的数据,比如文本.音频 ...

  5. 论文那些事—DeepFool: a simple and accurate method to fool deep neural networks

    DeepFool: a simple and accurate method to fool deep neural networks 1.摘要及背景 提出Deepfool算法,对比FGSM和I-BL ...

  6. Paying More Attetion to Attention:Improving the Performance of Convolutional Neural Networks via AT

    Paying More Attetion to Attention:Improving the Performance of Convolutional Neural Networks via Att ...

  7. 意图识别算法:噪音处理之O2U-Net: A Simple Noisy Label Detection Approach for Deep Neural Networks

    目录 问题描述 解决思路 具体过程 预训练阶段 Cyclical Training阶段 clean dataset训练阶段 实验结果 论文下载:O2U-Net: A Simple Noisy Labe ...

  8. 14.EPSANet: An Efficient Pyramid Squeeze Attention Block on Convolutional Neural Network(2021.3)

    题目:卷积神经网络上的高效金字塔挤压注意块 论文地址:https://arxiv.org/abs/2105.14447 摘要:最近,研究表明,在深度卷积神经网络中嵌入注意力模块可以有效提高其性能.在这 ...

  9. [cs231n][Module 1: Neural Networks] Image Classification

    原文:[image classification notes]. 翻译:图像分类笔记(上)(下). cs231n课程中的一篇介绍性教程,以下为阿幻的学习笔记: 照例,先摘个大纲: Intro to I ...

最新文章

  1. VC实用小知识总结 (一),转http://blog.csdn.net/myiszjf/article/details/10007431
  2. Svn 笔记—— Hooks
  3. LeetCode实战:最长公共前缀
  4. H5实例教学--微信内嵌视频1(案例浅析)
  5. 干货:调度算法的价值与阿里的应用实践(内有赛事福利)
  6. G1垃圾收集器深度剖析
  7. 【李宏毅机器学习】Logistic Regression 逻辑回归(p11) 学习笔记
  8. python困境_学习 Python 编程的三种困境
  9. 数据平面可编程与SDN关系理解,以及数据平面可编程的理解
  10. GridView跨页面多选
  11. 洛谷p3764签到题3
  12. 张张催人泪下 图说“工人阶级”的心酸谋生路
  13. 阿里P9专家:程序员未来职业发展路线
  14. 【LEDE】树莓派上玩LEDE终极指南-95-Aria2不能下载https的解决方法
  15. python作图——线型图,饼形图
  16. 云从科技上市后首份财报:半年营收3.9亿 同比降14% 净亏3.25亿
  17. 辽宁聚能合创:抖音蓝色粉丝牌是什么等级?
  18. Linux网络之DHCP
  19. python 日历壁纸_Excel+Python=精美DIY壁纸日历
  20. 如何提高或者修改WiFi发射功率

热门文章

  1. Word修订模式:打字输入很慢怎么办?
  2. Xmind 2022 Mac思维导图软件
  3. 基于spring+springmvc+mybatis的个人简易记账系统(包含数据库)
  4. 项目管理工具之甘特图
  5. 当用户用input() 函数输入演员名字在屏幕 上打印出xx出演电影xx
  6. html网页宽度自动适应手机屏幕
  7. 马尔科夫链模型状态转移矩阵
  8. html文字段落缩进,CSS text-indent段落首行文字缩进分享
  9. 跨越技术鸿沟:从TCPIP到NDN
  10. 摩斯密码Java/Python实现