激活函数
激活函数
是连接感知机和神经网络的桥梁
纯粹的层级关系之间如果只有线性关系的话,是不可能表示一个非线性的划分
h(x)可以将输入信号的加权总和转换为输出信号,引入非线性,起到“激活神经元”的作用,所以被称为激活函数
如果没有激活函数,整个神经网络就等效于单层线性规划,不论如何加深层数,总是存在与之等效的“无隐藏层的神经网络”。
激活函数必须是非线性函数,使得神经网络能够学习和表示复杂的非线性关系。
Sigmoid
$$
\sigma(x) = \frac{1}{1 + e^{-x}}
$$
性质
- 输出范围:(0, 1),适合表示概率。
- 单调性:单调递增。
- 光滑性:处处可导,导数
σ′(x)=σ(x)(1−σ(x)) - 饱和性:当
∣x∣很大时,导数趋近于 0(软饱和)
优点
- 输出有界,适合作为二分类的输出层。
缺点
- 梯度消失:两端饱和区导数接近 0,深层网络反向传播时梯度易消失。
- 非零中心:输出恒正(>0),导致后层输入全正,可能使权重更新呈锯齿状(梯度全正或全负),收敛变慢。
- 指数运算:计算量稍大。
Tanh(双曲正切)
$$
\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
$$
性质
- 输出范围:(-1, 1),零中心。
- 导数:
tanh′(x)=1−tanh2(x)。 - 也是软饱和函数。
优点
- 零中心输出:克服了 Sigmoid 非零中心的问题,收敛速度通常比 Sigmoid 快。
缺点
- 仍存在梯度消失:饱和区导数接近 0。
- 未从根本上解决深层网络的梯度问题。
ReLU(Rectified Linear Unit)
$$
\text{ReLU}(x) = \max(0, x)
$$
性质
- 单侧抑制:负半轴输出 0,正半轴线性。
- 稀疏性:负输入被置零,产生稀疏表示。
- 不可导点:在 x=0 处不可导(通常次梯度处理)。
优点
- 计算极简:max 操作,无需指数。
- 缓解梯度消失:正半轴导数为 1,梯度传播有效。
- 稀疏性:带来信息解耦,可能提升效果。
- 收敛速度快:经验上远快于
Sigmoid/Tanh。
缺点
- 神经元死亡:如果输入长期为负(如学习率过大或初始化不当),梯度为 0,神经元再无法激活。
- 非零中心:输出非负,可能影响下一层训练。
- 无界输出:可能造成激活值爆炸(需配合正则化)
Leaky ReLU / PReLU
$$
\text{LeakyReLU}(x) = \max(\alpha x, x)
$$
$$
\text{LeakyReLU}(x) =
\begin{cases}
x, & \text{if } x > 0 \
\alpha x, & \text{otherwise}
\end{cases}
$$
性质
- 负半轴给予一个小的非零斜率,保留部分信息。
优点
- 解决死亡问题:负区间梯度不为零,神经元可恢复。
- 保留 ReLU 的计算效率和正半轴优势。
缺点
- 引入超参数 αα(PReLU 则可学习)。
- 负区间线性,不带来额外非线性。
激活函数选择原则
1. 默认首选
- 隐藏层:ReLU 及其变体(如 Leaky ReLU)通常是默认首选,计算快、效果好。
- 若担心神经元死亡,可用 Leaky ReLU 或 PReLU。
2. 输出层选择
- 二分类:Sigmoid(输出概率)。
- 多分类:Softmax(将输出归一化为概率和=1)。
- 回归:线性(无激活函数)或 ReLU(若输出非负)。
3. 梯度消失敏感任务
- 若网络很深(如>20层),ReLU 族优于 Sigmoid/Tanh。
- 也可考虑 Swish 或 GELU(现代 Transformer 常用),它们结合了 ReLU 和 Sigmoid 的优点。
4. 零中心性
- 若希望激活值零中心以加速收敛,Tanh 或 Leaky ReLU 比 ReLU 更优,但实践中 ReLU 的快速性往往弥补这一差距。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WereAsh!
评论
ValineDisqus




