深度残差收缩网络(4):注意力机制下的阈值设置

简介: 对于基于深度学习的分类算法,其关键不仅在于提取与标签相关的目标信息,剔除无关的信息也是非常重要的,所以要在深度神经网络中引入软阈值化。阈值的自动设置,是深度残差收缩网络的核心贡献。需要注意的是,软阈值化中的阈值,需要满足一定的条件。

对于基于深度学习的分类算法,其关键不仅在于提取与标签相关的目标信息,剔除无关的信息也是非常重要的,所以要在深度神经网络中引入软阈值化。阈值的自动设置,是深度残差收缩网络的核心贡献。需要注意的是,软阈值化中的阈值,需要满足一定的条件。这篇文章中的阈值设置,事实上,是在注意力机制下进行的。下面分别介绍阈值需要满足的条件、注意力机制以及具体的阈值设置方法。

(1)阈值需要满足的条件

在软阈值化中,阈值的取值有一定的要求:首先,阈值必须是正数;其次,阈值不能太大,否则输出会全部为零

更重要的是,每个样本,应该有不同的阈值。这是因为,许多样本所含的噪声量经常是不同的。

例如,样本A所含噪声较少,样本B所含噪声较多。那么,在降噪算法里面,样本A的阈值就应该大一点,样本B的阈值就应该小一些。在深度学习算法里,由于这些特征没有明确的物理意义,阈值的大小也无法得到解释。但是道理是相通的,即每个样本应该有不同的阈值。

(2)注意力机制

注意力机制可以从视觉的角度进行解释。人类能够通过快速扫描图像,发现目标物体,进而将更多的注意力集中在目标物体上,以捕获更多细节,同时抑制其他区域的无关信息。

Squeeze-and-Excitation Network(SENet)是一种典型的带有注意力机制的深度学习方法。对于不同的样本,不同通道上的特征,在分类任务中的重要程度,经常是不同的。SENet可以学习一组权重,自动地调整不同通道的特征的大小。这个过程,就相当于施加不同的注意力在各个通道的特征上(见下图)。
2

需要注意的是,每个样本,都有自己独特的一组权重。任意两个样本,它们的这些权重,都是不同的。在SENet中,具体的网络结构如下图所示。学习权重的路径就是,全局池化→全连接层→ReLU→全连接层→Sigmoid。
2

(3)具体的阈值设置方法

深度残差收缩网络采用了一个子网络来自动地设置阈值。这个子网络的结构,就借鉴了上述的SENet。

首先来看“通道之间共享阈值的深度残差收缩网络(Deep Residual Shrinkage Networks with Channel-shared Thresholds,简称DRSN-CS)”。我们可以看到,在红色虚线框里的子网络,学习得到了一个阈值,应用在特征图的所有通道上。

在这个子网络中,首先对输入特征图内的所有元素,取绝对值。然后经过全局均值池化(Global Average Pooling, GAP)和求平均(Average),就得到了一个特征。为了方便描述,将这个特征记为A。在另一条路径中,全局均值池化之后的特征,输入到一个小型的全连接网络之中。这个全连接网络以一个Sigmoid激活函数作为最后一步,其目的在于将输出调整到0和1之间,记为α。最终的阈值就是α×A。这样的话,阈值就是,一个0和1之间的数字×特征图的绝对值的平均值。通过这种方式,保证了阈值不仅为正数,而且不会太大。
2

然后再看“逐通道不同阈值的深度残差收缩网络(Deep Residual Shrinkage Networks with Channel-wise Thresholds,简称DRSN-CW)”。与上述的DRSN-CS相似,在红色虚线框里的子网络,学习得到了一组阈值。以相同的方式,确保了阈值有着合适的取值范围。
2

值得指出的是,通过这种方式,不同的样本就有了不同的阈值。在一定程度上,也可以理解为一种注意力机制:注意到不重要的特征,将它们剔除掉;或者说,注意到重要的特征,将它们保留下来。另外,虽然跨层的恒等路径(Identity shortcut)将不重要的特征也传递到了高层特征中,但是通过很多残差模块的堆叠,这些不重要的特征所占的比重越来越低,最终实现不重要特征的消除。

转载网址:
深度残差收缩网络:(一)背景知识 https://www.cnblogs.com/yc-9527/p/11598844.html
深度残差收缩网络:(二)整体思路 https://www.cnblogs.com/yc-9527/p/11601322.html
深度残差收缩网络:(三)网络结构 https://www.cnblogs.com/yc-9527/p/11603320.html
深度残差收缩网络:(四)注意力机制下的阈值设置 https://www.cnblogs.com/yc-9527/p/11604082.html
深度残差收缩网络:(五)实验验证 https://www.cnblogs.com/yc-9527/p/11610073.html
深度残差收缩网络:(六)代码实现 https://www.cnblogs.com/yc-9527/p/12091581.html

论文网址:
M. Zhao, S. Zhong, X. Fu, B. Tang, and M. Pecht, “Deep Residual Shrinkage Networks for Fault Diagnosis,” IEEE Transactions on Industrial Informatics, 2019, DOI: 10.1109/TII.2019.2943898
https://ieeexplore.ieee.org/document/8850096

相关文章
|
11天前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
124 0
|
2月前
|
缓存 应用服务中间件 nginx
Web服务器的缓存机制与内容分发网络(CDN)
【8月更文第28天】随着互联网应用的发展,用户对网站响应速度的要求越来越高。为了提升用户体验,Web服务器通常会采用多种技术手段来优化页面加载速度,其中最重要的两种技术就是缓存机制和内容分发网络(CDN)。本文将深入探讨这两种技术的工作原理及其实现方法,并通过具体的代码示例加以说明。
197 1
|
13天前
|
网络协议 Java 应用服务中间件
深入浅出Tomcat网络通信的高并发处理机制
【10月更文挑战第3天】本文详细解析了Tomcat在处理高并发网络请求时的机制,重点关注了其三种不同的IO模型:NioEndPoint、Nio2EndPoint 和 AprEndPoint。NioEndPoint 采用多路复用模型,通过 Acceptor 接收连接、Poller 监听事件及 Executor 处理请求;Nio2EndPoint 则使用 AIO 异步模型,通过回调函数处理连接和数据就绪事件;AprEndPoint 通过 JNI 调用本地库实现高性能,但已在 Tomcat 10 中弃用
深入浅出Tomcat网络通信的高并发处理机制
|
14天前
|
Ubuntu 网络安全 数据安全/隐私保护
阿里云国际版如何设置网络控制面板
阿里云国际版如何设置网络控制面板
|
6天前
|
机器学习/深度学习 API 算法框架/工具
残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)
残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)
17 0
|
1月前
|
网络协议 算法 网络性能优化
C语言 网络编程(十五)套接字选项设置
`setsockopt()`函数用于设置套接字选项,如重复使用地址(`SO_REUSEADDR`)、端口(`SO_REUSEPORT`)及超时时间(`SO_RCVTIMEO`)。其参数包括套接字描述符、协议级别、选项名称、选项值及其长度。成功返回0,失败返回-1并设置`errno`。示例展示了如何创建TCP服务器并设置相关选项。配套的`getsockopt()`函数用于获取这些选项的值。
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx 代理管理器强势登场!轻松设置反向代理,为你的网络安全与高效护航,快来探索!
【8月更文挑战第23天】Nginx 代理管理器(NPM)是一款强大的工具,用于简化反向代理的设置流程。反向代理能隐藏后端服务器的真实IP,提升安全性,实现负载均衡与缓存等功能。用户需先安装Nginx 代理管理器,然后通过其Web界面添加代理主机,指定代理名称、协议类型、服务器地址及端口等信息。对于HTTPS协议,还需上传SSL证书/密钥。完成设置后,可通过浏览器测试反向代理是否正常工作。Nginx 代理管理器还支持高级特性,如负载均衡、缓存及访问控制等。
89 1
|
2月前
|
网络协议 Linux 网络架构
在Linux中,如何设置网络路由?
在Linux中,如何设置网络路由?
|
2月前
|
Java 网络安全 云计算
深入理解Java异常处理机制云计算与网络安全:技术挑战与应对策略
【8月更文挑战第27天】在Java编程的世界里,异常处理是维护程序健壮性的重要一环。本文将带你深入了解Java的异常处理机制,从基本的try-catch-finally结构到自定义异常类的设计,再到高级特性如try-with-resources和异常链的应用。通过具体代码示例,我们将探索如何优雅地管理错误和异常,确保你的程序即使在面对不可预见的情况时也能保持运行的稳定性。
|
2月前
|
安全 网络安全 数据安全/隐私保护