激活函数是深度学习模型中的关键组成部分,用于引入非线性特性,使神经网络能够学习复杂的模式和映射关系;神经网络本质上是一个复合函数。如果没有激活函数,无论网络有多少层,其输出都只是输入的线性组合。激活函数通过引入非线性,使模型能够拟合复杂的非线性数据分布;激活函数决定了神经元在给定输入下的输出值,从而控制神经元是否被激活;一些激活函数(如ReLU)具有稀疏性和计算效率高的特点,有助于加快训练过程;下面是对一些常用激活函数的汇总介绍:
一、激活函数
激活函数一般分为两类,一类是嵌入到某个主干网络层的后面,例如卷积层+BN层的后面;一类是嵌入到模型最后的head层做具体的输出,例如分类、概率输出等;
1.1 嵌入主干网络
1.1.1. Tanh(双曲正切函数)

- 公式:
- 特点:
输出范围为 (-1, 1),是对称版本的Sigmoid函数。相比Sigmoid,梯度下降更快,但也容易出现梯度消失问题。 - 应用场景:
常用于隐藏层。
1.1.2. ReLU(Rectified Linear Unit)

- 公式:
- 特点:
计算简单,能有效缓解梯度消失问题。但可能导致“神经元死亡”(部分神经元永远输出0)。 - 应用场景:
是目前最常用的激活函数之一,广泛应用于卷积神经网络(CNN)和全连接网络。
1.1.3. Leaky ReLU

- 公式:
- (α 是一个小的正数)
- 特点:
解决了ReLU的“神经元死亡”问题,允许负值输入有小的梯度。 - 应用场景:
替代ReLU以避免梯度消失。
1.1.4. ELU(Exponential Linear Unit)

- 公式:
- 特点:
在负值区域平滑过渡,减少梯度消失问题。 - 应用场景:
隐藏层。
1.1.5. Swish

- 公式:
- 特点:
自门控激活函数,由Google提出,在某些任务中表现优于ReLU。 - 应用场景:
新兴的激活函数,适用于多种深度学习任务。
1.1.6. GELU

- 公式:
- 特点:
GELU 是一个连续且平滑的函数,避免了 ReLU 在 x=0x=0 处不可导的问题;GELU 的输出依赖于输入 xx 和其概率分布,具有自适应特性,能够更好地捕捉数据的非线性关系;类似于 ReLU 和 ELU,GELU 在负值区域也有一定的梯度,可以有效缓解梯度消失问题;由于涉及误差函数或双曲正切函数,GELU 的计算成本比 ReLU 稍高; - 应用场景:
GELU 是 Transformer 模型(如 BERT、GPT 等)中的默认激活函数之一,尤其适合处理文本数据,能够提升模型对语义的理解能力;
1.2 嵌入head层
1.2.1. Sigmoid(σ)

- 公式:
- 特点:
输出范围为 (0, 1),适合用作二分类问题的概率输出。但存在梯度消失问题(当输入较大或较小时,导数接近零)。 - 应用场景:
主要用于输出层的二分类任务。
1.2.2. Softmax

- 公式:
- 特点:
将多个类别的输出转化为概率分布,常用于多分类任务。 - 应用场景:
输出层的多分类问题。
二、总结
激活函数的选择取决于具体任务和网络结构:
- 分类问题:Sigmoid(二分类)、Softmax(多分类)。
- 回归问题:通常不使用激活函数或选择线性激活函数。
- 隐藏层:ReLU及其变体(Leaky ReLU、ELU等)是最常用的选择。
通过合理选择激活函数,可以显著提升模型的性能和训练效率。