神经网络为什么要激活函数
神经网络的每一层其实就是做一次z=W⋅x+bz如果没有激活函数,那么无论堆叠多少层,这整个网络本质上还是这意味着:多层网络的表达能力。无法拟合数据中的(比如异或问题 XOR 就无法用纯线性模型解决)。
·
1. 如果没有激活函数会怎样?
神经网络的每一层其实就是做一次加权求和:
z=W⋅x+bz
如果没有激活函数,那么无论堆叠多少层,这整个网络本质上还是一个线性变换:
W3(W2(W1x+b1)+b2)+b3⇒ W′x+b′
这意味着:
-
多层网络的表达能力退化为一层线性模型。
-
无法拟合数据中的非线性关系(比如异或问题 XOR 就无法用纯线性模型解决)。
2. 激活函数的作用
加入激活函数之后,网络的每一层都引入了非线性变换:
a=f(z)=f(Wx+b)
这样整个网络就变成了多层非线性嵌套,能够拟合复杂的函数关系。
核心作用:
-
引入非线性 → 能拟合任意复杂的映射(根据通用逼近定理,只要有非线性激活函数,多层网络可以逼近任何函数)。
-
丰富特征空间 → 每一层都对输入空间做不同的非线性折叠和展开。
-
保持梯度流动 → 像 ReLU、Sigmoid 还能让梯度在反向传播时顺利传递。
3. 常见激活函数
| 激活函数 | 特点 | |
|---|---|---|
| Sigmoid | 输出在 (0,1),易产生梯度消失 | |
| ReLU | 简单高效,解决梯度消失,但有“死亡ReLU”问题 | |
| Softmax | 输出概率分布(用于分类最后一层) |
4. 直观类比
可以把激活函数看作神经元的“开关”:
-
没有激活函数 → 神经元是“线性电路”,没有复杂行为。
-
有激活函数 → 神经元是“非线性电路”,能表达复杂的模式。
更多推荐
所有评论(0)