![](https://csdnimg.cn/release/download_crawler_static/86326303/bg6.jpg)
88 2018 年 10 月 14 日 第 4 章 前馈神经网络
数。ReLU 实际上是一个斜坡(ramp)函数,定义为
ReLU(x) =
x x ≥ 0
0
x <
0
(4.16)
= max(0, x). (4.17)
优点 采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。
ReLU 函数被认为有生物上的解释性,比如单侧抑制、宽兴奋边界(即兴奋程度
也可以非常高)。在生物神经网络中,同时处于兴奋状态的神经元非常稀疏。人
脑中在同一时刻大概只有 1 ∼ 4% 的神经元处于活跃状态。Sigmoid 型激活函数
会导致一个非稀疏的神经网络,而 ReLU 却具有很好的稀疏性,大约 50% 的神
经元会处于激活状态。
在优化方面,相比于 sigmoid 型函数的两端饱和,ReLU函数为左饱和函数,
且在 x > 0时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯
度下降的收敛速度。
参见第4.6.2节。
缺点 ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,
会影响梯度下降的效率。此外,ReLU 神经元在训练时比较容易“死亡”。在训
ReLU 神 经 元 指 采 用 ReLU
作为激活函数的神经元。
练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元
在所有的训练数据上都不能被激活。那么,这个神经元自身参数的梯度永远都
会是 0,在以后的训练过程中永远不能被激活。这种现象称为死亡 ReLU 问题
(Dying ReLU Problem),并且也有可能会发生在其它隐藏层。
参见公式 (4.60)。
在实际使用中,为了避免上述情况,有几种 ReLU 的变种也会被广泛使用。
4.1.2.1 带泄露的 ReLU
带泄露的 ReLU(Leaky ReLU)在输入 x < 0 时,保持一个很小的梯度 λ。
这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被
激活 [Maas et al., 2013]。带泄露的 ReLU 的定义如下:
LeakyReLU(x) =
x if x > 0
γx if x ≤ 0
(4.18)
= max(0, x) + γ min(0, x), (4.19)
其中 γ 是一个很小的常数,比如 0.01。当 γ < 1 时,带泄露的 ReLU 也可以写为
LeakyReLU(x) = max(x, γx), (4.20)
相当于是一个比较简单的 maxout 单元。
参见第4.1.3节。
邱锡鹏:《神经网络与深度学习》 https://nndl.github.io/