盘点深度学习神经网络架构中的常用激活函数

2025-7-17|2026-3-9
Pavel Han
Pavel Han
date
Jul 17, 2025
slug
2025-07-17-the-summary-of-activation-function-in-AI-network
status
Published
tags
CNN
LLM
summary
本文对深度学习神经网络中常用的激活函数进行详细的学习和总结,对各个激活函数的特性及其适用性进行整理,方便以后理解各种深度神经网络的架构设计。
type
Post
category
AI
AI summary
本文对深度学习神经网络中常用的激活函数进行详细的学习和总结,对各个激活函数的特性及其适用性进行整理,方便以后理解各种深度神经网络的架构设计。

激活函数是什么?

一个神经网络的典型神经元的架构如下图所示:
notion image
  • 输入层的输入与其权重参数各自相乘后累加,然后加上该神经元的偏执参数bias,这就是神经元的输入信号。
  • 神经元在其内部处理中,把以上输入信号作为参数,执行其激活函数 f(x) ,激活函数的输出即为神经元的输出。
因此,所谓神经元的激活函数,本质上就是神经节对输入信号加权和的非线性映射和变换而已。通过激活函数的映射,神经网络的计算输出可以逼近任意复杂的函数(如曲线边界分割、多目标重叠检测),解决实际应用中的复杂问题。

为什么需要激活函数?

在没有激活函数的情况下,无论神经网络的层数是多少,其输出都是输入的线性组合,这样就等效为单层的感知机,层数(也就是所谓的深度)失去了意义。激活函数要解决的问题,就是从线性空间向非线性空间的映射。
如果没有激活函数的话,实际上无论神经网络有多少层,其输出最终都是对输入数据的线性变换,无法处理复杂的非线性问题。而我们现实生活中要解决的问题基本上都是非线性问题。激活函数通过引入非线性的映射,使得神经网络可以逼近任意复杂的非线性函数。

阶跃函数

阶跃函数是神经网络发展早期的感知机所使用的激活函数。阶跃函数以阈值(通常为0)为界,输出二元值:当输入大于等于0时,阶跃函数输出为1;否则输出为0。
其图形如下所示:
notion image
阶跃型激活函数的主要特点:
  • 其输出呈阶梯状跳跃,在x=0处不连续,形成明显的“断点”。
  • 其输出范围只有0和1两种状态(对应于全有和全无两种情况),无法表达中间状态和概率信息。因此比较适合二分类任务。
  • 因为在x=0位置跳变,形成了不连续点,所以无法进行微分计算(导数计算要求函数在局部区间内平滑变化),因此无法使用梯度下降法(依赖于对激活函数的偏微分计算)和反向传播法训练参数。
想象一下,采用阶跃函数作为激活函数的情况下,对于神经网络中的权重和偏执等参数的微小修改,有可能会导致输出完全翻转,进而引起神经网络对于其他输入数据进行处理的行为发生复杂的巨变。因此,这种情况下,就很难通过逐步修改网络的权重和偏执参数来实现神经网络判断准确性的调优。
因为以上的阶跃函数所存在的只有两个值的取值范围、不可微分等特性,目前阶跃函数已经不用于主流网络的隐藏层,仅在理论教学(感知机)、嵌入式系统轻量级二分类系统等领域有少量的应用。
阶跃函数的Python实现如下:

Sigmoid函数

Sigmoid函数也被称为Logistic函数,是一种S型曲线函数。Sigmoid函数是神经网络中经典的激活函数之一,尤其在早期深度学习和二分类任务中应用广泛。
Sigmoid函数的数学表达式如下:
其图形如下所示:
notion image
从图形的对比上可以看到,Sigmoid激活函数和阶跃函数激活函数类似,但是在使用Sigmoid激活函数的情况下,权重和偏置的微小改动只会引起输出发生微小变化,这一点对于使用sigmoid作为激活函数的神经网络正常学习并调整其参数至关重要。
Sigmoid激活函数的主要特性总结如下:
  • 与阶跃函数类似,输出值范围在0到1之间,且在(0,0.5)点中心对称,因此非常适合用于表示概率。
  • 随输入x的增大严格单调递增,输入增大时输出趋近1,减小时趋近0
  • 曲线平滑,处处连续可导,可通过后续的梯度下降法逐次计算逼近极值。
Sigmoid激活函数在神经网络的发展早期阶段应用较广,但因为诸多缺点,在当前的神经网络架构中已经较少使用:
  • 梯度消失问题。从上面Sigmoid的图形上就可以看出,当输入大于5或者小于-5的时候,整个图形几乎呈现水平的趋势,导数趋近于0,这一点会导致在使用梯度下降法寻求损失函数极值的过程中参数无法更新,训练停滞,这一点在网络层数较多时尤其明显。
  • 非零中心化问题。Sigmoid的输出范围为0到1之间,随着输入x的增益严格单调递增,所以无论输入如何,其输出始终大于0。这样就会限制后续基于梯度调整参数的方向,导致调整过程中反复横跳调整参数的方向,训练收敛速度会显著低于零中心化激活函数(如Tanh)。
  • 计算开销大。因为涉及到指数运算,相比于ReLU等现代激活函数计算成本过高,拖累训练速度。
Sigmoid函数的Python实现如下:

Tanh函数

Tanh函数又称为双曲正切函数,可以认为Tanh函数是Sigmoid函数的变形形式(本质上Tanh是Sigmoid的零中心化改进)。与Sigmoid函数最大的不同在于,Tanh函数的取值范围为-1到1之间单调递增,且是0均值。Tanh函数的数学表达式为:
尽管其数学表达式看上去很复杂,但是它的图形跟Sigmoid非常类似。Tanh函数的图形如下所示:
notion image
Tanh激活函数的主要特性总结如下:
  • 输出范围在-1到1之间,并且以原点对称 (tanh(−x)=−tanh(x)) ,这样就避免了Sigmoid的非零中心化问题,使后续层输入分布更均衡(不再是恒正),从而加速梯度下降的收敛。
  • 与Sigmoid一样,输出随输入的增大逐渐单调平滑增大,函数处处可导。
  • 在梯度变化方面,相比Sigmoid而言,梯度在相同输入下更大,一定程度上缓解了梯度消失的问题。
总之,Tanh函数解决了Sigmoid存在的非零中心化的问题,可以加速基于梯度下降的参数训练过程,也一定程度上缓解了梯度消失的问题(当输入偏离0过大的时候仍然存在),但是因为要进行指数运算,仍然存在计算成本过高的问题。
Tanh函数的Python实现如下(实际上numpy已经有自己的tanh函数实现了):

ReLU函数

Sigmoid是神经网络发展早期应用比较广泛的激活函数,而深度学习时期应用最广泛的激活函数则是ReLU(Rectified Linear Unit)。
ReLU函数在输入大于0的时候,直接输出原值;而输出小于0的时候,直接返回0。其输出范围为0到无穷大,数学表达式为:
ReLU函数的图形如下所示:
notion image
ReLU激活函数的主要特性总结如下:
  • 分段线性。正区间保持线性,梯度始终为1,负区间强制归零。
  • 计算高效。是ReLU最大的优势,不需要任何三角函数和指数运算,计算速度比Sigmoid和Tanh快10倍以上。
  • 稀疏激活。在输入为负的情况下输出为0,此时神经元处于不激活状态,相当于只允许部分关键神经元处于激活状态,从而迫使整个网络优先选择最重要的特征。
  • 解决梯度消失的问题。在正区间梯度恒定为1,可以用于支持超深层的网络。而且线性正区间可避免饱和,梯度更新幅度较大,收敛速度显著快。
ReLU最大的问题是死亡神经元问题。该问题是指当使用ReLU激活函数时,某些神经元可能会出现永久失效的现象。在训练的过程中,当神经元的权重更新导致其输入恒为负值时,ReLU的输出恒为0,而梯度也为0,就会导致该神经元无法再更新参数,处于实质性的永久失效的状态。当模型中死亡神经元的占比较大时,就会明显的影响整个网络的工作性能和精度。
ReLU函数的Python实现如下:

Leaky ReLU

Leaky ReLU(Leaky Rectified Linear Unit)是ReLU激活函数的改进版本,旨在解决其以上提到的死亡神经元的问题。Leaky ReLU针对负区间引入了一个微小的正数斜率 a (一般是0.01):
因此,Leaky ReLU在负区间就不再恒定是0,而是以 a 为斜率的直线,取值范围也变成了负无穷大到正无穷大。
notion image
以上的这个设计可以有效的解决ReLU存在的死亡神经元问题:通过负区间的斜率 α 可保留微小的梯度,确保反向传播时权重仍然可以更新。
此外Leaky ReLU仍然保持了计算效率高的优势。其计算仅需一次乘法比较,计算复杂度与ReLU相近,远低于Sigmoid/Tanh的指数运算。

Softmax函数

Softmax函数是在神经网络中用于处理多分类任务。例如,对MNIST手写数字数据集进行识别的分类任务)的核心激活函数,其核心作用是将神经网络的原始输出转换为概率分布,使每个类别的概率值非负且总和为1。
Softmax函数的主要作用就是进行多分类的概率转换,其输入是一个多类别的向量数组 z=[z_1,z_2...z_k](总共有K个类别输出) ,其对应的数学表达式为:
在以上softmax的表达式中,在分子方面,对第 i 类输入 z_i 取指数,以放大各个分类的差异;在分母方面,取所有类别输入的指数和,实现归一化,以确保输出的总概率之和为1。
notion image
Softmax激活函数的主要特性总结如下:
  • 概率归一化。所有输入对应的输出值范围在0和1之间,并且所有输出之和为1,符合概率公理,非常适合用于分类决策。
  • 可放大差异。在softmax的计算中通过指数函数可以显著放大高输入的输出权重,这样可以使模型对高置信类别在输出重点表现更明确,减少模糊预测。
  • Softmax激活函数与交叉熵损失函数是分类任务的标准组合,梯度计算高效且收敛快。
Softmax函数的Python实现如下:

参考资料

盘点深度学习神经网络架构中的常用损失函数详细解释卷积神经网络中的卷积与池化计算
Loading...