自适应参数化ReLU:一种新的注意力机制下的激活函数

简介:

本文在简述传统激活函数和注意力机制的基础上,解读了一种新的注意力机制下的激活函数,即自适应参数化修正线性单元(Adaptively Parametric Rectifier Linear Unit,APReLU),希望对大家有所帮助。

1. 经典激活函数

激活函数是现代人工神经网络的重要组成部分,其作用是实现人工神经网络的非线性化。我们首先来介绍几种最常见的激活函数,即Sigmoid激活函数、Tanh激活函数和ReLU激活函数,分别如下图所示。
2

Sigmoid激活函数和Tanh激活函数的梯度取值范围分别是(0,1)和(-1,1)。当层数较多时,人工神经网络可能会遭遇梯度消失的问题。ReLU激活函数的梯度要么是零,要么是一,能够很好地避免梯度消失和梯度爆炸的问题,因此在近年来得到了广泛的应用。

然而,ReLU激活函数依然存在一点瑕疵。如果在人工神经网络的训练过程中,遇到了特征全部小于零的情况,那么ReLU激活函数的输出就全部为零。这个时候就训练失败了。为了避免这种情况,有些学者就提出了leaky ReLU激活函数,不将小于零的特征置为零,而是将小于零的特征乘以一个很小的系数,例如0.1和0.01。

在leaky ReLU中,这个系数的取值是人工设置的。但是人工设置的系数未必是最佳的,因此何恺明等人提出了Parametric ReLU激活函数(参数化ReLU激活函数,PReLU激活函数),将这个系数设置为一个可以训练得到的参数,在人工神经网络的训练过程中和其他参数一起采用梯度下降法进行训练。然而,PReLU激活函数有一个特点:一旦训练过程完成,则PReLU激活函数中的这个系数就变成了固定的值。换言之,对于所有的测试样本,PReLU激活函数中这个系数的取值是相同的。
2

到这里我们就大概介绍了几种常用的激活函数。这些激活函数有什么问题呢?我们可以思考一下,如果一个人工神经网络采用上述的某种激活函数,抑或是上述多种激活函数的组合,那么这个人工神经网络在训练完成之后,在被应用于测试样本时,对全部测试样本所采用的非线性变换是相同的。也就是说,所有的测试样本,都会经历相同的非线性变换。这其实是一种比较呆板的方式。

如下图所示,我们如果以左边的散点图表示原始特征空间,以右边的散点图表示人工神经网络所学习得到的高层特征空间,以散点图中的小圆点和小方块代表两种不同类别的样本,以F、G和H表示非线性函数。那么这些样本是通过相同的非线性函数实现原始特征空间到高层特征空间的变换的。也就是说,图片中的“=”意味着,对于这些样本,它们所经历的非线性变换是完全相同的。
2

那么,我们能不能根据每个样本的特点,单独为每个样本设置激活函数的参数、使每个样本经历不同的非线性变换呢?本文后续所要介绍的APReLU激活函数,就做到了这一点。

2. 注意力机制

本文所要介绍的APReLU激活函数借鉴了经典的Squeeze-and-Excitation Network(SENet),而SENet是一种非常经典的、注意力机制下的深度学习方法。SENet的基本原理如下图所示:
2

这里介绍一下SENet所蕴含的思想。对于许多样本而言,其特征图中的各个特征通道的重要程度很可能是不同的。例如,样本A的特征通道1非常重要,特征通道2不重要;样本B的特征通道1不重要,特征通道2很重要;那么在这个时候,对于样本A,我们就应该把注意力集中在特征通道1(即赋予特征通道1更高的权重);反过来,对于样本B,我们应该把注意力集中在特征通道2(即赋予特征通道2更高的权重)。

为了实现这个目的,SENet通过一个小型的全连接网络,学习得到了一组权重系数,对原先特征图的各个通道进行加权。通过这种方式,每个样本(包括训练样本和测试样本)都有着自己独特的一组权重,用于自身各个特征通道的加权。这其实是一种注意力机制,即注意到重要的特征通道,进而赋予其较高的权重。

3. 自适应参数化修正线性单元(APReLU)激活函数

APReLU激活函数,在本质上,就是SENet和PReLU激活函数的集成。在SENet中,小型全连接网络所学习得到的权重,是用于各个特征通道的加权。APReLU激活函数也通过一个小型的全连接网络获得了权重,进而将这组权重作为PReLU激活函数里的系数,即负数部分的权重。APReLU激活函数的基本原理如下图所示。
2

我们可以看到,在APReLU激活函数中,其非线性变换的函数形式是和PReLU激活函数一模一样的。唯一的差别在于,APReLU激活函数里对负数特征的权重系数,是通过一个小型全连接网络学习得到的。当人工神经网络采用APReLU激活函数时,每个样本都可以有自己独特的权重系数,即独特的非线性变换(如下图所示)。同时,APReLU激活函数的输入特征图和输出特征图有着相同的尺寸,这意味着APReLU可以被轻易地嵌入到现有的深度学习算法之中。
2

综上所述,APReLU激活函数使每个样本都可以有自己独特的一组非线性变换,提供了一种更灵活的非线性变换方式,具有提高模式识别准确率的潜力。

参考文献:

Zhao M, Zhong S, Fu X, et al. Deep residual networks with adaptively parametric rectifier linear units for fault diagnosis[J]. IEEE Transactions on Industrial Electronics, 2020, DOI: 10.1109/TIE.2020.2972458.

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
为什么大型语言模型都在使用 SwiGLU 作为激活函数?
SwiGLU可以说是在大语言模型中最常用到的激活函数,我们本篇文章就来对他进行详细的介绍。
1482 9
|
JavaScript 前端开发
Bpmn.js 进阶指南之Lint流程校验(一)
Bpmn.js 进阶指南之Lint流程校验(一)
1642 0
|
10月前
|
人工智能 自然语言处理 监控
大语言模型的解码策略与关键优化总结
本文系统性地阐述了大型语言模型(LLMs)中的解码策略技术原理及其应用。通过深入分析贪婪解码、束搜索、采样技术等核心方法,以及温度参数、惩罚机制等优化手段,为研究者和工程师提供了全面的技术参考。文章详细探讨了不同解码算法的工作机制、性能特征和优化方法,强调了解码策略在生成高质量、连贯且多样化文本中的关键作用。实例展示了各类解码策略的应用效果,帮助读者理解其优缺点及适用场景。
1061 20
大语言模型的解码策略与关键优化总结
|
存储 编译器 程序员
【C语言】auto 关键字详解
`auto` 关键字用于声明局部变量的自动存储类,其作用主要体现在变量的生命周期上。尽管现代C语言中 `auto` 的使用较少,理解其历史背景和作用对于掌握C语言的存储类及变量管理仍然很重要。局部变量默认即为 `auto` 类型,因此在实际编程中,通常不需要显式声明 `auto`。了解 `auto` 关键字有助于更好地理解C语言的存储类及其在不同场景中的应用。
624 1
|
10月前
|
机器学习/深度学习 编解码 知识图谱
RT-DETR改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
RT-DETR改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
457 11
RT-DETR改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
|
10月前
|
机器学习/深度学习 编解码 计算机视觉
RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点
RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点
433 9
RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点
|
11月前
|
IDE 开发工具 C语言
C++一分钟之-嵌入式编程与裸机开发
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解C++在嵌入式编程与裸机开发中的应用,提高开发效率和代码质量。
340 13
WK
|
机器学习/深度学习 算法
为什么Sigmoid函数比Tanh函数更好
在神经网络中,Sigmoid和Tanh函数各有优劣,选择取决于具体应用场景。Sigmoid函数输出范围为(0,1),适合二分类问题,但存在梯度消失和非零中心化的问题;Tanh函数输出范围为(-1,1),以0为中心,有利于加速收敛,但同样涉及较大的计算复杂度。两者均存在梯度消失风险,但在多数情况下,Tanh梯度问题较轻。随着技术发展,ReLU等新型激活函数因能有效缓解梯度消失并提高计算效率,已成为许多任务的首选。因此,不能简单地说Sigmoid比Tanh更好,需依据任务需求和网络结构进行选择。
WK
869 1
|
数据处理 开发者 索引
【Python】已解决:FutureWarning: The frame.append method is deprecated and will be removed from pandas in
【Python】已解决:FutureWarning: The frame.append method is deprecated and will be removed from pandas in
1233 0
|
机器学习/深度学习 算法 数据挖掘
【机器学习】维度灾难问题会如何影响K-means算法?
【5月更文挑战第15天】【机器学习】维度灾难问题会如何影响K-means算法?