在深入探讨神经网络以及如何有效地训练它们的主题时,我遇到了使用非常简单的激活函数(例如整流线性单位(ReLU))而不是经典的平滑乙状结肠的方法。 ReLU函数在原点上是不可微的,因此根据我的理解,反向传播算法(BPA)不适合用于使用ReLU训练神经网络,因为多变量演算的链规则仅指平滑函数。
但是,我所阅读的有关使用ReLU的论文均未解决此问题。 ReLU似乎非常有效,并且似乎几乎可以在任何地方使用,而不会引起任何意外行为。有人可以向我解释为什么可以通过反向传播算法完全训练ReLU吗?

最佳答案

要了解使用ReLU之类的函数甚至如何进行反向传播,您需要了解使反向传播算法如此出色的导数的最重要属性是什么。该属性是:

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

如果您现在将x0视为参数的实际值-您可以告诉(知道成本函数的值及其派生值)稍微更改参数时成本函数的行为。这是反向传播中最关键的事情。

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

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

从上面-当然-从纯粹的数学观点来看,将ReLU与反向传播算法一起使用是不合理的。另一方面-实际上,它在0.周围具有这种怪异的行为通常没有什么区别

关于machine-learning - 反向传播算法如何处理不可微的激活函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30236856/

10-12 16:31