终于把神经网络中的激活函数搞懂了!!
终于把神经网络中的激活函数搞懂了!!
激活函数是神经网络中的一个关键组件,主要用于引入非线性特性,使得神经网络能够逼近和处理复杂的非线性关系。本文将详细介绍激活函数的基本概念、作用以及常见类型,包括Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Swish和Softmax等。
什么是激活函数
激活函数是应用于神经元输入的加权和(即线性组合)后的非线性变换函数。它决定了神经元的输出如何传递到下一层,从而影响整个网络的学习和预测能力。
数学上可以表示为:
其中:
- (x_i) 为输入信号
- (w_i) 是对应的权重
- (b) 是偏置
- (z) 为加权和
将线性输出结果 (z) 通过激活函数 (\phi) 转化为非线性输出。
激活函数的作用
- 引入非线性
如果没有激活函数,神经网络的每一层本质上都是线性变换的叠加,即便有多层,整个网络仍然是线性模型,无法表示复杂的非线性关系。激活函数通过非线性变换,使得神经网络可以学习和逼近复杂的非线性函数。
- 控制输出范围
激活函数通常会对输入值进行某种形式的压缩或映射,确保输出值落在某个固定范围内。这种规范化能够帮助模型更稳定地训练,并减少梯度爆炸或梯度消失的风险。
- 帮助梯度传播
在反向传播过程中,激活函数的可导性确保了梯度能够有效地传递,从而使得网络参数能够通过梯度下降等优化算法进行调整和优化。
常见的激活函数
Sigmoid
Sigmoid 函数将输入压缩到 ((0, 1)) 的范围内,常用于二分类任务中的输出层。数学公式为:
优缺点
优点:
- 平滑且连续,输出范围归一化到 ((0, 1)),适合概率输出。
- 在早期的简单神经网络中被广泛使用。
缺点:
- 梯度消失问题:输入较大或较小时,梯度接近于零,导致训练速度减慢。
- 非零均值问题:输出值非零均值会导致后续层的梯度传播不稳定。
Tanh
Tanh 是 Sigmoid 的变形,将输入压缩到 ((-1, 1)) 范围内,常用于隐藏层。
优缺点
优点:
- 输出零均值,减少了后续层梯度的不稳定性。
- 相比于 Sigmoid,在值域上包含负值,更适合某些网络架构。
缺点:
- 梯度消失问题:类似 Sigmoid,当输入较大或较小时,梯度趋近于零。
ReLU
ReLU 是一种分段线性函数,将输入值的负部分截断为 0,正部分保持不变,常用于深度神经网络的隐藏层。
优缺点
优点:
- 计算简单高效。
- 解决了 Sigmoid 和 Tanh 的梯度消失问题。
- 能够加速收敛。
缺点:
- 死神经元问题,当 (x \leq 0) 时,梯度恒为零,可能导致部分神经元永远不更新。
Leaky ReLU
Leaky ReLU 是 ReLU 的改进版,允许负输入保留一个较小的斜率,常用于深度神经网络的隐藏层,特别是负值输入较多的场景。
其中 (\alpha) 是一个小的正数(如 0.01)。
优缺点
优点:
- 解决了 ReLU 的死神经元问题,使负值输入仍有梯度更新。
缺点:
- 引入了一个需要手动调整的超参数 (\alpha)。
ELU
ELU 是另一种改进的 ReLU 函数,使用指数函数对负输入进行处理。
其中 (\alpha) 是一个超参数。
优缺点
优点:
- 负半轴更平滑,且输出接近于零均值,提高了梯度更新的稳定性。
- 在某些情况下优于 Leaky ReLU 和 ReLU。
缺点:
- 计算成本比 ReLU 高。
- 引入了超参数 (\alpha)。
Swish
Swish 是 Google 提出的一个激活函数,较 ReLU 性能更优,特别是在深层网络中。
优缺点
优点:
- 梯度更稳定,能改善训练性能。
- 实验显示 Swish 在深度网络中优于 ReLU 和其他激活函数。
缺点:
- 计算稍复杂。
Softmax
Softmax 是一种归一化函数,用于将一组输入值转化为概率分布,常用于多分类问题的输出层。
优缺点
优点:
- 输出是概率分布,适合分类问题。
缺点:
- 对输入范围较敏感,可能导致数值不稳定。