题目
为什么神经网络需要激活函数?请举例说明两种常见激活函数的特点
信息
- 类型:问答
- 难度:⭐
考点
激活函数的作用,常见激活函数特性,神经网络基础原理
快速回答
激活函数是神经网络的核心组件,主要作用包括:
- 引入非线性:使神经网络能够学习复杂模式
- 决定神经元输出:将加权和映射到特定范围
两种常见激活函数:
- Sigmoid:输出范围(0,1),适合概率输出
- ReLU:计算高效,缓解梯度消失问题
一、激活函数的核心作用
原理说明:如果没有激活函数,神经网络无论多少层都等价于单层线性变换($f(x) = Wx + b$),无法学习复杂非线性关系。激活函数通过非线性映射(如 $\sigma(z) = 1/(1+e^{-z})$)使神经网络成为通用函数逼近器。
二、常见激活函数详解
1. Sigmoid函数
数学形式:$\sigma(z) = \frac{1}{1 + e^{-z}}$
特点:
- 输出范围(0,1),适合二分类输出层
- 平滑梯度,便于求导
- 缺点:易导致梯度消失(当 |z| 很大时梯度接近0)
代码示例:
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 测试
print(sigmoid(0)) # 输出 0.5
print(sigmoid(10)) # 输出接近 1.02. ReLU函数(Rectified Linear Unit)
数学形式:$ReLU(z) = max(0, z)$
特点:
- 计算高效(无需指数运算)
- 缓解梯度消失(正区间梯度恒为1)
- 缺点:负区间输出为0("Dead ReLU"问题)
代码示例:
def relu(x):
return np.maximum(0, x)
# 测试
print(relu(-1)) # 输出 0
print(relu(5)) # 输出 5三、最佳实践与常见错误
激活函数选择指南:
- 隐藏层首选 ReLU(计算快、收敛好)
- 二分类输出层用 Sigmoid
- 多分类输出层用 Softmax
常见错误:
- 全网络使用Sigmoid导致梯度消失
- 忽略ReLU的Dead Neuron问题(可尝试Leaky ReLU改进)
- 输出层误用ReLU(应匹配任务类型)
四、扩展知识
- 梯度消失:深层网络中梯度连乘趋近0,Sigmoid/Tanh更易发生
- 替代方案:Leaky ReLU(负区间小斜率)、ELU(指数线性单元)
- 历史背景:2010年后ReLU取代Sigmoid成为主流,推动深度学习发展