激活函数¶
激活函数给网络引入非线性。没有它,再深的全连接堆叠也只是一个大线性变换。
为什么必须有¶
两层线性:
\[
W_2(W_1 x + b_1) + b_2 = (W_2 W_1)x + (W_2 b_1 + b_2)
\]
仍是线性。中间插入非线性 \(\phi\) 后,才能拟合弯曲的决策边界。
常用激活¶
| 名称 | 形式 / 特点 | 常见场景 |
|---|---|---|
| Sigmoid | \((0,1)\),易饱和 | 门控、二分类输出 |
| Tanh | \((-1,1)\),零中心 | 部分 RNN |
| ReLU | \(\max(0,x)\),快 | 隐藏层默认 |
| Leaky ReLU | 负轴小斜率 | 缓解死神经元 |
| GELU / SiLU | 平滑「软 ReLU」 | Transformer 等 |
Softmax 一般作为输出层把 logits 变成概率,见 概率统计。
怎么选¶
- 隐藏层默认 ReLU(Transformer 常用 GELU)。
- 二分类输出:Sigmoid + BCE;多分类:logits + CrossEntropy。
- 回归输出通常不加激活,或按值域选择。
激活的局部导数 \(\phi'(z)\) 会乘在回传梯度上;饱和区易导致梯度消失。