要了解使用ReLU之类的函数甚至可能进行反向传播,您需要了解使反向传播算法如此有效的导数的最重要属性是什么。该属性是:
f(x) ~ f(x0) + f'(x0)(x - x0)
如果您现在将x0
视为参数的实际值,则可以知道(知道成本函数的值及其导数)稍微改变参数时成本函数的行为。这是反向传播中最关键的事情。
由于计算成本函数对于成本计算至关重要,因此您将需要您的成本函数来满足上述属性。很容易检查ReLU是否在所有地方都满足此属性,除了很小的0
邻域之外。这是ReLU唯一的问题-当我们接近0
时我们不能使用此属性。
为了克服这个问题,您可以将0
的ReLU导数值选择为1
或0
。另一方面,大多数研究人员不会仅仅因为以下事实而将这个问题视为严重问题,因为在ReLU计算过程中接近于0
相对很少。
从上面-当然-从纯粹的数学观点来看,将ReLU与反向传播算法一起使用是不合理的。另一方面-实际上,它在0.
左右具有这种怪异的行为通常没有什么区别0.
0
在深入探讨神经网络以及如何有效地训练它们的主题时,我遇到了使用非常简单的激活函数(例如,整流线性单元(ReLU))而不是经典的平滑S型曲线的方法。 ReLU函数在原点是不可微的,因此,根据我的理解,反向传播算法(BPA)不适合用于使用ReLU训练神经网络,因为多变量演算的链规则仅指平滑函数。但是,我所阅读的有关使用ReLU的论文均未解决此问题。 ReLU似乎非常有效,似乎几乎在任何地方都可以使用,而不会引起任何意外行为。有人可以向我解释为什么可以通过反向传播算法完全训练ReLU吗?