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

Posted

技术标签:

【中文标题】反向传播算法如何处理不可微的激活函数?【英文标题】:How does the back-propagation algorithm deal with non-differentiable activation functions? 【发布时间】:2015-07-26 00:59:33 【问题描述】:

在深入研究神经网络以及如何有效训练它们的主题时,我发现了使用非常简单的激活函数的方法,例如 rectified linear unit (ReLU),而不是经典的平滑 sigmoids。 ReLU 函数在原点是不可微的,因此根据我的理解,反向传播算法 (BPA) 不适合用 ReLU 训练神经网络,因为多元微积分的链式法则仅指平滑函数。 然而,我读过的关于使用 ReLU 的论文都没有解决这个问题。 ReLU 似乎非常有效,几乎可以在任何地方使用,同时不会导致任何意外行为。有人可以向我解释为什么 ReLU 可以通过反向传播算法进行训练吗?

【问题讨论】:

【参考方案1】:

要了解如何使用 ReLU 之类的函数实现反向传播,您需要了解导数最重要的属性是什么,它使反向传播算法如此有效。这个属性是:

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

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

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

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

从以上内容 - 当然 - 从纯数学的角度来看,将 ReLU 与反向传播算法一起使用是不合理的。另一方面 - 在实践中,它在 0. 周围有这种奇怪的行为通常没有任何区别。

【讨论】:

这个衍生属性怎么称呼? 这是一个一阶逼近定理

以上是关于反向传播算法如何处理不可微的激活函数?的主要内容,如果未能解决你的问题,请参考以下文章

深度学习之反向传播算法

深度学习之反向传播算法

脱离公式谈谈对反向传播算法的理解

脱离公式谈谈对反向传播算法的理解

手写BP(反向传播)算法

深度学习3-神经网络和反向传播算法