为什么需要激活函数?
神经元的计算分两步:
- 线性加权求和:z = w₁x₁ + w₂x₂ + ... + b
- 激活函数:a = f(z)
如果没有激活函数,多层网络的组合结果仍然是线性的——无论堆多少层,效果等同于单层网络。激活函数引入非线性,让网络能学习复杂的模式。
常见激活函数
ReLU(Rectified Linear Unit)
公式:f(x) = max(0, x)
- x > 0 时输出 x,x ≤ 0 时输出 0
- 计算简单,训练速度快
- 目前最常用的激活函数
- 作用:引入非线性
Sigmoid
公式:f(x) = 1 / (1 + e^(-x))
- 输出范围 (0, 1)
- 常用于二分类的输出层(逻辑回归)
- 缺点:容易梯度消失
Softmax
公式:P(i) = e^(xᵢ) / Σe^(xⱼ)
- 将一组数值转化为概率分布(所有输出之和为1)
- 用于多分类的输出层
- 数值越大,对应概率越高
Softmax计算示例
输入 [2.0, 1.0, 1.0],对应猫、狗、鸟:
- e^2.0 ≈ 7.389, e^1.0 ≈ 2.718
- 分母 = 7.389 + 2.718 + 2.718 = 12.825
- 猫 = 7.389/12.825 ≈ 0.576
- 狗 = 2.718/12.825 ≈ 0.212
- 鸟 = 2.718/12.825 ≈ 0.212
Tanh
公式:f(x) = (e^x - e^(-x)) / (e^x + e^(-x))
- 输出范围 (-1, 1)
- 输出以0为中心,有时比Sigmoid更好
三个函数的区别
| 函数 | 作用 | 典型位置 |
|---|---|---|
| ReLU | 引入非线性 | 隐藏层 |
| Sigmoid | 输出概率(二分类) | 输出层 |
| Softmax | 输出概率分布(多分类) | 输出层 |
| 交叉熵损失 | 计算预测与真实标签的误差 | 损失计算 |
考试要点
- 激活函数的核心作用是非线性映射
- ReLU → 引入非线性
- Softmax → 转化为概率分布
- 交叉熵损失函数 → 计算误差
- Softmax输出的概率之和为1