在深度神经网络中,ReLU 相对于 sigmoid 函数有哪些优势?

机器算法验证 机器学习 神经网络 S形曲线
2022-02-10 11:40:58

非线性的最新技术是在深度神经网络中使用整流线性单元(ReLU)而不是 sigmoid 函数。有什么优势?

我知道使用 ReLU 训练网络会更快,而且更具生物启发性,还有什么其他优势?(也就是说,使用 sigmoid 有什么缺点)?

4个回答

ReLU 的另外两个主要好处是稀疏性和减少梯度消失的可能性。但首先回想一下 ReLU 的定义是其中a = Wx + bh=max(0,a)a=Wx+b

一个主要的好处是梯度消失的可能性降低。a>0时会出现这种情况。在这种情况下,梯度具有恒定值。相反,随着 x 绝对值的增加,sigmoid 的梯度变得越来越小。ReLU 的恒定梯度导致更快的学习。

ReLU 的另一个好处是稀疏性。a0时出现稀疏性。层中存在的此类单元越多,生成的表示就越稀疏。另一方面,Sigmoid 总是可能生成一些非零值,从而导致密集表示。稀疏表示似乎比密集表示更有益。

优势:

  • Sigmoid:不炸毁激活
  • Relu:不消失梯度
  • Relu:比 Sigmoid 类函数的计算效率更高,因为 Relu 只需要选择 max(0, ) 并且不像 Sigmoid 那样执行昂贵的指数运算x
  • Relu:在实践中,使用 Relu 的网络往往比 sigmoid 表现出更好的收敛性能。克里热夫斯基等人。

坏处:

  • Sigmoid:倾向于消失梯度(因为有一种机制可以随着“ ”的增加而减小梯度,其中“ ”是 sigmoid 函数的输入。Sigmoid 的梯度: . 当“ ”增长到无穷大时, )。aaS(a)=S(a)(1S(a))aS(a)=S(a)(1S(a))=1×(11)=0

  • Relu :倾向于炸毁激活(没有限制神经元输出的机制,因为“ ”本身就是输出)a

  • Relu : Dying Relu 问题 - 如果太多的激活低于零,那么 Relu 网络中的大多数单元(神经元)将简单地输出零,换句话说,死亡,从而禁止学习。(这在某种程度上可以处理,改用 Leaky-Relu。)

只是补充其他答案:

消失的渐变

其他答案正确地指出,输入越大(绝对值),sigmoid 函数的梯度越小。但是,可能更重要的影响是 sigmoid 函数的导数总是小于 1事实上,它最多为 0.25!

不利的一面是,如果你有很多层,你会将这些梯度相乘,并且许多小于 1 的值的乘积会很快变为零。

由于深度学习的最新技术表明更多的层有很大帮助,那么 Sigmoid 函数的这个缺点就是游戏杀手。你不能用 Sigmoid 进行深度学习。

另一方面,ReLu 函数的梯度对于0或对于这意味着您可以根据需要放置任意数量的层,因为梯度相乘既不会消失也不会爆炸。0a<01a>0

除了避免梯度消失问题之外,ReLU 的一个优点是它的运行时间要短得多。max(0,a) 的运行速度比任何 sigmoid 函数(例如逻辑函数 = 1/(1+e^(-a)) 运行得快得多,它使用的指数在经常执行时计算速度很慢)。这对于前馈和反向传播都是正确的,因为与 sigmoid 相比,ReLU 的梯度(如果 a<0,=0 否则 =1)也很容易计算(对于逻辑曲线=e^a/((1+e ^a)^2))。

尽管 ReLU 确实存在细胞死亡的缺点,这限制了网络的容量。为了克服这个问题,如果您注意到上述问题,只需使用 ReLU 的变体,例如leaky ReLU、ELU 等。