常用的激活函数
- Sigmoid函数
- Tanh函数
- ReLU函数
- Leaky ReLU函数
- Softmax函数
Sigmoid函数
特点:
将任意实数映射到(0,1)区间内,输出值可以作为概率来解释。
函数平滑且易于求导,但其导数在两端趋近于0,即存在梯度消失问题。
输出值不是以0为中心的,这可能导致后续层的输入不是零均值,从而影响学习速度和效果。
使用场景:
主要用于二分类问题的输出层,因为输出值可以解释为属于某一类的概率。
在某些情况下,也用于隐藏层,但因其梯度消失问题,使用较少。
Tanh函数
特点:
将任意实数映射到(-1,1)区间内,输出值是以0为中心的。
与Sigmoid函数类似,也存在梯度消失问题,但相对于Sigmoid函数,其输出范围更大,有利于梯度的传播。
使用场景:
常用于需要输出值在-1和1之间的场景,如回归问题和循环神经网络(RNN)的隐藏层。
ReLU函数
特点:
当输入为正时,输出等于输入;当输入为负时,输出为0。
计算简单且高效,没有复杂的指数运算。
在正区间内解决了梯度消失问题,但在负区间内梯度为0,可能导致“死神经元”问题。
使用场景:
是目前深度学习中应用最广泛的激活函数之一,适用于大多数深度学习场景,特别是在处理图像识别、语音识别等任务时。
Leaky ReLU函数
特点:
Leaky ReLU是ReLU的一个变体,在输入为负时给予一个小的非零斜率,避免了“死神经元”问题。
死神经元:当神经网络中的某些神经元在训练过程中始终不被激活,即其输出值始终接近于零,这些神经元就被称为“死神经元”。这种情况通常是由于网络结构、初始化方式、学习率设置不当或训练数据不足等原因造成的。死神经元问题会降低神经网络的性能,因为它们无法对输入数据做出有效响应,也无法在训练过程中学习到有用的特征。
使用场景:
适用于需要解决ReLU中“死神经元”问题的场景,可以提高网络的稳定性和训练效果。
Softmax函数
特点:
将一组数值转换为概率分布,即所有输出的和为1,且每个输出都在(0,1)之间。
适用于多分类问题的输出层,可以将网络的输出转换为概率值。
使用场景:
当需要进行多分类任务时,Softmax函数非常有用,如图像识别、文本分类等。