相关文章:
- 机器学习中的数学——激活函数(一):Sigmoid函数
- 机器学习中的数学——激活函数(二):Tanh函数
- 机器学习中的数学——激活函数(三):ReLU(Rectified Linear Unit)函数
- 机器学习中的数学——激活函数(四):Leaky ReLU函数
- 机器学习中的数学——激活函数(五):ELU函数
- 机器学习中的数学——激活函数(六):Parametric ReLU(PReLU)函数
- 机器学习中的数学——激活函数(七):Swish
介绍
激活函数是神经网络中的核心组件,用于引入非线性,使网络能够学习复杂模式。以下是主流激活函数的全面对比
Sigmoid
1.1 公式:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1 + e^{-x}}
σ(x)=1+e−x1
1.2 特点:
- 输出范围:(0, 1),适合表示概率(如二分类问题的概率输出)。
- 单调性:严格递增函数。
- 平滑性:连续可导,导数为: σ ′ ( x ) = σ ( x ) ⋅ ( 1 − σ ( x ) ) \sigma'(x) = \sigma(x) \cdot (1 - \sigma(x))\ σ′(x)=σ(x)⋅(1−σ(x))
- 导数特性:在 x x x=0 处导数最大(值为 0.25),两端趋近于 0。
1.3 优点:
- Sigmoid函数的输出范围是0到1。由于输出值限定在0到1,因此它对每个神经元的输出进行了归一化。
- 用于将预测概率作为输出的模型。由于概率的取值范围是0到1,因此Sigmoid函数非常合适
- 梯度平滑,避免跳跃的输出值
- 函数是可微的。这意味着可以找到任意两个点的Sigmoid曲线的斜率
- 明确的预测,即非常接近1或0。
- 导数计算简单,便于反向传播。
1.4 缺点:
- 梯度消失:当输入绝对值较大时,梯度接近 0,导致深层网络训练困难。
- 非零中心性:输出均值为正,可能影响梯度下降效率,函数输出不是以0为中心的,这会降低权重更新的效率
- 计算成本:涉及指数运算。
1.5 对比
激活函数 | 输出范围 | 梯度特性 | 适用场景 |
---|---|---|---|
Sigmoid | (0, 1) | 易消失(大输入时) | 二分类输出层 |
Tanh | (-1, 1) | 比 Sigmoid 略优 | 隐藏层(零中心化) |
ReLU | [0, +∞) | 正区间无梯度消失 | 隐藏层(主流选择) |
1.6 代码:
import torch
def sigmoid(x):
return 1 / (1 + torch.exp(-x))
sigmoid = torch.nn.Sigmoid()