
视频元信息
- 课程:吴恩达深度学习专项课程(Deep Learning Specialization)—— 神经网络与深度学习
- 章节:3.6 激活函数(Activation Functions)
- 时长:约 11 分钟
内容摘要(TL;DR)
本视频系统讲解了神经网络中常用的激活函数:Sigmoid、Tanh、ReLU 与 Leaky ReLU。核心结论是——隐藏层几乎不再使用 Sigmoid,Tanh 通常优于 Sigmoid,而 ReLU 是当前最常用的默认选择;Sigmoid 仅保留给二分类任务的输出层。视频还解释了激活函数导致梯度消失的机制,以及如何通过验证集实验来选择最佳激活函数。
一、激活函数的通用表示 [00:29]
在神经网络中,我们之前学过 Sigmoid 函数:
$$a = \sigma(z) = \frac{1}{1 + e^{-z}}$$
但更一般地,我们可以用不同的函数 $g(z)$ 作为激活函数:
$$a = g(z)$$
- 要点:$g$ 可以是非线性函数,不一定是 Sigmoid。
- 理解:激活函数的核心作用是引入非线性,使神经网络能够拟合复杂函数。如果不用激活函数(或使用线性激活函数),多层网络等价于单层线性变换。
考点:激活函数必须是非线性的,否则深层网络退化为线性模型。
二、Tanh 函数(双曲正切函数)[01:02]
公式:
$$\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}$$
特点:
- 取值范围为 $(-1, +1)$,均值为 0
- 实际上是 Sigmoid 函数的平移版本:Sigmoid 经过缩放平移后经过原点 $(0,0)$
- 推导:$\tanh(z) = 2\sigma(2z) - 1$,这就是两者的数学关系。
为什么 Tanh 几乎总是优于 Sigmoid?
- 关键原因:Tanh 输出值在 $(-1, +1)$ 之间,均值接近 0,起到数据中心化的效果
- 类似训练机器学习模型时对数据做零均值归一化,使下一层的学习更容易
- 如果激活值均值是 0.5(Sigmoid),下一层的输入会有偏移,学习效率降低
重点:吴恩达明确表示——几乎不再使用 Sigmoid 激活函数,Tanh 严格优于 Sigmoid。
唯一例外:输出层
- 如果 $y \in {0, 1}$(二分类任务),输出层应使用 Sigmoid,因为 $\hat{y}$ 需要落在 $(0,1)$ 区间
- 典型结构:隐藏层用 Tanh,输出层用 Sigmoid
不同层可使用不同激活函数
- 用方括号上标表示:$g^{[1]}(z)$ 表示第 1 层的激活函数,$g^{[2]}(z)$ 表示输出层的激活函数
- 它们可以不同
三、Sigmoid 和 Tanh 的共同缺陷:梯度消失 [04:18]
核心问题:
- 当 $z$ 非常大或非常小时,Sigmoid 和 Tanh 的导数(斜率)都趋近于 0
- 这会导致梯度下降变慢(梯度消失问题)
理解:Sigmoid 导数最大值为 0.25,Tanh 导数最大值为 1,但在饱和区导数都趋近 0。反向传播时梯度逐层相乘,容易指数级衰减。
易错点:梯度消失是深层网络训练困难的核心原因之一,Sigmoid 和 Tanh 在饱和区都会加剧这一问题。
四、ReLU 函数(修正线性单元)[04:38]
公式:
$$a = \max(0, z)$$
导数:
- 当 $z > 0$:导数为 1
- 当 $z < 0$:导数为 0
- 当 $z = 0$:导数在数学上未定义
关于 $z = 0$ 处的处理:
- 理论上不可导,但实际编程中恰好取到 $z = 0$ 的概率极小
- 实践中可以假装导数为 1 或 0,都能正常工作
ReLU 的优势:
- 在 $z$ 的大部分范围内,导数远离 0,不会出现梯度消失
- 使用 ReLU 的神经网络通常比使用 Tanh 或 Sigmoid 学习快得多
- 虽然 $z < 0$ 时导数为 0,但实际中足够多的隐藏单元会有 $z > 0$,学习仍然高效
考点:ReLU 是当前隐藏层的默认选择,主要因为其缓解梯度消失、计算简单、收敛快。
五、Leaky ReLU(带泄漏的 ReLU)[06:32]
公式:
$$a = \max(0.01z, \ z)$$
特点:
- 当 $z < 0$ 时,不再是 0,而是一个很小的斜率(如 0.01)
- 这样在负半轴也有梯度,避免神经元完全"死亡"
- 通常比 ReLU 效果更好,但实际中使用频率不如 ReLU
关于常数 0.01:
- 也可以将其设为学习算法的另一个参数(可学习)
- 有些人尝试这样做,效果因人而异
- 思考:如果 0.01 变成可学习参数,就变成了 PReLU(Parametric ReLU),在某些任务上表现更好。
六、激活函数选择经验法则 [05:39]
| 场景 | 推荐激活函数 |
|---|---|
| 二分类输出层 | Sigmoid |
| 隐藏层(不确定时) | ReLU |
| 隐藏层(备选) | Tanh / Leaky ReLU |
总结对比:
- Sigmoid:几乎不用,除非二分类输出层
- Tanh:几乎总是严格优于 Sigmoid,可用于隐藏层
- ReLU:最常用的默认选择,不确定时就用它
- Leaky ReLU:通常效果更好,但实践中使用较少
重点:如果不确定隐藏层用什么,直接用 ReLU。
七、如何选择激活函数?[09:29]
吴恩达的建议:
- 深度学习中存在大量选择(隐藏单元数、激活函数、权重初始化方式等)
- 很难提前知道哪个最好
- 实用做法:把所有候选激活函数都试一遍,在验证集(holdout validation set / development set) 上评估,选效果最好的
思考:这种"试错+验证集评估"的思路是深度学习工程化的核心方法论,比死记硬背"永远用 ReLU"更可靠,也能适应算法和问题的演进。
易错点:不要盲目套用别人的经验配置,应在自己的验证集上实验验证。
八、为什么需要非线性激活函数?[10:42]
视频结尾提出一个问题:
为什么神经网络需要激活函数?为什么不直接去掉它?
预告:下一视频将解释——如果去掉激活函数(或使用线性激活函数),无论网络有多少层,最终都等价于一个线性变换,神经网络将失去拟合复杂函数的能力。
理解:这是理解激活函数本质意义的关键——非线性是深度网络表达能力的来源。
关键标签 / 关键词
激活函数 Activation Function Sigmoid Tanh ReLU Leaky ReLU 梯度消失 梯度下降 二分类 隐藏层 输出层 验证集 深度学习 吴恩达 神经网络 非线性 数据中心化 PReLU
生成时间:2026-10-10 21:44:05 生成平台:VideoNote www.xygy.top