激活函数:AI的「开关」
决定信号要不要通过
想象你家里的电灯开关。按一下,灯亮了;再按一下,灯灭了。开关的作用很简单:决定是否让电流通过。
神经元也需要这样的开关。它接收了很多输入信号,加权求和后,需要决定是否要把这个结果传递出去。这个「决定」就是由激活函数做出的。
今天,我们来看看激活函数是如何工作的。
1为什么需要激活函数?
如果没有激活函数,神经网络会变成什么样?
输出 = 输入 × 权重 + 偏置
(这是一个线性函数)
多层线性 = 还是线性
无论多少层,都等价于一层
❌ 结果:神经网络失去意义,无法学习复杂模式
关键洞察:激活函数引入非线性,让神经网络能够学习和表示复杂的非线性关系。没有非线性,深度网络就失去了意义。
2常见的激活函数
Sigmoid特点:
- ✅ 输出范围 (0, 1),像概率
- ✅ 平滑可导
- ❌ 容易梯度消失
- ❌ 输出不是0均值
公式:σ(x) = 1 / (1 + e^(-x))
现在主要用于输出层(二分类)
ReLU特点:
- ✅ 计算简单,速度快
- ✅ 缓解梯度消失
- ✅ 引入稀疏性
- ❌ 负数永远为0(死亡ReLU)
公式:ReLU(x) = max(0, x)
目前最常用的激活函数
Tanh特点:
- ✅ 输出范围 (-1, 1)
- ✅ 0均值,训练更稳定
- ❌ 仍有梯度消失问题
公式:tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))
某些场景下比Sigmoid好
3ReLU的变体
为了解决ReLU的「死亡」问题(负数永远为0),研究者提出了一些改进版本。
负数有小的斜率
斜率可学习
负数平滑曲线
4如何选择激活函数?
🎯 隐藏层默认选择
用 ReLU。简单、快速、效果好。如果遇到死亡ReLU,试试Leaky ReLU。
🎯 二分类输出层
用 Sigmoid。输出在0-1之间,可以解释为概率。
🎯 多分类输出层
用 Softmax。把输出变成概率分布,所有类别概率之和为1。
🎯 回归问题输出层
通常 不需要激活函数,或者根据输出范围选择(如用Sigmoid限制在0-1)。
5常见误区
❌ 误区1:所有层用同样的激活函数
隐藏层和输出层通常需要不同的激活函数。隐藏层用ReLU,输出层根据任务选择Sigmoid/Softmax/线性。
❌ 误区2:激活函数越复杂越好
复杂的激活函数(如Swish、GELU)在某些任务上确实更好,但ReLU在大多数情况下已经足够,而且计算更快。
❌ 误区3:激活函数可以随便换
不同的激活函数有不同的输出范围和梯度特性,更换时可能需要调整学习率等其他超参数。
🎓 一句话总结
- ①激活函数 = 引入非线性,让神经网络能学习复杂模式
- ②ReLU 是目前最常用的:正数不变,负数变0
- ③Sigmoid/Tanh 有梯度消失问题,现在主要用于输出层
- ④隐藏层默认用ReLU,输出层根据任务选择
→下篇预告
第17篇:优化器——让AI学得更快的「加速器」
梯度下降是基础,但实际使用中有很多改进版本。优化器决定了AI学习的速度和效果。下一篇,我们来看看各种优化器。
✏️ 手绘图解 · AI Catch 出品
第 16 篇 / 共 84 篇