激活函数

是连接感知机和神经网络的桥梁

纯粹的层级关系之间如果只有线性关系的话,是不可能表示一个非线性的划分

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−tanh⁡2(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。
  • 也可考虑 SwishGELU(现代 Transformer 常用),它们结合了 ReLU 和 Sigmoid 的优点。

4. 零中心性

  • 若希望激活值零中心以加速收敛,Tanh 或 Leaky ReLU 比 ReLU 更优,但实践中 ReLU 的快速性往往弥补这一差距。