【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之间,对称性更好 | 早期神经网络,隐藏层 |
| 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} $ | 更平滑的梯度,减少训练时间 | 高性能要求的模型 |
三、选择激活函数的原则
1. 任务类型:二分类使用Sigmoid或Softmax;多分类使用Softmax;回归任务可不使用激活函数或使用线性激活。
2. 模型结构:深层网络更推荐使用ReLU及其变体,以避免梯度消失。
3. 数据特性:如果数据范围较大,可能需要使用Tanh或ELU等具有更大输出范围的激活函数。
4. 训练稳定性:某些激活函数(如Leaky ReLU)可以提高训练过程的稳定性。
四、总结
激活函数是神经网络中实现非线性的关键组件,不同的激活函数适用于不同类型的模型和任务。合理选择激活函数可以显著提升模型的性能和收敛速度。在实际应用中,通常会根据具体问题尝试多种激活函数,并通过实验选择最优方案。


