激活函数的作用
激活函数为神经网络引入非线性,使模型能够学习复杂模式。不同激活函数在梯度传播、计算效率、输出范围等方面存在差异,直接影响训练效果。
常见激活函数对比
Sigmoid
- 公式 :
( \sigma(x) = \frac{1}{1 + e^{-x}} ) - 优点 :
输出范围在(0,1),适合二分类问题的输出层。 - 缺点 :
易导致梯度消失(梯度在反向传播时趋近于0);计算量较大。
Tanh
- 公式 :
( \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} ) - 优点 :
输出范围(-1,1),中心对称,梯度收敛比Sigmoid更快。 - 缺点 :
仍存在梯度消失问题。
ReLU (Rectified Linear Unit)
- 公式 :
( \text{ReLU}(x) = \max(0, x) ) - 优点 :
计算高效;缓解梯度消失(正区间梯度恒为1)。 - 缺点 :
"神经元死亡"问题(负区间梯度为0,部分神经元可能永久失效)。
Leaky ReLU
- 公式 :
( \text{LeakyReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \ \alpha x & \text{if } x < 0 \end{cases} )
(通常 ( \alpha = 0.01 )) - 优点 :
解决ReLU的"神经元死亡"问题,负区间引入微小梯度。 - 缺点 :
需要手动调整 ( \alpha ) 超参数。
ELU (Exponential Linear Unit)
- 公式 :
( \text{ELU}(x) = \begin{cases} x & \text{if } x \geq 0 \ \alpha(e^x - 1) & \text{if } x < 0 \end{cases} ) - 优点 :
负区间平滑收敛,缓解梯度消失;输出均值接近0,加速训练。 - 缺点 :
计算复杂度较高(涉及指数运算)。
Swish
- 公式 :
( \text{Swish}(x) = x \cdot \sigma(\beta x) )
(( \sigma )为Sigmoid函数,( \beta )可学习或固定) - 优点 :
平滑非单调,实验显示在深层网络中表现优于ReLU。 - 缺点 :
计算量较大(包含Sigmoid运算)。
选择建议
- 隐藏层: 优先使用ReLU或其变体(Leaky ReLU、ELU),平衡效率与性能。
- 输出层 :
- 二分类:Sigmoid
- 多分类:Softmax
- 回归:线性激活(无激活函数)或Tanh(输出需归一化时)。
- 实验调优: 深层网络可尝试Swish或GELU(高斯误差线性单元)。
梯度对比示例
以反向传播为例:
- ReLU梯度 :
( \frac{d}{dx}\text{ReLU}(x) = \begin{cases} 1 & \text{if } x > 0 \ 0 & \text{if } x \leq 0 \end{cases} ) - Tanh梯度 :
( \frac{d}{dx}\tanh(x) = 1 - \tanh^2(x) )
通过对比可见,ReLU在正区间的梯度稳定性更优,而Tanh的梯度随输入变化剧烈。