激活函数
神经网络中引入非线性的关键组件。没有激活函数,多层网络等价于单层线性变换;有了它,网络才能学会复杂模式。常见的有 ReLU、Sigmoid、GELU 等。
一句话理解
激活函数是神经网络中每个神经元的"开关逻辑"——它决定这个神经元的信号要不要往下传、怎么传。
为什么需要激活函数
线性变换的叠加仍然是线性的:
W2(W1x+b1)+b2=W′x+b′无论叠多少层,最终效果和一层没有区别。激活函数在每层之间插入非线性变换,打破了这个限制,使得深层网络能拟合任意复杂的函数关系。
常见激活函数一览
| 名称 | 公式 | 特点 | 主要用途 |
|---|---|---|---|
| ReLU | max(0,x) | 计算快,正区间梯度恒为 1 | 隐藏层(最常用) |
| Sigmoid | 1+e−x1 | 输出 (0,1),可作概率 | 二分类输出、门控 |
| Tanh | ex+e−xex−e−x | 输出 (-1,1),零中心 | RNN 隐藏层 |
| GELU | x⋅Φ(x) | 平滑,概率性保留负值 | Transformer FFN |
| Softmax | ∑ezjezi | 输出概率分布 | 多分类输出层 |
如何选择
TIP
实用选择指南
- 隐藏层默认选 ReLU(或其变体 Leaky ReLU),简单高效
- Transformer 架构选 GELU,已成为行业标准
- 二分类输出层选 Sigmoid,将 logit 转为概率
- 多分类输出层选 Softmax,将 logit 转为概率分布
- RNN/LSTM 隐藏层选 Tanh,零中心有助于训练稳定性
激活函数的本质
从几何角度看,激活函数对空间进行"折叠"和"扭曲"。单层线性变换只能画直线分界面,加入激活函数后,网络可以画出任意复杂的曲面来区分不同类别的数据。层数越多,能表达的曲面就越复杂。