当前位置: 首页 > article >正文

深度学习机器学习:常用激活函数(activation function)详解

目录

Sigmoid Function

ReLU(Rectified Linear Unit)

LeakyReLU(Leaky Rectified Linear Unit)

ClippedReLU(Clipped Rectified Linear Unit)

PRelu(Parametric ReLU)

Tanh(hyperbolic tangent function)

ELU (Exponential Linear Unit)

GELU(Gaussian Error Linear Unit)

Swish(Self-Gated Sigmoid Activation Function)

Softplus Fuction


Sigmoid Function

定义:

Sigmoid(x)=\frac{1}{1+e^{-x}}

该函数将输入值 x 映射到 (0,1) 的范围内,输出值可以被解释为概率,广泛用于二分类任务中。

特点:

  • 非线性平滑输出:Sigmoid函数的输出是连续且平滑的,能够为模型提供非线性建模能力。其S形曲线在输入值较小时(如 x→−∞)输出接近0,输入值较大时(如 x→+∞)输出接近1,中间区域则呈现平滑过渡,适合处理具有概率意义的输出。
  • 梯度消失:Sigmoid函数的导数f'(x)=f(x)(1-f(x))在输入值绝对值较大时会接近0,导致反向传播时梯度非常小,从而引发梯度消失问题。这会使得深层网络中靠近Sigmoid激活函数的权重更新缓慢,甚至停止更新,影响模型的训练效果。

 应用:

  • 二元分类与概率输出:Sigmoid函数的输出范围为 (0,1),可以直接被解释为概率,因此非常适合用于二分类问题的输出层激活函数。例如,在逻辑回归或神经网络的最后一层,Sigmoid可以将输出映射为事件发生的概率。


ReLU(Rectified Linear Unit)

定义

ReLU(x)=max(0,x)

 

起源论文:Nair V, Hinton G E. Rectified linear units improve restricted boltzmann machines[C]//Proceedings of the 27th international conference on machine learning (ICML-10). 2010: 807-814.

Rectified Linear Units Improve Restricted Boltzmann Machines

特点

  • 正向激活:当输入为正时,输出等于输入,保持梯度不衰减,有助于解决梯度消失问题。当输入为负时,输出为零,引入稀疏性,减少计算量,但可能导致“死亡ReLU”问题(当特征值小于或等于0时,它总是输出0,即神经元永远不会被激活,特别是当模型参数量大的时候,不是每个参数都可以在梯度下降中被很好的训练,“死亡Relu”的影响就会比较明显)。

当ReLU函数的输入小于零时,其导数为零(因为输出是常数0,对输入没有依赖)。这意味着,在反向传播过程中,该神经元对损失函数的梯度贡献为零。因此,与该神经元相连的权重将不会得到更新(因为梯度为零,权重更新公式中的梯度项为零),进一步造成神经元“死亡”

注:

  • 神经元“死亡”通常指的是在使用 ReLU(Rectified Linear Unit) 激活函数时,某些神经元的输出值永远为 0,并且在训练过程中无法再被激活。这种情况被称为“神经元死亡”或“ReLU 死亡问题
  • 梯度消失是指在反向传播过程中,某些层的梯度值变得非常小,接近于 0,导致这些层的权重几乎无法更新。这种情况通常发生在深层网络中,尤其是在使用 sigmoidtanh 激活函数时。
  • 从描述上来说,神经元死亡是指激活后特征值仍为0(仅限于ReLU),梯度消失则是指梯度非常接近于0,两者在作用对象上具有本质差别。神经元死亡指该特征没有被利用,进一步训练也无法学习到(尽管该特征很微小),而梯度消失则是,描述该网络层由于梯度过于小导致无法得到有效训练。

使用场景:

  • 常见的深度学习网络:由于其计算简单,效率高,因此其比较适合应用参数量大的深度神经网络。同时因为其具有稀疏的特性,利用ReLU训练的网络往往有更好的模型蒸馏效果,因此一些论文为了凑工作量,故意采用ReLU激活函数,来提升其模型蒸馏的表现。

注:稀疏性通常指在某个集合、向量、矩阵或信号中,大多数元素或分量的值接近于零或为零,而只有少数元素或分量的值较大。这种特性使得数据或信号具有稀疏表示的可能性,即可以通过较小的数据来储存和表示。


LeakyReLU(Leaky Rectified Linear Unit)

定义:

Leaky ReLU(x)=\left\{\begin{matrix} x& if &x>0 \\ \alpha x&if &x\leq 0 \end{matrix}\right.

 

起源论文:Maas A L, Hannun A Y, Ng A Y. Rectifier nonlinearities improve neural network acoustic models[C]//Proc. icml. 2013, 30(1): 3.

relu_hybrid_icml2013_final.pdf

特点

  • 缓解“死亡神经元”问题:当输入为负时,LeakyReLU输出一个微小的非零值(αxαx),而非完全置零。这使得负区间的梯度为 α(而非0),确保反向传播时梯度仍能流动,避免神经元永久“死亡”。

  • 保留部分稀疏性与计算高效性:负值区域的输出虽不为零,但通过设置较小的 αα(如0.01),仍能保持一定稀疏性,即负值区域的激活强度远低于正值区域。相比ReLU仅多一次乘法运算(αx),整体复杂度依然较低,依旧适合个人构建大规模神经网络。

使用场景

  • 任何可以使用Relu激活函数的场景

    在生成对抗网络(GANs)、循环神经网络(RNNs)等对梯度敏感的任务中,LeakyReLU可避免因梯度消失导致的模型训练失败。相较于ReLU,LeakyReLu在计算复杂度不大幅提高的情况下,进一步强化了模型训练和预测的鲁棒性。所以,为什么不用LeakReLU呢?

稀疏性权衡:LeakyReLU牺牲了ReLU的严格稀疏性(负值完全置零),但通过微小负值保留了部分稀疏特性。

参数选择:α 通常取0.01,但可根据任务调整。若 α 过大,可能导致负值区域激活过强,削弱稀疏性优势。当 α=0 时,LeakyReLU退化为ReLU;当α=1 时,退化为线性函数。


ClippedReLU(Clipped Rectified Linear Unit)

定义:

ClippedReLU(x)=\left\{\begin{matrix} 0 & if & x\leq 0 \\ x & if & 0< x \leq \tau \\ \tau & if & x> \tau \end{matrix}\right.


Clipped ReLU(也称为截断ReLU或限制ReLU)是一种变体,它在ReLU的基础上对输出值进行了上限截断。即当输入大于某个设定阈值时,输出不再继续增加,而是被限制在这个阈值上。

起源论文:Cai Z, He X, Sun J, et al. Deep learning with low precision by half-wave gaussian quantization[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 5918-5926.

CVPR 2017 Open Access Repository

特点:

  • 保留了ReLU的稀疏性
  • 防止梯度爆炸:在反向传播中,输入超过  \tau的区域梯度为零(因输出固定为常数 \tau),类似ReLU的负区间行为。这能限制梯度幅值,降低梯度爆炸的可能性。
  • 引入可控性:通过调整 \tau可灵活平衡模型表达能力与数值稳定性。例如,较小的 \tau 增强鲁棒性但可能抑制特征多样性,较大的 ττ 更接近原始ReL

使用场景:

  • 基本不用:大多数场景中,梯度爆炸问题都不太显著。因此,必须使用Clipped ReLu的场景较少。
  • 特殊需求:量化感知训练(Quantization Aware Training, QAT)及 嵌入式或边缘计算中:在模型量化前使用ClippedReLU,可约束激活值范围,使其适配低比特整数(如8-bit),减少量化误差。

注:

阈值:Clipped ReLU的阈值\tau是人为一个超参数,需要根据具体任务和网络结构进行调优。

什么是量化感知训练(QAT):在深度学习领域,模型的效率和性能一直是研究者们关注的重点。传统的深度学习模型大多使用32位浮点数(FP32)进行计算,但在部署阶段,尤其是在资源受限的设备上(如移动设备、嵌入式系统等),将模型中的权重和激活函数量化为较低精度的数值(如8位整数,INT8)可以显著减少内存和计算的需求。然而,模型量化通常会带来计算精度的下降,从而影响模型的性能。为了减少这种影响,量化感知训练被提出,用于底精度模型拟合原始模型。


PRelu(Parametric ReLU)

定义

PReLU(x)=\left\{\begin{matrix} x& if &x>0 \\ \alpha x&if &x\leq 0 \end{matrix}\right.

Parametric ReLU(PReLU)是LeakyReLU的改进版本,虽然从计算定义上看,和LeakyReLU一致,但PReLU通过引入可学习的参数来自适应调整负值区域的斜率。其中,α 是一个可训练的参数(而非固定值),通过反向传播优化,允许模型根据数据动态调整负区间的激活强度。

 He K, Zhang X, Ren S, et al. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1026-1034.

ICCV 2015 Open Access Repository

特点

  • 自适应负区间斜率PReLU允许每个神经元或每组通道(channel-wise)拥有独立的 α,赋予模型更强的表达能力。例如,卷积网络中可为每个卷积核单独学习 α,适应不同特征的重要性。类似LeakyReLU,负区间的梯度为 α(非零),确保反向传播时梯度持续流动,降低神经元永久失效的风险。通过优化 α,模型可自动决定负区间的激活强度:若α→0,接近ReLU的严格稀疏性;若 α 较大,保留更多负值信息以捕捉复杂模式。

  • 低额外计算成本

    增加的参数量极小(如CNN中每通道仅一个参数),模型计算成本和LeakyReLU一致,适合大规模网络。PReLU在训练时,即反向传播的过程中,也会增加的一定计算量,但总体来说也不显著,替换成PReLU不会显著降低训练时间。

PReLU梯度的计算:反向传播时,α的梯度为负区间的输入 x之和,即 \frac{\partial L}{\partial \alpha} = \sum_{x_i \leq 0} x_i \cdot \frac{\partial L}{\partial f(x_i)},需注意梯度裁剪防止数值不稳定。

使用场景

  • 任何使用ReLU、LeakyReLU的场景:生于LeakyReLU,可自适应的调节参数的PReLu是更好选择。当训练数据充足时,PReLU的参数化机制可挖掘更多隐藏特征,避免因固定 α 导致的模型表达能力受限。

  • 多源异构数据融合的模型:若输入特征在不同通道或区域间差异显著(如自然图像与文本数据混合训练),PReLU的分通道参数化特性可提升模型鲁棒性,因此在数据分布差异比较大的多源数据中,PReLU是个不错的激活工具。

参数初始化
α 通常初始化为0.25(经验值,参考何恺明论文),但也可尝试其他初始化策略(如均匀分布)。

参数共享策略
为减少参数量,可将 α 设为通道共享(channel-wise)而非逐神经元(element-wise),尤其在宽网络中,以减少参数量,加快训练速度。


Tanh(hyperbolic tangent function)

定义:

tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

 

特点:

  • 平滑性和对称性:该函数将输入值映射到 [−1,1] 的范围内,输出值具有对称性和平滑性。其导数为:tanh'(x)=1-tanh^{2}(x),这种平滑性使得梯度在反向传播过程中能够持续流动。但输入和输出的绝对值太大时,其梯度也过于的小,同样会产生梯度消失。

但需要注意的是:tanh 的梯度在输入值接近 0 时较大,而在输入值绝对值较大时梯度逐渐减小。这种特性使得 tanh 仅在在处理中等大小的输入时能够较好地传播梯度,在输入值过大或过小时,梯度可能会变得非常接近于0,从而导致“梯度消失”问题。

使用场景:

  • 映射输出:由于tanh输出[-1,1]的特性,它很适合用来映射输出。因此生成网络的输出基本都是采用tanh,如DCGAN或是Pix2Pix。再例如循环神经网络(RNN)中,tanh 常用于门控机制,以确保梯度在时间维度上能够较好地传播。
  • 小规模网络:tanh的计算较为复杂,因此其并不适用于大型网络模型,要不其训练时间会显著地增加,如使用tanh的RNN模型:LSTM,它的训练速度就是慢。


ELU (Exponential Linear Unit)

定义:

ELU(x)=\left\{\begin{matrix} x & if & x\geq 0\\ a(e^x-1) & if & x< 0 \end{matrix}\right.

 

其中,α 是一个超参数,通常取值为1,但也可以根据需要进行调整。

起源论文:Clevert D A. Fast and accurate deep network learning by exponential linear units (elus)[J]. arXiv preprint arXiv:1511.07289, 2015.

(PDF) Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)

特点:

  • 负值平滑处理:ELU对负值进行指数平滑处理,输出饱和于-\alpha,减少噪声传播(负区间的饱和特性可抑制噪声信号,即当x小于零时,其波动会被”平滑压缩“)。因此其可以防止梯度消失的产生。
  • 连续可微:ELU在所有点上都是连续且可微的(当\alpha为1时),有助于梯度在反向传播过程中更顺畅地流动。因此不容易产生梯度消失问题。

使用场景:

  • 对训练稳定性有更高要求:由于ELU的计算开销要高于ReLU和LeakyReLU(特别是训练阶段),但目前没有充分的证据使用ELU会显著提高模型性能,首选使用ELU较少。只能说使用ELU训练过程中的稳定性会更好。

GELU(Gaussian Error Linear Unit)

定义:

GELU(x)=x\cdot \frac{1}{2}[1+erf(\frac{x}{\sqrt{2}})]

 

式中:\frac{1}{2}[1+erf(\frac{x}{\sqrt{2}})]为标准高斯分布的累计分布函数,erf表示误差函数。在程序中,常用其近似公式表示:

GELU(x)\approx 0.5\cdot x\cdot (1+tanh(\frac{2}{\pi }(x+0.044715x^3)))

或:GELU(x)\approx x\cdot Sigmoid(1.702x)(等价于Swish激活函数)

累积分布函数表示标准正态分布的随机变量X小于或等于输入值x的概率

起源论文: Hendrycks D, Gimpel K. Gaussian error linear units (gelus)[J]. arXiv preprint arXiv:1606.08415, 2016.

[1606.08415] Gaussian Error Linear Units (GELUs)

特点:

  • 连续平滑:不再赘述
  • 自适应门控机制 :GELU 通过其内部的高斯 CDF 组件,实现了一种自适应的门控机制。这意味着 GELU 可以根据输入的属性自动调整激活的量,类似于神经元的开/关切换,即通过CDF,将x进行0~100%间的取舍,这与开关很像,但不是只有开和关。
  • 隐式、数据依赖的正则化机制 :GELU 其通过概率化门控动态调整激活强度,既保留了 ReLU 的稀疏性优势,又具备了类似 Dropout 的泛化增强能力。(直接基于输入值的分布特性决定抑制强度,无实际随机操作)

GELU:数据依赖的隐式自适应正则化
GELU 的正则化强度不是固定的(如 Dropout 的固定概率 p),而是依赖输入 x的统计特性

  • 对噪声(一般而言,噪声的数值分布要远低于特征,如果你噪声比特征的数值还大,你的数据就相当于都是噪声了)或小幅度的输入(x接近 0),GELU 会显著抑制激活值(Φ(x)≈0.5),起到类似噪声过滤的作用,相当进一步屏蔽该噪声或微小特征,防止模型过拟合。

  • 对显著的正/负输入(∣x∣较大),GELU 退化为近似线性/稀疏激活,保留关键特征。

  • 效果:这种动态调整在训练中隐式引导模型关注更重要的特征,降低对噪声的敏感度,从而提升泛化能力。

使用场景: 

  • 与 Swish 的关系:GELU 与 Swish在形式上相似,但 GELU 的理论基础源自高斯误差函数,而 Swish 为经验性设计。当 β=1.702 时,二者近似等价。所以一般而言,使用Swish和GELU的场景可以试试替换,但Swish计算更加简单一些。

  • 任何依赖ReLU和LeakyReLU的模型:在多数任务中,GELU 相比 ReLU 可小幅提升模型精度(约 1-2%),但其优势在深层网络或数据稀缺时更为显著。

  • 自然语言处理(NLP) :GELU 在 BERT、GPT 等大型语言模型中得到广泛应用,这些模型表明,GELU 可以在处理复杂和高维数据时,提供比传统激活函数更好的性能和泛化能力。GELU 能够提高变换器模型的性能,这使它成为最先进的 NLP 研究和应用的主要工具。

  • 集成Transformer的计算机视觉模型 :GELU 越来越多地被视觉模型所采用,尤其是那些集成了视觉 Transformer(ViT)等 Transformer 架构的模型。对于图像分类和物体检测等任务,GELU 可以增强模型学习复杂视觉特征的能力。


Swish(Self-Gated Sigmoid Activation Function)

定义:

Swish(x)=x\cdot sigmoid(\beta x)

 

Swish,即自适应sigmoid函数,其中,β 是可学习的参数。

起源论文:Ramachandran P, Zoph B, Le Q V. Searching for activation functions[J]. arXiv preprint arXiv:1710.05941, 2017. 

[1710.05941] Searching for Activation Functions

特点

  • 带有自适应调节因子:Swish 将输入值 x 与经过 sigmoid(βx) 激活后的值相乘,这里的 β 是一个可训练的参数。这使得 Swish 函数能够根据训练数据自动调整自身,增强其拟合复杂数据分布的能力。

  • 非单调且平滑特性:与其他大部分的激活函数不同,Swish 是非单调的,其曲线更平滑,这种非线性特性有助于模型在更多复杂场景下具备良好的泛化能力。其导数f'(x)=\sigma (\beta x)+\sigma (\beta x)(1-\sigma (\beta x)),正负区间均保持非零梯度,不容易产生梯度消失。

使用场景

  • 深层网络架构:如 Transformer、ResNet 等超深模型,利用其平滑梯度和自适应特性提升训练稳定性。在图像分类、目标检测等任务中,Swish 常优于 ReLU,尤其在模型需要强非线性表达能力时。当模型出现神经元死亡或梯度消失时,可尝试替换 ReLU 为 Swish 以验证效果提升。

注:

参数初始化:β 通常初始化为 1(经验值),若作为可训练参数,可采用小随机值(如均匀分布)以促进探索。

变体版本Swish-1:固定 β=1,省去参数学习,计算成本较低且性能接近原版。原始版本的EfficientNet采用的激活函数就是Swish-1;此外,Swish 和 SiLU(Sigmoid-weighted Linear Unit)数学形式一致,但 SiLU 通常指固定β=1 的版本。

硬件优化问题:部分框架(如 TensorFlow)对 Swish 的 Sigmoid 计算进行硬件级优化(如查表近似),缓解计算瓶颈。

参数共享策略:β 具有两种设置,作为全局参数(整个网络共享)或层级参数(每层独立),需要留意。

Softplus Fuction

定义:

softplus(x)=ln(1+e^x)

 

起源论文:

特点:

  • 平滑近似、渐进线性:Softplus 是 ReLU 函数的平滑近似。它在整个范围内都是可导的,这使得它在反向传播过程中能够提供稳定的梯度。当输入值较大时,Softplus 函数的输出近似于线性。

使用场景:

  • VAE(变分自编码器):在VAE中,softplus用于参数化潜在空间的方差。由于softplus的输出总是非负的,这确保了方差的正定性,符合概率模型的要求。
  • GANs(生成对抗网络):在某些GAN模型中,softplus用于参数化logits,帮助生成更加清晰和区分的概率分布。这对于GAN生成逼真的数据至关重要。

VAE(Variational Autoencoder),即变分自编码器,是一种深度生成模型,它结合了自编码器(Autoencoder)和变分推断(Variational Inference)的技术。其 在数据增强、艺术创作、图像生成、文本生成、语音生成等领域具有广泛应用(没错,StableDiffusion系列的模型)。


http://www.kler.cn/a/545871.html

相关文章:

  • Nginx--日志(介绍、配置、日志轮转)
  • 2.SpringSecurity在mvc项目中的使用
  • 变频器MODBUS RTU通信
  • vue开发06:前端通过webpack配置代理处理跨域问题
  • FreeRTOS低功耗总结
  • Azure从0到1
  • 蓝桥与力扣刷题(108 将有序数组转换成二叉搜索树)
  • TCP文件传输
  • 人工智能任务21-飞蛾火焰优化算法(MFO)在深度学习中的应用
  • 如何做好抖音小视频推广呢?
  • 九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表
  • TikTok成功打破传统媒体壁垒,用户涌入平台创作
  • 3D数字化技术:重塑“人货场”,开启营销新纪元
  • 华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B
  • Docker 镜像的构建与管理(二)
  • VM ubuntu20.04虚拟机找不到可移动设备怎么解决
  • 智能手表表带圆孔同心度检测
  • 【Qt】:概述(下载安装、认识 QT Creator)
  • 第1章 信息化发展(一)
  • 达梦分布式集群DPC_架构详解_yxy