反向传播算法如何处理不可微的激活函数?
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 导数的值选择为1
或0
。另一方面,大多数研究人员并不认为这个问题很严重,因为在 ReLU 计算期间接近0
是相对罕见的。
从以上内容 - 当然 - 从纯数学的角度来看,将 ReLU 与反向传播算法一起使用是不合理的。另一方面 - 在实践中,它在 0.
周围有这种奇怪的行为通常没有任何区别。
【讨论】:
这个衍生属性怎么称呼? 这是一个一阶逼近定理以上是关于反向传播算法如何处理不可微的激活函数?的主要内容,如果未能解决你的问题,请参考以下文章