菜单

激活函数

相关源文件

本文档涵盖了神经网络中使用的激活函数。激活函数是深度学习模型中的重要组成部分,通过非线性操作转换神经元的输出。它们使神经网络能够学习数据中的复杂模式和关系。有关网络架构的信息,请参阅神经网络架构;有关训练方法的信息,请参阅训练方法和优化

1. 激活函数为何重要

1.1 激活函数的必要性

激活函数在神经网络中扮演着几个关键角色

  1. 它们为模型引入非线性,使其能够学习和理解仅靠线性变换无法实现的复杂函数和映射。

  2. 它们使网络能够学习复杂模式并创建非线性决策边界。

  3. 它们通过非线性映射帮助转换特征空间,使数据更容易分类。

没有激活函数,无论其深度如何,神经网络本质上都将是一个大型线性回归模型。

标题:激活函数在神经网络中的作用

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:412-423

1.2 非线性的重要性

非线性激活函数至关重要,因为

  1. 没有非线性,多层网络将退化为单一线性操作,使深度网络失去意义。

  2. 它们使得能够近似输入和输出映射之间存在的具有非线性的任意函数。

  3. 非线性激活函数允许网络建模数据中的复杂关系。

标题:线性网络与非线性网络比较

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:419-423

2. 常见激活函数

2.1 Sigmoid 函数

Sigmoid 激活函数将输入值映射到 0 到 1 的范围,这对于需要将输出解释为概率的模型非常有用。

定义: $f(x) = \frac{1}{1 + e^{-x}}$

值域: $(0, 1)$

导数: $f'(x) = f(x)(1 - f(x))$

标题:Sigmoid 函数图

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:427-433

2.2 Tanh 函数

Tanh(双曲正切)函数与 Sigmoid 类似,但将值映射到 -1 到 1 的范围,使输出以零为中心。

定义: $f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$

值域: $(-1, 1)$

导数: $f'(x) = 1 - \tanh^2(x)$

标题:Tanh 函数图

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:434-441

2.3 ReLU 函数

整流线性单元(ReLU)是深度学习中最广泛使用的激活函数之一,因为它具有计算效率高和有效解决梯度消失问题的优点。

定义: $f(x) = \max(0, x)$

值域: $[0, +\infty)$

导数:

  • 当 $x > 0$ 时,$f'(x) = 1$
  • 当 $x \leq 0$ 时,$f'(x) = 0$(技术上在 $x = 0$ 处未定义,但通常设置为 0)

标题:ReLU 函数图

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:442-449

2.4 Leaky ReLU 函数

Leaky ReLU 通过在输入为负时允许一个小的非零梯度来解决“ReLU 死亡”问题。

定义: $f(x) = \begin{cases} x, & \text{if}\ x > 0 \ \alpha x, & \text{if}\ x \leq 0 \end{cases}$ 其中 $\alpha$ 是一个小常数(通常为 0.01 或 0.001)

值域: $(-\infty, +\infty)$

导数:

  • 当 $x > 0$ 时,$f'(x) = 1$
  • 当 $x \leq 0$ 时,$f'(x) = \alpha$

标题:Leaky ReLU 函数图

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:450-462

2.5 SoftPlus 函数

SoftPlus 可以被认为是 ReLU 函数的一个平滑近似。

定义: $f(x) = \ln(1 + e^x)$

值域: $(0, +\infty)$

标题:SoftPlus 函数图

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:463-470

2.6 Softmax 函数

Softmax 函数主要用于多类别分类,将一个值向量转换为概率分布。

定义: $\sigma(z)_j = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}}$ 其中 $z$ 是输入向量,$z_j$ 是第 $j$ 个元素,$K$ 是输出类别的数量。

值域: 每个元素在 $(0, 1)$ 之间,所有元素的和等于 1

标题:Softmax 函数应用

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:471-574

3. 激活函数选择标准

3.1 考虑的特性

选择激活函数时,应考虑以下特性

  1. 非线性:确保网络可以建模复杂模式
  2. 可微性:对于基于梯度的优化很重要
  3. 单调性:有助于确保单层网络的凸性
  4. 输出值范围:有限的范围可以稳定基于梯度的优化
  5. 计算效率:影响训练和推理速度

标题:激活函数选择过程

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:483-490

3.2 激活函数选择指南

下表提供了何时使用特定激活函数的指南

场景推荐的激活函数
输出层(二分类)Sigmoid
输出层(多类别分类)Softmax
输出层(回归)线性级
隐藏层(通用)ReLU 或 Leaky ReLU
隐藏层(当担心神经元死亡时)Leaky ReLU
隐藏层(ReLU 的替代)Tanh
当网络使用 ReLU 不收敛时尝试 Tanh 或 Leaky ReLU

标题:激活函数选择决策树

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:492-503

4. ReLU 的优点

ReLU 已成为隐藏层最广泛使用的激活函数,因为它具有以下几个关键优点

  1. 计算效率:ReLU 只需要一个简单的 max 操作,这使得它比需要昂贵的指数运算的 Sigmoid 或 Tanh 函数计算速度快得多。

  2. 缓解梯度消失:与 Sigmoid 和 Tanh 在某些区域饱和并梯度接近零不同,ReLU 对于正输入具有恒定的梯度 1,这有助于解决梯度消失问题。

  3. 稀疏激活:ReLU 自然地在网络中创建稀疏性(因为它对负输入输出精确的零),这在计算上具有优势并有助于特征选择。

标题:ReLU 与 Sigmoid 特性比较

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:504-509

5. 与神经网络的集成

5.1 在神经网络架构中的位置

激活函数在每个神经元内的线性变换之后应用,引入非线性,使网络能够学习复杂模式。

标题:激活函数在神经元中的位置

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:143-147

5.2 在网络层中的作用

神经网络中的不同层可能根据其特定作用使用不同的激活函数

标题:跨网络层的激活函数

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:9-20, 492-503

6. 反向传播的导数计算

激活函数的导数对于神经网络训练中的反向传播至关重要。以下是常见激活函数的导数

激活函数导数
Sigmoid (σ(x))σ(x)(1-σ(x))
Tanh1-tanh²(x)
ReLU当 x>0 时为 1,当 x≤0 时为 0
Leaky ReLU当 x>0 时为 1,当 x≤0 时为 α
Softplus1/(1+e^(-x))
Softmaxσ(x)(1-σ(x))(对于每个输出)

标题:激活函数导数在反向传播中的作用

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:477-482, 559-587

7. 高级主题

7.1 交叉熵和 Softmax

对于分类任务,交叉熵损失函数通常与 Softmax 激活函数结合使用。交叉熵定义为

$$C = -\frac{1}{n}\sum[y\ln a + (1-y)\ln(1-a)]$$

其中 n 是训练样本的总数,y 是目标输出,a 是激活函数的实际输出。

交叉熵成本函数对权重的导数简化为

$$\frac{\partial C}{\partial w_j} = \frac{1}{n}\sum x_j(σ(z)-y)$$

这种简化是使用交叉熵与 Sigmoid 或 Softmax 激活函数结合的主要优势之一,因为它消除了由 Sigmoid 导数项引起的梯度消失问题。

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:559-593

7.2 Tanh 为何比 Sigmoid 更快

Tanh 激活函数在训练期间通常比 Sigmoid 收敛更快,因为

$$\tanh'(x) = 1-\tanh(x)^2 \in (0,1)$$ $$\sigma'(x) = \sigma(x)(1-\sigma(x)) \in (0,\frac{1}{4}]$$

由于 Tanh 的导数可以达到最大值 1(而 Sigmoid 的最大值为 0.25),因此梯度信号更强,从而在训练期间实现更快的收敛。这使得 Tanh 的梯度消失问题比 Sigmoid 更不严重。

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:597-606

8. 与其他神经网络组件的关系

激活函数与其他神经网络组件协同工作,共同创建一个完整的学习系统

标题:神经网络生态系统中的激活函数

来源:英文版/ch03_DeepLearningFoundation/ChapterIII_DeepLearningFoundation.md:136-147, 237-269

9. 结论

激活函数是神经网络的基本组成部分,它们引入非线性,使这些模型能够学习数据中的复杂模式和关系。激活函数的选择显著影响模型性能、训练动态和计算效率。

实践中,ReLU 及其变体由于其计算效率和有效缓解梯度消失问题的能力,已成为隐藏层的默认选择。对于输出层,应根据具体任务要求选择激活函数——二分类使用 Sigmoid,多类别分类使用 Softmax,回归任务使用线性激活函数。

理解不同激活函数的特性、优点和局限性对于设计有效的神经网络架构和解决训练问题至关重要。