
视频元信息
- 课程:吴恩达深度学习专项课程(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