好多的ReLU函数,我该怎么去选择呢?????????????
下面这些可能会有所帮助


标准ReLU

标准 ReLU 函数:

$$
f(x) = max(0, x)
$$

好处:收敛快、计算简单。

问题:当输入为负时,输出恒为 0 → 神经元可能“死掉”(梯度始终为 0,无法更新)。

LReLU

公式:

$$
f(x) = max(\alpha x, x)
$$

其中 𝛼是一个 固定的小常数(通常取 0.01)。

特点:负数区域仍然有一个很小的斜率,不会完全归零。

好处:缓解神经元死亡问题,但超参数 𝛼 需要人为设置

PReLU

PReLU 的公式如下:

$$
f(x) = max(\alpha x, x)
$$

看起来和 Leaky ReLU (LReLU) 一样,但最大不同点是:

𝛼 不是固定的常数,而是一个需要学习的参数,和网络权重一起通过反向传播更新。

RReLU

公式:
$$
f(x) = max(\alpha x, x)
$$

不同之处在于:

训练时
𝛼不是固定的,而是 从一个区间 $[l,\mu]$(例如 0.1–0.3)随机采样。

测试时
取 $\alpha = \frac{l+u}{2}$ 作为固定值。

好处:

引入随机性,相当于一种正则化(regularization),能减少过拟合。

更适合小数据集的训练。

对比

激活函数 负区间斜率 取值方式 特点
ReLU 0 固定 可能“神经元死亡”
LReLU 小常数 (如 0.01) 手动设定 缓解死亡问题
PReLU 区间内随机取值 训练中自动优化 更灵活,性能往往优于 LReLU
RReLU 可学习参数 训练时随机,测试时均值 正则化效果,适合小数据集

总结

  • 浅层网络在分类器时,sigmoid 函数及其组合通常效果更好。
  • 由于梯度消失问题,有时要避免使用 sigmoidtanh 函数。
  • relu 函数是一个通用的激活函数,目前在大多数情况下使用。
  • 如果神经网络中出现死神经元,那么 prelu 函数就是最好的选择。
  • relu 函数只能在隐藏层中使用。
  • 通常,可以从 relu 函数开始,如果 relu 函数没有提供最优结果,再尝试其他激活函数。