我知道 ReLU 通常用于神经网络,而不是隐藏层的 sigmoid 激活函数。然而,许多常用的 ReLU 在零处是不可微的。梯度下降(随机或批量)经常用于优化这些。
GD 需要函数是平滑和连续的。所以我很困惑 ReLU 在使用 GD 寻找全局最小值的情况下如何仍然工作?
我知道 ReLU 通常用于神经网络,而不是隐藏层的 sigmoid 激活函数。然而,许多常用的 ReLU 在零处是不可微的。梯度下降(随机或批量)经常用于优化这些。
GD 需要函数是平滑和连续的。所以我很困惑 ReLU 在使用 GD 寻找全局最小值的情况下如何仍然工作?
在实践中,一个隐藏单元的输入不太可能恰好为 0,因此在这种情况下,梯度取 0 还是取 1 并不重要。例如Theano 认为 0 处的梯度是 0。Tensorflow 的游乐场也是如此:
public static RELU: ActivationFunction = {
output: x => Math.max(0, x),
der: x => x <= 0 ? 0 : 1
};
(1) 确实注意到了不可微分的理论问题:
本文表明,整流神经元是一种更好的生物神经元模型,尽管在零处存在硬非线性和不可微分性,但它的性能与双曲正切网络相同或更好,创建具有真零的稀疏表示,这似乎非常适合对于自然稀疏的数据。
但它仍然有效。
附带说明一下,如果您使用 ReLU,您应该注意网络中的死单元(= 从不激活的单元)。如果您在训练网络时看到许多死单元,您可能需要考虑切换到leaky ReLU。