视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 章节:3.8 激活函数的导数(Derivatives of Activation Functions)
  • 时长:约 8 分钟(视频内容覆盖 0s–475s)

内容摘要(TL;DR)

本节讲解神经网络反向传播中必须用到的激活函数导数计算。重点推导了 Sigmoid、Tanh、ReLU、Leaky ReLU 四种激活函数的导数公式,并给出用输出值 a 快速计算导数的技巧,为下一节实现梯度下降打下基础。

引言:为什么要求激活函数的导数 [00:00]

在神经网络中实现反向传播(back propagation)时,核心任务之一就是计算激活函数的斜率,也就是它的导数。

  • 反向传播需要沿每一层计算梯度,而每一层的梯度计算都依赖于激活函数的导数。
  • 因此,理解并记住常见激活函数的导数公式,是搭建神经网络的关键基础。
  • 本节的目标:掌握四种常见激活函数的导数计算方法。

Sigmoid 激活函数的导数 [00:14]

Sigmoid 函数定义:$g(z) = \frac{1}{1 + e^{-z}}$

导数公式

对 Sigmoid 函数求导,结果为:

$$g'(z) = g(z) \cdot (1 - g(z))$$

考点:Sigmoid 导数公式 $g'(z) = g(z)(1-g(z))$,在神经网络中若 $a = g(z)$,则进一步简化为 $g'(z) = a(1-a)$。这是反向传播最常用的形式,务必牢记。

数值合理性验证(Sanity Check)

理解:通过极端值和中间值验证公式,是快速检查公式是否正确的好方法。

  • 当 z = 10(很大) :$g(z) \approx 1$,则 $g'(z) \approx 1 \times (1-1) = 0$。曲线在两端趋于平坦,斜率接近 0,正确。
  • 当 z = -10(很小) :$g(z) \approx 0$,则 $g'(z) \approx 0 \times (1-0) = 0$。同样趋于平坦,斜率接近 0,正确。
  • 当 z = 0:$g(z) = 0.5$,则 $g'(z) = 0.5 \times (1-0.5) = 0.25$。这正是 Sigmoid 在 z=0 处的真实斜率,正确。

记号说明

  • 导数有时简写为 $g'(z)$,即 $g$ 对输入变量 $z$ 的导数(撇号读作 "prime")。
  • 在神经网络中,因为 $a = g(z)$,所以公式可写成 $g'(z) = a(1-a)$。
  • 思考:用 a 表示导数的优势在于——前向传播时已经算出了 a,反向传播时直接复用,无需重新计算 z 或指数运算,能显著提升计算效率。

Tanh 激活函数的导数 [03:48]

Tanh(双曲正切)函数定义:$g(z) = \tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}$

导数公式

对 Tanh 函数求导,结果为:

$$g'(z) = 1 - (\tanh(z))^2 = 1 - g(z)^2$$

考点:Tanh 导数公式 $g'(z) = 1 - a^2$(其中 $a = \tanh(z)$)。与 Sigmoid 类似,也可以用已算出的 a 快速求导。

数值合理性验证

  • 当 z = 10:$\tanh(z) \approx 1$,则 $g'(z) \approx 1 - 1^2 = 0$。斜率接近 0,正确。
  • 当 z = -10:$\tanh(z) \approx -1$,则 $g'(z) \approx 1 - (-1)^2 = 0$。斜率接近 0,正确。
  • 当 z = 0:$\tanh(z) = 0$,则 $g'(z) = 1 - 0 = 1$。这正是 Tanh 在 z=0 处的真实斜率,正确。

理解:Tanh 与 Sigmoid 的导数形式高度相似,都是"两端趋零、中间最大"。区别在于 Sigmoid 中心斜率最大为 0.25,而 Tanh 中心斜率最大为 1,梯度更大,通常收敛更快。

ReLU 激活函数的导数 [05:46]

ReLU 函数定义:$g(z) = \max(0, z)$

导数公式

$$g'(z) = \begin{cases} 0 & \text{若 } z < 0 \ 1 & \text{若 } z > 0 \end{cases}$$

  • 当 z < 0:导数为 0。
  • 当 z > 0:导数为 1。
  • 当 z = 0:数学上严格来说导数未定义(undifined)。

关于 z = 0 的处理

易错点:ReLU 在 z = 0 处导数未定义。但在实际编程中,把该点的导数设为 0 或 1 都可以,代码都能正常工作。

  • 从数学角度,此时 $g'(z)$ 成为激活函数 $g(z)$ 的次梯度(subgradient) ,这正是梯度下降在 ReLU 上仍然有效的原因。
  • z 恰好等于 0 的概率极小,因此该点取何值几乎不影响结果。
  • 理解:实践中人们通常直接实现为"z > 0 取 1,否则取 0",无需特殊处理。

Leaky ReLU 激活函数的导数 [07:05]

Leaky ReLU 函数定义:$g(z) = \max(0.01z, z)$

导数公式

$$g'(z) = \begin{cases} 0.01 & \text{若 } z < 0 \ 1 & \text{若 } z > 0 \end{cases}$$

  • 当 z < 0:导数为 0.01(斜率较小但不为零,这正是 "Leaky" 的由来)。
  • 当 z > 0:导数为 1。
  • 当 z = 0:梯度同样技术上未定义。

易错点:Leaky ReLU 在 z = 0 处梯度未定义。实现时把 $g'$ 设为 0.01 或 1 都可以,代码照常运行。

理解:Leaky ReLU 相比标准 ReLU 的优势在于,负半轴保留了一个很小的斜率(0.01),避免了神经元在负区"完全死亡"(梯度恒为 0)的问题。

核心公式汇总与实现技巧

激活函数 函数表达式 导数公式 用 a 表示
Sigmoid $\frac{1}{1+e^{-z}}$ $g(z)(1-g(z))$ $a(1-a)$
Tanh $\tanh(z)$ $1 - g(z)^2$ $1 - a^2$
ReLU $\max(0, z)$ z<0 为 0,z>0 为 1 —
Leaky ReLU $\max(0.01z, z)$ z<0 为 0.01,z>0 为 1 —

关键实现技巧:

  • Sigmoid 和 Tanh 的导数都可以用前向传播已算出的激活值 a 直接表示,无需重新计算 z,节省计算量。
  • ReLU 和 Leaky ReLU 的导数是分段常数,实现简单,只需判断 z 的正负。

考点:四种激活函数导数公式是反向传播实现的核心,尤其是 Sigmoid 的 $a(1-a)$ 和 Tanh 的 $1-a^2$,几乎在所有神经网络代码实现中都会用到,必须熟练掌握。

本节小结与后续衔接 [07:55]

  • 本节给出了 Sigmoid、Tanh、ReLU、Leaky ReLU 四种激活函数的导数计算方法。
  • 这些导数公式是反向传播的"积木块"(building block)。
  • 掌握了这些,就可以进入下一节,学习如何为神经网络实现梯度下降。

思考:激活函数的导数形式直接决定了梯度消失/爆炸的倾向。Sigmoid/Tanh 在两端导数趋零,是梯度消失的根源;ReLU 正半轴导数恒为 1,缓解了梯度消失问题,这也是它成为深度学习默认选择的重要原因。

关键标签 / 关键词

深度学习 #吴恩达 #激活函数 #导数 #反向传播 #Sigmoid #Tanh #ReLU #LeakyReLU #梯度下降 #神经网络 #次梯度 #梯度消失


生成时间:2026-10-10 21:45:20 生成平台:VideoNote www.xygy.top