免责声明:这些只是我的观点,以及我如何理解 ReLU 的直觉。
ReLU 有 1 个点的“剧烈”变化,并且是“否则线性”。
没错,这一切都不同!
假设第一层中的神经元输出的负值。然后,使用 ReLU 激活函数,神经元计算线。z=wTx+bz=0
的正值。然后,第二个神经元计算线。zz=z
希望下图能说明 ReLU 如何变得有用。

通过 ReLU 激活和适当的权重调整,第 2 层可能会计算一个新特征(三角形)。如果我们添加第 3 层,则对应的第三个神经元可能可以计算出一个看起来像四边形的特征,依此类推……(这甚至可以想象成和孩子玩积木游戏!)
ReLU 的这个属性它帮助每一层充当下一层的构建块,使其非常强大(无论我们训练的数据集如何)。此外,ReLU 在计算上比任何其他激活函数更高效和简单(它要么是 0,要么是相同的东西,z)。因此,ReLU 成为大多数类型数据的最佳选择(除非数据本身具有一些可以通过其他激活函数(如 sigmoid 或 tanh)更好地建模的属性)。
相比之下,没有不连续点的完全线性激活函数(如 ReLU 中的 0)只能一遍又一遍地计算相同的特征——它只是改变幅度或尺度。

关于你的第二个问题 - 不,我认为奇点(或不连续点)是什么没有任何意义,但必须至少有一个点,任何点 - 只是为了让不同层的神经元计算不同的功能(这里是线条)。但是 0 是一个“好”的值,它很容易将数字线分为负边和正边(很容易想象),也有助于加快计算速度。
但是对于 ReLU,也会出现死亡 ReLU 的问题——当每个连续层中相应神经元然后,我们又回到了我们的模型中只有一个线性函数。在这种情况下,我们使用 ReLU 的一种变体,称为leaky ReLU,它计算一条斜率较小的线,即使为 0。
(leaky ReLU 函数由. 通常,我们不希望我们的激活值在负值上变大,所以我们将乘以一个非常小的因子,而 0.01 是一个可以做到这一点的常数。同样,我不认为对值 0.01 - 它必须是任何小的因子,默认值为 0.01。)zz
g(z)=max(0.01z,z)z