【activation】在机器学习和深度学习中,“activation”(激活)是一个核心概念,指的是神经网络中每个神经元在接收到输入后所进行的计算过程。激活函数是决定神经元是否被“激活”的关键因素,它为模型引入了非线性,使得网络能够学习和表示更复杂的模式。
一、激活函数的作用
1. 引入非线性:如果没有激活函数,神经网络将退化为一个线性模型,无法处理复杂的数据关系。
2. 控制输出范围:不同的激活函数可以限制神经元的输出范围,有助于梯度下降的收敛。
3. 模拟生物神经元行为:激活函数可以模仿真实神经元的“兴奋”或“抑制”状态。
二、常见的激活函数
以下是一些常用的激活函数及其特点:
激活函数名称 | 公式 | 特点 | 应用场景 |
Sigmoid | $ \sigma(x) = \frac{1}{1 + e^{-x}} $ | 输出范围在0到1之间,适合二分类问题 | 早期神经网络、逻辑回归 |
Tanh | $ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} $ | 输出范围在-1到1之间,比Sigmoid更对称 | 传统RNN、早期CNN |
ReLU | $ \text{ReLU}(x) = \max(0, x) $ | 计算简单,缓解梯度消失问题 | 现代深度学习模型(如CNN、DNN) |
Leaky ReLU | $ \text{Leaky ReLU}(x) = \max(0.01x, x) $ | 解决ReLU的“死亡”问题 | 需要避免零梯度的情况 |
Softmax | $ \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} $ | 多分类问题中概率归一化 | 分类任务输出层 |
ELU | $ \text{ELU}(x) = \begin{cases} x & x > 0 \\ \alpha (e^x - 1) & x \leq 0 \end{cases} $ | 在负值区域有平滑特性 | 提高模型性能 |
三、选择激活函数的建议
- 对于隐藏层:推荐使用ReLU或其变体(如Leaky ReLU、ELU),因为它们在大多数情况下表现良好且计算效率高。
- 对于输出层:
- 二分类问题:Sigmoid 或 Softmax
- 多分类问题:Softmax
- 回归问题:无激活函数(线性)
- 对于RNN等序列模型:Tanh或Sigmoid常用于门控机制中。
四、总结
激活函数是构建神经网络的重要组成部分,决定了模型的学习能力和表达能力。不同类型的激活函数适用于不同的场景,合理选择激活函数有助于提升模型的性能和稳定性。随着深度学习技术的发展,新的激活函数也在不断被提出和优化,以适应更复杂的任务需求。