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

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

回答(1)

2 years ago

要了解如何使用像ReLU这样的函数进行反向传播,您需要了解导数的最重要属性,这使得反向传播算法能够很好地工作 . 这个属性是这样的:

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

如果您现在将 x0 视为参数的实际值 - 您可以告诉(了解成本函数的值及其衍生值)当您稍微更改参数时成本函数的行为方式 . 这是反向传播中最重要的事情 .

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

为了克服这一点,您可以选择 0 中的ReLU导数值为 10 . 另一方面,大多数研究人员并不认为这个问题是严重的,因为事实上,在ReLU计算期间接近_759800是相对罕见的 .

从上面 - 当然 - 从纯粹的数学观点来看,'s not plausible to use ReLU with backpropagation algorithm. On the other hand - in practice it usually doesn' t使它有这种奇怪的行为 0.