深度残差收缩网络:(四)注意力机制下的阈值设置
对于基于深度学习的分类算法,其关键不仅在于提取与标签相关的目标信息,剔除无关的信息也是非常重要的,所以要在深度神经网络中引入软阈值化。阈值的自动设置,是深度残差收缩网络的核心贡献。需要注意的是,软阈值化中的阈值,需要满足一定的条件。这篇文章中的阈值设置,事实上,是在注意力机制下进行的。下面分别介绍阈值需要满足的条件、注意力机制以及具体的阈值设置方法。
(1)阈值需要满足的条件
在软阈值化中,阈值的取值有一定的要求:首先,阈值必须是正数;其次,阈值不能太大,否则输出会全部为零。
更重要的是,每个样本,应该有不同的阈值。这是因为,许多样本所含的噪声量经常是不同的。
例如,样本A所含噪声较少,样本B所含噪声较多。那么,在降噪算法里面,样本A的阈值就应该大一点,样本B的阈值就应该小一些(不要搞反)。在深度学习算法里,由于这些特征没有明确的物理意义,阈值的大小也无法得到解释。但是道理是相通的,即每个样本应该有不同的阈值。
(2)注意力机制
注意力机制可以从视觉的角度进行解释。人类能够通过快速扫描图像,发现目标物体,进而将更多的注意力集中在目标物体上,以捕获更多细节,同时抑制其他区域的无关信息。
其实就是不同的样本得到不同的阈值,然后一个样本的不同通道拥有不同的权重
Squeeze-and-Excitation Network(SENet)是一种典型的带有注意力机制的深度学习方法。对于不同的样本,不同通道上的特征,在分类任务中的重要程度,经常是不同的。SENet可以学习一组权重,自动地调整不同通道的特征的大小。这个过程,就相当于施加不同的注意力在各个通道的特征上(见下图)。
需要注意的是,每个样本,都有自己独特的一组权重。任意两个样本,它们的这些权重,都是不同的。在SENet中,具体的网络结构如下图所示。学习权重的路径就是,全局池化→全连接层→ReLU→全连接层→Sigmoid。
(3)具体的阈值设置方法
深度残差收缩网络采用了一个子网络来自动地设置阈值。这个子网络的结构,就借鉴了上述的SENet。
首先来看“通道之间共享阈值的深度残差收缩网络(Deep Residual Shrinkage Networks with Channel-shared Thresholds,简称DRSN-CS)”。我们可以看到,在红色虚线框里的子网络,学习得到了一个阈值,应用在特征图的所有通道上。
在这个子网络中,首先对输入特征图内的所有元素,取绝对值。
然后经过全局均值池化(Global Average Pooling, GAP)和求平均(Average),就得到了一个特征。为了方便描述,将这个特征记为A。
在另一条路径中,全局均值池化之后的特征,输入到一个小型的全连接网络之中。这个全连接网络以一个Sigmoid激活函数作为最后一步,其目的在于将输出调整到0和1之间,记为α。最终的阈值就是α×A。
这样的话,阈值就是,一个0和1之间的数字×特征图的绝对值的平均值。通过这种方式,保证了阈值不仅为正数,而且不会太大。
然后再看“逐通道不同阈值的深度残差收缩网络(Deep Residual Shrinkage Networks with Channel-wise Thresholds,简称DRSN-CW)”。与上述的DRSN-CS相似,在红色虚线框里的子网络,学习得到了一组阈值。以相同的方式,确保了阈值有着合适的取值范围。
值得指出的是,通过这种方式,不同的样本就有了不同的阈值。在一定程度上,也可以理解为一种注意力机制:注意到不重要的特征,将它们剔除掉;或者说,注意到重要的特征,将它们保留下来。另外,虽然跨层的恒等路径(Identity shortcut)将不重要的特征也传递到了高层特征中,但是通过很多残差模块的堆叠,这些不重要的特征所占的比重越来越低,最终实现不重要特征的消除。
相关文章
- 使用VMware安装centos7并配置网络
- TCP常用网络和木马使用端口对照表,常用和不常用端口一览表
- docker的四种网络模式_网络模式11b/g/n什么意思
- 网络芯片CH395Q学习开发-补充-和电脑网线直连程序配置方式
- 中兴F450光猫设置桥接_电信光猫改桥接后上不了网络
- eclipse配置安卓开发环境sdk_Android 设置网络代理
- 作为网络工程师,你知道什么是VLAN 跳跃攻击吗?
- SQLServer 2012中设置AlwaysOn解决网络抖动导致的提交延迟问题
- Linux恢复网络设置:一步一步指南(linux恢复网络设置)
- Linux网络编程实战:用实例学习(linux网络编程实例)
- 设置Linux网卡命令行设置:快捷通道至网络自动化(linux网卡命令行)
- Go语言网络爬虫下载器接口
- Linux系统网络设置指南(linux系统设置网络)
- 行管理网络:Linux 命令行设置(linux设置网络命令)
- Linux网络设置指南:轻松访问外网的实用技巧(linux怎么访问外网)
- 搭建Linux内网服务器,为网络加速(linux内网服务器)
- 地址Linux网络安装之设置IP地址(linux网卡ip)
- Linux网络设置指南:快速简便的联网方法分享(linux如何联网)
- Linux网络编程中的外发包技巧与注意事项(linux外发包)
- Linux 3G 驱动:享受新的网络体验(3g linux驱动)
- Linux网络设置:如何设置网关地址(linux 网关地址)
- 如何设置Linux网络?(linux设置网络)
- Linux查看网络带宽:快速掌握网络状况(linux 带宽查看)
- 红色Redis改变网络存储模式(red redis)
- linux系统之间通过nfs网络文件系统挂载设置方法