根据定义,Relu 是max(0,f(x))
. 那么它的梯度定义为:
1 if x > 0 and 0 if x < 0
。
这是否意味着当 x < 0 时梯度始终为 0(消失)?那为什么我们说 Relu 没有梯度消失问题呢?
根据定义,Relu 是max(0,f(x))
. 那么它的梯度定义为:
1 if x > 0 and 0 if x < 0
。
这是否意味着当 x < 0 时梯度始终为 0(消失)?那为什么我们说 Relu 没有梯度消失问题呢?
你基本上是对的!ReLU 确实存在梯度消失的问题,但只是一方面,所以我们称它为别的:“垂死的 ReLU 问题”。有关更多信息,请参阅此堆栈溢出响应:什么是神经网络中的“垂死的 ReLU”问题?
这是一个小的语义差异。当您超出标准操作范围时,许多函数(tanh 和逻辑/sigmoid)的导数非常接近于零。这就是“梯度消失”问题。你越糟糕,就越难回到好的区域。ReLU不会随着您在正方向上越远而变得更糟,因此不会出现梯度消失问题(在那一侧)。这种不对称性可能足以证明将其称为不同的东西是合理的,但这些想法非常相似。
消失意味着它趋向于 0,但永远不会真正为 0。梯度为 0 使得计算非常容易,梯度接近 0 意味着存在变化,只是非常微小的变化,这意味着学习缓慢和数值问题。1 和 0 是这类优化问题中最容易计算的两个数字。