深度学习机器学习:常用激活函数(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
定义:
该函数将输入值 x 映射到 (0,1) 的范围内,输出值可以被解释为概率,广泛用于二分类任务中。
特点:
- 非线性平滑输出:Sigmoid函数的输出是连续且平滑的,能够为模型提供非线性建模能力。其S形曲线在输入值较小时(如 x→−∞)输出接近0,输入值较大时(如 x→+∞)输出接近1,中间区域则呈现平滑过渡,适合处理具有概率意义的输出。
- 梯度消失:Sigmoid函数的导数
在输入值绝对值较大时会接近0,导致反向传播时梯度非常小,从而引发梯度消失问题。这会使得深层网络中靠近Sigmoid激活函数的权重更新缓慢,甚至停止更新,影响模型的训练效果。
应用:
- 二元分类与概率输出:Sigmoid函数的输出范围为 (0,1),可以直接被解释为概率,因此非常适合用于二分类问题的输出层激活函数。例如,在逻辑回归或神经网络的最后一层,Sigmoid可以将输出映射为事件发生的概率。
ReLU(Rectified Linear Unit)
定义:
起源论文: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,导致这些层的权重几乎无法更新。这种情况通常发生在深层网络中,尤其是在使用 sigmoid 或 tanh 激活函数时。
- 从描述上来说,神经元死亡是指激活后特征值仍为0(仅限于ReLU),梯度消失则是指梯度非常接近于0,两者在作用对象上具有本质差别。神经元死亡指该特征没有被利用,进一步训练也无法学习到(尽管该特征很微小),而梯度消失则是,描述该网络层由于梯度过于小导致无法得到有效训练。
使用场景:
- 常见的深度学习网络:由于其计算简单,效率高,因此其比较适合应用参数量大的深度神经网络。同时因为其具有稀疏的特性,利用ReLU训练的网络往往有更好的模型蒸馏效果,因此一些论文为了凑工作量,故意采用ReLU激活函数,来提升其模型蒸馏的表现。
注:稀疏性通常指在某个集合、向量、矩阵或信号中,大多数元素或分量的值接近于零或为零,而只有少数元素或分量的值较大。这种特性使得数据或信号具有稀疏表示的可能性,即可以通过较小的数据来储存和表示。
LeakyReLU(Leaky Rectified Linear Unit)
定义:
起源论文: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)
定义:
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的稀疏性
- 防止梯度爆炸:在反向传播中,输入超过
的区域梯度为零(因输出固定为常数
),类似ReLU的负区间行为。这能限制梯度幅值,降低梯度爆炸的可能性。
- 引入可控性:通过调整
可灵活平衡模型表达能力与数值稳定性。例如,较小的
增强鲁棒性但可能抑制特征多样性,较大的 ττ 更接近原始ReL
使用场景:
- 基本不用:大多数场景中,梯度爆炸问题都不太显著。因此,必须使用Clipped ReLu的场景较少。
- 特殊需求:量化感知训练(Quantization Aware Training, QAT)及 嵌入式或边缘计算中:在模型量化前使用ClippedReLU,可约束激活值范围,使其适配低比特整数(如8-bit),减少量化误差。
注:
阈值:Clipped ReLU的阈值
是人为一个超参数,需要根据具体任务和网络结构进行调优。
什么是量化感知训练(QAT):在深度学习领域,模型的效率和性能一直是研究者们关注的重点。传统的深度学习模型大多使用32位浮点数(FP32)进行计算,但在部署阶段,尤其是在资源受限的设备上(如移动设备、嵌入式系统等),将模型中的权重和激活函数量化为较低精度的数值(如8位整数,INT8)可以显著减少内存和计算的需求。然而,模型量化通常会带来计算精度的下降,从而影响模型的性能。为了减少这种影响,量化感知训练被提出,用于底精度模型拟合原始模型。
PRelu(Parametric ReLU)
定义:
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之和,即
,需注意梯度裁剪防止数值不稳定。
使用场景:
-
任何使用ReLU、LeakyReLU的场景:生于LeakyReLU,可自适应的调节参数的PReLu是更好选择。当训练数据充足时,PReLU的参数化机制可挖掘更多隐藏特征,避免因固定 α 导致的模型表达能力受限。
-
多源异构数据融合的模型:若输入特征在不同通道或区域间差异显著(如自然图像与文本数据混合训练),PReLU的分通道参数化特性可提升模型鲁棒性,因此在数据分布差异比较大的多源数据中,PReLU是个不错的激活工具。
注:
参数初始化:
α 通常初始化为0.25(经验值,参考何恺明论文),但也可尝试其他初始化策略(如均匀分布)。参数共享策略:
为减少参数量,可将 α 设为通道共享(channel-wise)而非逐神经元(element-wise),尤其在宽网络中,以减少参数量,加快训练速度。
Tanh(hyperbolic tangent function)
定义:
特点:
- 平滑性和对称性:该函数将输入值映射到 [−1,1] 的范围内,输出值具有对称性和平滑性。其导数为:
,这种平滑性使得梯度在反向传播过程中能够持续流动。但输入和输出的绝对值太大时,其梯度也过于的小,同样会产生梯度消失。
但需要注意的是:tanh 的梯度在输入值接近 0 时较大,而在输入值绝对值较大时梯度逐渐减小。这种特性使得 tanh 仅在在处理中等大小的输入时能够较好地传播梯度,在输入值过大或过小时,梯度可能会变得非常接近于0,从而导致“梯度消失”问题。
使用场景:
- 映射输出:由于tanh输出[-1,1]的特性,它很适合用来映射输出。因此生成网络的输出基本都是采用tanh,如DCGAN或是Pix2Pix。再例如循环神经网络(RNN)中,tanh 常用于门控机制,以确保梯度在时间维度上能够较好地传播。
-
小规模网络:tanh的计算较为复杂,因此其并不适用于大型网络模型,要不其训练时间会显著地增加,如使用tanh的RNN模型:LSTM,它的训练速度就是慢。
ELU (Exponential Linear Unit)
定义:
其中,α 是一个超参数,通常取值为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对负值进行指数平滑处理,输出饱和于
,减少噪声传播(负区间的饱和特性可抑制噪声信号,即当x小于零时,其波动会被”平滑压缩“)。因此其可以防止梯度消失的产生。
- 连续可微:ELU在所有点上都是连续且可微的(当
为1时),有助于梯度在反向传播过程中更顺畅地流动。因此不容易产生梯度消失问题。
使用场景:
- 对训练稳定性有更高要求:由于ELU的计算开销要高于ReLU和LeakyReLU(特别是训练阶段),但目前没有充分的证据使用ELU会显著提高模型性能,首选使用ELU较少。只能说使用ELU训练过程中的稳定性会更好。
GELU(Gaussian Error Linear Unit)
定义:
式中:为标准高斯分布的累计分布函数,erf表示误差函数。在程序中,常用其近似公式表示:
或:(等价于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,即自适应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 是非单调的,其曲线更平滑,这种非线性特性有助于模型在更多复杂场景下具备良好的泛化能力。其导数
,正负区间均保持非零梯度,不容易产生梯度消失。
使用场景
- 深层网络架构:如 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 是 ReLU 函数的平滑近似。它在整个范围内都是可导的,这使得它在反向传播过程中能够提供稳定的梯度。当输入值较大时,Softplus 函数的输出近似于线性。
使用场景:
- VAE(变分自编码器):在VAE中,softplus用于参数化潜在空间的方差。由于softplus的输出总是非负的,这确保了方差的正定性,符合概率模型的要求。
- GANs(生成对抗网络):在某些GAN模型中,softplus用于参数化logits,帮助生成更加清晰和区分的概率分布。这对于GAN生成逼真的数据至关重要。
VAE(Variational Autoencoder),即变分自编码器,是一种深度生成模型,它结合了自编码器(Autoencoder)和变分推断(Variational Inference)的技术。其 在数据增强、艺术创作、图像生成、文本生成、语音生成等领域具有广泛应用(没错,StableDiffusion系列的模型)。