一、激活函数是什么?
简单来说,激活函数是在人工神经网络的神经元上运行的函数,负责对神经元的加权输入进行非线性变换后输出。
核心价值在于引入非线性:如果没有激活函数(或使用线性激活函数),无论神经网络有多少层,最终都等价于一个线性变换,无法拟合复杂的非线性问题。正是激活函数的存在,赋予了神经网络强大的表达能力。
二、Sigmoid
数学公式

值域
(0, 1)
函数图像特征
呈平滑的S形曲线(S型生长曲线),在x=0处取值0.5,当x趋向+∞时趋近于1,当x趋向−∞时趋近于0。

优点
-
输出可解释为概率:值域在(0,1)之间,非常适合表示概率,因此常作为二分类输出层的激活函数
-
平滑且可导:处处连续可微,数学性质好,便于梯度下降优化
-
单调性:函数严格单调,输入越大输出越大,符合直觉
缺点
-
梯度消失问题:当输入绝对值较大时(如x>5或x<−5),函数进入饱和区,导数趋近于0。在深层网络中,多个饱和区导数相乘会导致梯度逐层衰减,靠近输入层的权重几乎无法更新
-
非零中心:输出全部为正数,这会导致在反向传播时,所有参数的梯度符号相同,使权重更新呈现"Z字形"路径,降低收敛效率
-
计算开销大:涉及指数运算,相比ReLU等简单操作更耗时
适用场景
-
二分类问题的输出层(如判断是否为垃圾邮件)
-
现代深度网络中已很少用于隐藏层,被ReLU等更高效的激活函数取代
三、Tanh(双曲正切)
数学公式

值域
(-1, 1)
函数图像特征
与Sigmoid形状相似,同样是S形曲线,但关于原点对称(零中心),在x=0处取值为0。

优点
-
零中心输出:均值为0,有助于数据居中,避免Sigmoid中梯度同向更新的问题,优化效率更高
-
平滑可导:与Sigmoid一样具有优良的数学性质
-
梯度幅值更大:在x=0附近的导数(最大为1)大于Sigmoid(最大为0.25),早期梯度信号更强
缺点
-
同样存在梯度消失问题:在输入饱和区(绝对值较大时),梯度趋近于0,深层网络中仍会面临梯度衰减
-
计算开销大:同样涉及指数运算
适用场景
-
作为隐藏层激活函数(早期常用,现已被ReLU系列取代)
-
在部分RNN/LSTM中仍会使用,因为其零中心特性有助于缓解循环网络中的优化问题
四、ReLU(修正线性单元)
数学公式

值域
[0, +∞)
函数图像特征
在x<0时恒为0,在x>0时是一条斜率为1的射线,在原点处不可导(但实际实现中通常取左导数或右导数)。

优点
-
计算极其高效:只需比较大小和取最大值,不涉及指数运算,计算速度远快于Sigmoid/Tanh
-
有效缓解梯度消失:在正区间(x>0)梯度恒为1,信号可以无损传播,使得深层网络的训练成为可能
-
加速收敛:相比Sigmoid/Tanh,ReLU的收敛速度通常快约6倍
-
稀疏激活性:负值被置为0,使神经元输出具有稀疏性(约50%神经元被抑制),有助于减少过拟合,产生更紧凑的特征表示
缺点
-
非零中心:输出均为非负数,可能导致梯度更新效率降低
-
Dead ReLU问题(神经元死亡):当输入落入负区间时,梯度为0,且权重不再更新。一旦神经元"死亡",它将永远保持不激活状态。常见原因包括:学习率过大导致权重大幅更新、初始化不佳、以及大量输入为负
适用场景
-
隐藏层的绝对首选:绝大多数现代卷积神经网络(CNN)和全连接网络都默认使用ReLU
-
初学者可以遵循"不确定用什么,就先上ReLU"的原则
五、Softmax
数学公式

其中K为类别总数。
值域
(0, 1),且所有类别的输出总和为1
核心特点
Softmax是唯一一个专用于输出层、不作为隐藏层使用的激活函数。它将一个K维实值向量"压缩"为一个K维概率分布向量:
-
每个元素在(0,1)之间
-
所有元素之和为1
-
保持了原始输入的大小顺序(即输入越大,输出概率越大)
优点
-
输出具有明确的概率解释,可直接用于多分类任务的决策
-
指数运算放大了差异:较大的输入值在指数放大后占比更高,使概率分布更"尖锐",有利于明确分类
-
处处可导,便于与交叉熵损失函数配合进行梯度计算
缺点
-
当某个输入远大于其他输入时,输出概率会极度接近1,容易导致梯度极小
-
计算涉及指数求和,当类别数K很大时开销较高(大规模分类场景中常使用分层Softmax或负采样来优化)
适用场景
-
多分类问题的输出层(如图像识别中的10分类、1000分类)
-
注意:二分类问题输出层通常用Sigmoid而非Softmax(二者在二分类情况下等效,但Sigmoid计算更轻量)
六、四大激活函数速查对比表
| 激活函数 | 数学表达式 | 值域 | 是否零中心 | 是否存在梯度消失 | 计算成本 | 主要用途 |
|---|---|---|---|---|---|---|
| Sigmoid | 1/(1+e−x) | (0, 1) | ❌ | ✅ 严重 | 高 | 二分类输出层 |
| Tanh | (ex−e−x)/(ex+e−x) | (-1, 1) | ✅ | ✅ 严重 | 高 | 隐藏层(已少用) |
| ReLU | max(0,x) | [0, +∞) | ❌ | ❌(正区) | 极低 | 隐藏层默认首选 |
| Softmax | exi/∑exj | (0,1),和为1 | ❌ | ❌ | 中高 | 多分类输出层 |
七、总结
-
隐藏层 → ReLU(如果遇到神经元死亡,再考虑换Leaky ReLU或ELU)
-
二分类输出 → Sigmoid
-
多分类输出 → Softmax
-
回归输出 → 线性层(无激活函数)