返回 2026-05-01
🤖 AI / ML

ReLU 函数的三种微分方式Three ways to differentiate ReLU

johndcook.com·2026-04-30

John D. Cook 探讨了 ReLU(修正线性单元)函数在不可微点处的广义导数计算方法。文章介绍了三种不同的导数定义方式——次梯度、Clarke 导数和近似导数,并分别应用于 ReLU 函数,展示了不同数学框架下的结果差异。

John

当函数在经典意义下不可微时,仍有多种方法可计算广义导数。本文将探讨三种对经典导数的推广方式,并以 ReLU(修正线性单元)函数为例进行说明。ReLU 是神经网络中常用的激活函数,因其图像形似斜坡,故也被称为斜坡函数。

该函数的表达式为 r(x) = max(0, x)。

逐点导数

逐点导数在 x < 0 时为 0,在 x > 0 时为 1,而在 x = 0 处无定义。因此,除零点外,斜坡函数的逐点导数即为 Heaviside 函数。

在实分析课程中,通常会直接写作 r′(x) = H(x),因为在测度论的意义下,函数仅在几乎处处相等的意义下唯一,即 x = 0 处的取值并不影响整体定义。

分布导数

在分布理论中,可将函数 r(x) 视为一个作用于测试函数 φ 上的分布,其作用方式为:

则 r 的导数是一个满足以下条件的分布 r′:

对所有具有紧支集的光滑函数 φ 成立。通过分部积分可证明上式等价于从 0 到 ∞ 对 φ 积分,这与 H(x) 作用于 φ 的结果一致。

此时,r 的分布导数与其作为分布解释下的逐点导数相同。但这种情况并不普遍。例如,H 的逐点导数为零,而其分布导数却是 δ,即 Dirac delta 分布。

欲了解更多关于分布导数的内容,请参见《如何对不可微函数求导》。

次梯度

函数 f 在某点 x 的次梯度 ∂f(x),表示的是该点图像上所有切线斜率的集合。若 f 在 x 处可微,则仅存在唯一斜率 f′(x),通常我们说 f 在 x 处的次梯度就是 f′(x),尽管严格来说应将其视为单元素集合 {f′(x)}。

对于 ReLU 函数,在 x 为负值时,切线斜率为 0;在 x 为正值时,斜率为 1。但由于 x = 0 处存在尖角,该点的切线斜率可在 0 到 1 之间的任意值。

我的博士论文中充满了凸函数的次梯度。这让我感到不安,因为次梯度并非实值函数,而是集值函数。大多数时候我们可以忽略这一区别,但总有一种隐隐的不安感,担心它会在不经意间带来麻烦。

需要完整排版与评论请前往来源站点阅读。