激活函数
激活函数在神经网络中扮演着至关重要的角色。它们的主要功能是引入非线性因素,这使得神经网络能够学习和近似任何非线性函数,从而处理复杂的数据模式和决策边界。如果没有激活函数,即使网络拥有很多层,其表达能力仍然只限于线性函数,这大大限制了神经网络处理各种数据的能力。
激活函数的作用
- 引入非线性:激活函数使得神经网络可以处理非线性问题。在没有激活函数(或者说使用线性激活函数)的情况下,无论网络有多少层,输出仍是输入的线性组合。
- 帮助反向传播:在神经网络的训练过程中,激活函数的导数用于在反向传播算法中计算权重更新。如果没有可微的激活函数,这个优化过程将无法进行。
常见激活函数
- Sigmoid:将输入压缩至0和1之间。它非常适合用作输出层在二分类问题中,表示概率或是是否。但它有明显的缺点,包括梯度消失问题和输出非零中心化问题。
- ReLU (Rectified Linear Unit):提供了一个简单的非线性变换。如果输入为正则输出该值,否则输出0。ReLU 由于计算效率高且在正区间内梯度恒定,使其在实践中非常流行。然而,它也有缺点,比如“死亡ReLU”问题,即一些神经元可能永远不会激活,因为它们的输出总是0。
- Tanh (Hyperbolic Tangent):输出范围从-1到1,比sigmoid函数的形状更平滑,也是零中心的,这使得数据在模型的每一层中保持稳定。然而,它也会遇到梯度消失的问题。
激活对于非线性模型的函数生成
激活函数是生成非线性模型函数的关键组成部分。通过堆叠包含非线性激活函数的层,神经网络能够构建复杂的函数映射,这些映射可以捕获输入数据中的高度非线性关系。这使得神经网络可以在各种任务中,如图像识别、语音处理或任何其他需要非线性决策边界的领域,表现出色。
LSTM与激活函数
LSTM(长短期记忆网络)的工作机制包含了内部的激活函数,这些激活函数在门控机制中起到了关键作用,而全连接层(Dense layer)通常需要额外的激活函数来引入非线性,使得网络可以学习更复杂的函数。
LSTM层的激活函数
LSTM单元的设计包括三个主要的门控机制:遗忘门、输入门和输出门。每个门控机制的计算都涉及到激活函数:
-
遗忘门(Forget Gate):决定了哪些信息应该被遗忘或保留。这通常通过一个sigmoid函数实现,sigmoid函数输出一个0到1之间的数值,表示保留信息的比例。
-
输入门(Input Gate):确定新输入数据中的哪些信息是值得保留的。它同样使用sigmoid函数来决定保留哪些信息,以及一个tanh函数来创建一个候选值向量,这个向量会被加入到细胞状态。
-
输出门(Output Gate):决定下一个隐藏状态应该包含哪些信息。这个门控同样依赖于sigmoid函数来决定输出哪些信息,以及一个tanh函数来处理细胞状态,使其能够影响输出。
Dense层的激活函数
与LSTM层不同,Dense层或全连接层通常只是执行线性变换(即 Wx+bWx + bWx+b 形式的变换),并不自带如LSTM中那样的复杂结构和门控机制。因此,为了引入必要的非线性并使网络能够学习更复杂的模式,我们需要在Dense层后添加激活函数。
为什么需要这些激活函数?
- 在LSTM中:激活函数是内置在门控机制中的,它们帮助模型决定信息的流动(保留或忘记哪些信息),这对于捕捉时间序列数据中的长期依赖至关重要。
- 在Dense层中:激活函数使得层可以进行非线性变换,增强了网络的表示能力,使其可以适用于各种复杂的任务,如分类、回归等。