ReLU神经元输出零,并且所有负输入的零导数都为零。因此,如果网络中的权重始终导致ReLU神经元的负输入,则该神经元实际上无助于网络的训练。在数学上,来自该神经元的权重更新对梯度的贡献始终为零(有关详细信息,请参见数学附录)。
在给定神经元的所有输入中,您的体重最终会产生负数的机会是什么?通常很难回答这个问题,但是一种可能发生的方法是对权重进行太大的更新。回想一下,通常通过使用梯度下降法将权重的损失函数最小化来训练神经网络。也就是说,神经网络的权重是函数的“变量” (损失取决于数据集,但仅是隐式的:通常是每个训练示例的总和,每个示例实际上是一个常数)。由于任何函数的梯度始终指向最陡峭的增加方向,因此我们要做的就是计算的梯度L(W)LL相对于重物并沿相反的方向移动一点,然后冲洗并重复。这样,我们最终得到的(局部)最小值。因此,如果输入的大小大致相同,则在梯度方向上的较大步幅可能会给您带来权重,而权重却给出相似的输入,最终可能为负数。WL
通常,发生什么情况取决于信息如何通过网络流动。您可以想象,随着训练的进行,神经元产生的值可能会漂移,并使权重杀死通过它们的所有数据流成为可能。(尽管有时,由于网络中较早的权重更新,它们可能会留下这些不利的配置!)。我在有关权重初始化的博客文章中探讨了这个想法,权重初始化也可能导致此问题及其与数据流的关系。我认为我的观点可以通过那篇文章的情节加以说明:
在以不同的初始化策略通过网络后,该图在带有ReLU激活的5层多层感知器中显示了激活。您会看到,根据重量配置,网络的输出可能会被阻塞。
数学附录
从数学上讲,如果是网络的损失函数,则是第层中第个神经元的输出,是ReLU神经元,并且是 -st层的线性输入,然后通过链式法则,损失的导数相对于连接第 -th和 -的权重st层是Lx(i)jjif(s)=max(0,s)s(i)j(i+1)i(i+1)
∂L∂w(i)jk=∂L∂x(i+1)k∂x(i+1)k∂w(i)jk.
右边的第一项可以递归计算。右边的第二项是唯一直接涉及权重,可以分解为w(i)jk
∂x(i+1)k∂w(i)jk=∂f(s(i)j)∂s(i)j∂s(i)j∂w(i)jk=f′(s(i)j)x(i)j.
从中可以看出,如果输出始终为负,则不会更新进入神经元的权重,并且神经元也不会有助于学习。