神经网络中的激活函数是网络层与层之间的重要组成部分。它们决定了每个神经元的输出,给网络带来非线性能力,从而帮助网络学习复杂的模式。常见的神经网络激活函数包括以下几种:
1. Sigmoid(逻辑函数)
公式:
-
特点:
-
输出范围是 (0, 1),常用于二分类问题的输出层。
-
由于其输出范围的限制,容易出现梯度消失的问题,尤其是在深层网络中。
-
-
应用:二分类问题的输出层。
-
缺点:梯度消失,计算较慢。
2. Tanh(双曲正切函数)
-
公式:
-
特点:
-
输出范围是 (-1, 1)。
-
比 Sigmoid 更加平滑,具有对称性。
-
依然存在梯度消失问题。
-
-
应用:隐藏层激活函数。
-
缺点:同样可能出现梯度消失,尤其在较深的网络中。
3. ReLU(Rectified Linear Unit)
-
公式:
-
特点:
-
输出范围是 (0, ∞)。
-
计算非常简单且高效,能够显著加速深度神经网络的训练。
-
可以有效避免梯度消失问题,适用于大部分任务。
-
-
应用:多用于隐藏层。
-
缺点:可能会出现"死神经元"问题(当输入总是小于0时,神经元无法激活)。
4. Leaky ReLU(泄露的 ReLU)
-
公式:
其中 α 是一个小的常数,通常是 0.01。
-
特点:
-
解决了 ReLU 在负值区间“死神经元”问题,通过对负值部分进行微小的斜率 (α\alpha) 处理,使得神经元能够激活。
-
计算简单,速度较快。
-
-
应用:隐藏层。
-
缺点:可能对某些任务的性能提升不明显,且 α\alpha 的选择有时需要调试。
5. ELU(Exponential Linear Unit)
-
公式:
其中 α 是一个常数,通常是 1。
-
特点:
-
解决了 ReLU 的死神经元问题,同时能够让负值部分也有非零输出,避免了梯度消失。
-
具有较好的学习性能和泛化能力,尤其适用于深层网络。
-
-
应用:隐藏层。
-
缺点:计算比较复杂,相比 ReLU 稍慢。
6. Softmax(适用于多分类问题的激活函数)
-
公式:
其中 xi 是输入的第 i 个元素,xj 是输入向量中的所有元素。
-
特点:
-
输出为概率分布,所有输出值在 (0, 1) 之间,且总和为 1。
-
用于多分类问题的输出层。
-
-
应用:多分类问题的输出层,通常与交叉熵损失函数一起使用。
-
缺点:计算较复杂,尤其当类别数较多时。
7. Swish
-
公式:
其中 σ(x)是 Sigmoid 函数。
-
特点:
-
新型激活函数,具有连续性和非线性。
-
在深层网络中表现出色,能够有效地避免梯度消失问题。
-
-
应用:隐藏层。
-
缺点:计算复杂,训练速度可能稍慢。
8. Softplus
-
公式:
-
特点:
-
可以看作是 ReLU 的平滑版本,输出始终大于 0。
-
具有平滑的导数,避免了 ReLU 的“死神经元”问题。
-
-
应用:隐藏层。
-
缺点:计算相对较慢。
9. Gaussian(高斯激活函数)
-
公式:
-
特点:
-
输出呈钟形曲线,值域为 (0, 1),在输入为 0 时输出最大。
-
可以使得神经网络具有良好的拟合能力。
-
-
应用:某些特定任务,如局部特征提取。
-
缺点:计算较复杂,训练效率较低。
10. Hard Sigmoid
-
公式:
-
特点:
-
计算简单,效率较高。
-
用于某些计算效率要求较高的场景。
-
-
应用:隐藏层。
-
缺点:梯度较小,可能影响网络学习。
总结
常见的激活函数有:
-
Sigmoid 和 Tanh:传统的激活函数,适用于简单的网络,但可能会遇到梯度消失问题。
-
ReLU 和 Leaky ReLU:最常用的激活函数,通常用于隐藏层,计算效率高,能有效避免梯度消失问题。
-
ELU:解决 ReLU 的缺点,适用于深度网络。
-
Softmax:用于多分类问题的输出层,输出概率分布。
-
Swish 和 Softplus:较新的激活函数,性能较好,但计算稍慢。