反向传播算法如何处理不可微分的激活函数?

时间:2015-05-14 11:59:42

标签: machine-learning neural-network deep-learning backpropagation

在深入研究神经网络的主题以及如何有效地训练它们时,我遇到了使用非常简单的激活函数的方法,例如重新设计的线性单元(ReLU),而不是经典的平滑sigmoids。 ReLU函数在原点是不可微分的,因此根据我的理解,反向传播算法(BPA)不适合用ReLU训练神经网络,因为多变量微积分的链规则仅指平滑函数。 但是,没有关于使用我读过的ReLU的论文解决了这个问题。 ReLUs似乎非常有效,似乎几乎无处不在,但不会引起任何意外行为。有人可以向我解释为什么ReLUs可以通过反向传播算法进行训练吗?

1 个答案:

答案 0 :(得分:16)

要了解ReLU等功能如何实现反向传播,您需要了解衍生物最重要的属性,使反向传播算法运行良好。这个属性是:

f(x) ~ f(x0) + f'(x0)(x - x0)

如果您此时将x0视为参数的实际值 - 您可以告诉(了解成本函数的值及其导数)当您更改参数时成本函数的行为方式一点点。这是反向传播中最重要的事情。

由于计算成本函数对于成本计算至关重要 - 您需要使用成本函数来满足上述属性。除了0的一个小邻域之外,很容易检查ReLU是否满足这个属性。这是ReLU唯一的问题 - 当我们接近0时,我们无法使用此属性。

为了克服这个问题,您可以选择0中的ReLU衍生值来10。另一方面,大多数研究人员认为这个问题并不严重,因为在ReLU计算过程中接近0的事实相对较少。

从上面 - 当然 - 从纯粹的数学观点来看,使用ReLU和反向传播算法是不合理的。另一方面 - 在实践中,0.

周围有这种奇怪的行为通常没有任何区别。