直观"理解"常见激活函数。
0. 为什么需要激活函数?
如果神经网络只有线性运算 y = Wx + b,无论叠多少层,最终都等价于一层线性变换:
W2(W1x+b1)+b2=(W2W1)x+(W2b1+b2)
也就是说——没有激活函数的深度网络 = 一个普通的线性回归,无法拟合非线性关系(比如异或、图像识别)。
激活函数的核心作用:引入非线性,让网络真正"深"起来。
本文重点介绍四个最经典的激活函数:
| 名称 | 公式 | 用一句话概括 |
|---|
| Step 阶跃 | f(x)={1,0,x>0x≤0 | 开关,非黑即白 |
| Sigmoid | σ(x)=1+e−x1 | 把任意数压到 (0,1) |
| Tanh | tanh(x)=ex+e−xex−e−x | 零中心版 Sigmoid |
| ReLU | ReLU(x)=max(0,x) | 负数清零,正数直通 |
1. Step 阶跃函数
1.1 定义
f(x)={1,0,x>0x≤0
1.2 函数图像

1.3 求导分析
阶跃函数在 x=0 处导数处处为 0;在 x=0 处不连续,严格意义上不可导。
在 x=0 处,函数值从 0 瞬间跳到 1,斜率为无穷大,但只在这一点上。因此无法进行梯度下降,工程中不使用。
1.4 导数图像

1.5 特点
| 优点 | 缺点 |
|---|
| 形式极简,运算快 | 几乎处处导数为 0,无法用梯度下降训练 |
| 输出非黑即白,易理解 | 在 x=0 处不连续,不光滑 |
1.6 应用场景
- 感知机(Perceptron):1958 年 Rosenblatt 提出感知机时使用的激活函数。
- 理论教学:解释二分类决策边界、神经元最早形态。
- 现代深度学习中基本不再使用:因为不可导,反向传播无从下手。
2. Sigmoid 函数
2.1 定义
σ(x)=1+e−x1
输出范围 (0,1),恰好可解释为"概率"。
2.2 函数图像

2.3 求导推导(完整链式法则)
记 σ(x)=1+e−x1,令 u=1+e−x,则 σ=u−1。
第 1 步:对 u 求导
dxdu=dxd(1+e−x)=−e−x
第 2 步:链式法则
dxdσ=dud(u−1)⋅dxdu=−u−2⋅(−e−x)=(1+e−x)2e−x
第 3 步:化简为 σ 自身的表达式(这是关键技巧)
把分子的 e−x 拆成 (1+e−x)−1:
(1+e−x)2e−x=(1+e−x)2(1+e−x)−1=1+e−x1−(1+e−x)21=σ(x)−σ(x)2
最终结果:
σ′(x)=σ(x)(1−σ(x))
💡 为何这个形式重要:反向传播时,前向传播已经算出了 σ(x),求导只需一次乘法和一次减法,无需重新指数运算,效率极高。
2.4 导数图像

注意纵轴最大值只到 0.25(在 x=0 处取得):
σ′(0)=σ(0)(1−σ(0))=0.5×0.5=0.25
2.5 特点
| 优点 | 缺点 |
|---|
| 输出 ∈(0,1),可作概率 | 梯度消失:两端导数趋近 0,多层叠加梯度近乎归零 |
| 光滑可导 | 输出非零中心(恒正),导致后层权重更新方向受限 |
| 导数形式优雅 σ(1−σ) | 含指数运算,计算开销大于 ReLU |
⚠️ 梯度消失的直观计算:若 5 层全用 Sigmoid,反向传播时梯度最多被乘上 0.255≈0.001,前几层几乎学不到东西。
2.6 应用场景
- 二分类输出层:将 logits 压到 (0,1) 作为正类概率。
- 门控机制:LSTM/GRU 的遗忘门、输入门、输出门都用 Sigmoid 控制信息流通比例。
- 现代隐藏层基本不用:被 ReLU 取代。
3. Tanh 函数
3.1 定义
tanh(x)=ex+e−xex−e−x
输出范围 (−1,1),零中心。
Tanh 与 Sigmoid 的关系:anh(x)=2σ(2x)−1。
几何变换三步:
| 步骤 | 公式 | 几何效果 |
|---|
| 原始 | σ(x) | 值域 (0,1) |
| 横向压缩 | σ(2x) | 曲线变陡 2 倍,值域不变 |
| 纵向拉伸 | 2σ(2x) | 值域 (0,2) ← 缩放 |
| 向下平移 | 2σ(2x)−1 | 值域 (−1,1) ← 平移 |
直观图解:

代数推导:从 σ(2x)=1+e−2x1 出发,两边乘 2 减 1:
2σ(2x)−1=1+e−2x2−1=1+e−2x1−e−2x
分子分母同乘 ex:
(1+e−2x)ex(1−e−2x)ex=ex+e−xex−e−x=tanh(x)
3.2 函数图像

3.3 求导推导(商法则)
令 u=ex−e−x,v=ex+e−x,则 tanh(x)=u/v。
第 1 步:求 u′,v′
u′=ex+e−x=v,v′=ex−e−x=u
第 2 步:商法则
tanh′(x)=v2u′v−uv′=v2v⋅v−u⋅u=v2v2−u2=1−v2u2=1−tanh2(x)
最终结果:
tanh′(x)=1−tanh2(x)
💡 同样的复用技巧:反向传播时,前向已有 tanh(x),求导只需 1−tanh(x)2。
3.4 导数图像

最大值为 1(在 x=0 处取得):
tanh′(0)=1−0=1
这比 Sigmoid 的 0.25 大 4 倍,所以Tanh 比 Sigmoid 收敛快。
3.5 特点
| 优点 | 缺点 |
|---|
| 零中心输出,梯度方向更均衡 | 两端依旧饱和(∣x∣ 大时导数→0),仍有梯度消失 |
| 导数最大值 1,比 Sigmoid 快 | 含指数运算,比 ReLU 慢 |
| 公式优美 1−tanh2 | — |
3.6 应用场景
- RNN/LSTM 的候选状态:LSTM 中候选记忆 C~t 用 Tanh 把值压到 (−1,1)。
- 需要零均值输出的场景:比如 GAN 的生成器最后一层(输出 [−1,1] 的图像像素)。
- 浅层网络的隐藏层:在 ReLU 出现前是隐藏层的主流选择。
4. ReLU 函数
4.1 定义
ReLU(x)=max(0,x)={x,0,x>0x≤0
4.2 函数图像

4.3 求导分析
ReLU 是分段线性函数,分两段求导即可:
- 当 x>0:f(x)=x,所以 f′(x)=1
- 当 x<0:f(x)=0,所以 f′(x)=0
- 当 x=0:左导数 0、右导数 1,不可导
但在工程实践中,由于 x=0 的概率为零(浮点数精确为 0 极其罕见),通常约定:
f′(x)={1,0,x>0x≤0
4.4 导数图像

4.5 特点
| 优点 | 缺点 |
|---|
| 运算极简(一次比较),比 exp 快 6-10 倍 | Dying ReLU:若神经元长期输出 0,权重再也更新不了 |
| 正数区域导数恒为 1,梯度不消失 | 输出非零中心 |
| 实践证明能让网络收敛快 6 倍以上(AlexNet 2012) | 负数区域信息完全丢失 |
| 隐式稀疏化(部分输出为 0),类似生物神经元 | - |
️ Dying ReLU 现象:
若 ReLU 神经元持续输出负数 → 前向输出 0 + 反向导数 0 → 权重不再更新 → 神经元永久死亡。
为什么会发生?
- 学习率太大,权重被一步更新到让输入始终为负的区域
- 权重初始化不好,初始就偏向负区
- 一旦进入负区,梯度为 0,权重再也无法调整回来(恶性循环)
后果:
- 网络中一部分神经元永久失效,模型容量下降
- 极端情况 40%+ 神经元死亡,表达能力大幅削弱
- 训练后期损失不再下降,网络“学不动了”
解决方案:
- Leaky ReLU:f(x)=max(0.01x,x),负区给个小斜率
- PReLU:负区斜率作为可学习参数
- ELU / GELU / Swish:现代改进版
直观对比:

4.6 应用场景
- CNN/MLP 隐藏层的默认选择(2012 年 AlexNet 后成为业界标准)。
- Transformer 的 FFN 层(虽然现在更多用 GELU,但 ReLU 仍很常见)。
- 几乎所有现代深度网络的隐藏层。
5. 四函数对比总览
5.1 函数图像总览

5.2 导数图像总览(为何 ReLU 不梯度消失)

一眼看出关键差异:
- Sigmoid':最大 0.25,两端塌陷
- Tanh':最大 1.0,两端塌陷
- ReLU':正数区恒为 1,不衰减 ✅
5.3 速查表
| 维度 | Step | Sigmoid | Tanh | ReLU |
|---|
| 输出范围 | {0,1} | (0,1) | (−1,1) | [0,+∞) |
| 零中心 | ❌ | ❌ | ✅ | ❌ |
| 可导 | ❌ | ✅ | ✅ | ⚠️ (x=0 不可导) |
| 导数公式 | δ(x) | σ(1−σ) | 1−tanh2 | 1x>0 |
| 导数最大值 | ∞ | 0.25 | 1.0 | 1.0 |
| 梯度消失 | — | 严重 | 严重 | 否(正区) |
| 计算复杂度 | 极低 | 高(exp) | 高(exp) | 极低 |
| 隐藏层推荐度 | ❌ | ⚠️ | ⚠️ | ✅ |
5.4 实战选择指南
任务类型 推荐激活函数
─────────────────────────────────────
隐藏层(默认) → ReLU
隐藏层(防 dying) → Leaky ReLU / GELU
二分类输出层 → Sigmoid
多分类输出层 → Softmax
回归输出层 → Linear(不加激活)
RNN/LSTM 内部 → Tanh + Sigmoid(门控)
GAN 生成器输出 → Tanh(输出图像 [-1,1])
6. 核心知识点总结
- 激活函数的本质:引入非线性,让深度网络区别于普通线性回归。
- 求导技巧的共性:Sigmoid 和 Tanh 的导数都能用自身的函数值表达,是工程上反向传播的关键优化。
- 梯度消失的根源:Sigmoid/Tanh 在两端饱和导致导数趋零,深层网络反向传播时梯度连乘 → 指数级衰减。
- ReLU 成为主流的核心原因:正区导数恒为 1 不衰减 + 运算极简,二者缺一不可。
- 没有"最好"的激活函数:要结合任务类型和网络结构选择,输出层尤其要看任务性质。
7. 延伸阅读
- Leaky ReLU / PReLU:缓解 Dying ReLU 问题
- ELU:负区平滑过渡,鲁棒性更强
- GELU:Transformer 时代的新宠(GPT、BERT 均使用)
- Swish / SiLU:x⋅σ(x),Google 通过 NAS 搜索发现
- Softmax:多分类输出层专用,本质是多元 Sigmoid(非隐藏层激活函数)