1、什么是激活函数
2、为什么要用
3、都有什么激活函数(linear、sigmoid、relu、tanh、leaky relu、softmax)
4、不同激活函数的适用场景
- 什么是激活函数
激活函数是确定神经网络输出的数学方程式。该功能附加到网络中的每个神经元,并根据每个神经元的输入来确定是否应激活(“触发”)该功能。激活功能还有助于将每个神经元的输出标准化到1到0或-1到1的范围内。
激活函数的另一个方面是,它们必须具有高效的计算能力,因为在一个深层的神经网络中它们是针对每个数据样本跨数千甚至数百万个神经元计算的。
-
为什么要用
如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 -
都有什么激活函数
阶跃函数
使用阶跃函数作为激活函的缺点是,函数不光滑,不连续,不可导,实际应用中,通常会考虑不同的激活函数。
线性函数
从某种意义上说,线性函数优于步进函数,因为它允许多个输出,而不仅仅是“是”和“不是”(1/0)。
但是,线性激活函数有两个主要问题:
(1) 不可能使用反向传播(梯度下降)来训练模型-函数的导数是常数,并且与输入x无关,不利于模型求解过程中对权重的确定。
(2) 神经网络的所有层都将折叠为线性激活关系,无论神经网络中有多少层,最后一层都是第一层的线性函数(因为线性函数的线性组合仍然是线性函数)。因此,线性激活函数将神经网络变成一层。
具有线性激活函数的神经网络就是线性回归模型,它具有有限的能力和处理输入数据的复杂度变化参数的能力。
非线性激活
现代的神经网络模型使用非线性激活函数。它们使模型可以在网络的输入和输出之间创建复杂的映射,这对于学习和建模复杂的数据(例如图像,视频,音频和非线性或高维数据集)至关重要。
只要激活函数是非线性的,几乎可以想象的任何过程都可以表示为神经网络中的函数计算。
非线性函数解决了线性激活函数的问题:
(1) 它们允许反向传播,因为它们具有与输入有关的微分函数。
(2) 它们允许“堆叠”多层神经元来创建一个深层的神经网络,可应用于复杂问题的求解。
Sigmoid函数
优点:
平滑的渐变,防止输出值“跳跃”。
输出值介于0和1之间,对每个神经元的输出进行标准化。
清晰的预测,对于大于2或小于-2的x,趋向于将y值(预测)带到曲线的边缘,非常接近1或0。这可以实现清晰的预测。
缺点:
消失梯度,双边区域数值饱和(x很大或很小)导致随着x变化带来的y变化很小,导数趋于零,容易造成模型求解梯度消失问题。这可能导致网络求解过程中拒绝进一步学习,或者太慢而无法获得准确的预测。
输出y中心不是零。
tanh函数
优点:
正负方向以原点对称,输出均值是0(与很多样本的分布均值接近),使得其收敛速度要比sigmoid快,减少迭代次数。
具有Sigmoid函数的优点。
缺点:
与Sigmoid函数一样,也存在消失梯度问题。
Relu函数
优点:
计算效率高,允许网络快速收敛。
非线性,尽管Relu看起来像线性函数,但它具有导数函数并允许反向传播。
缺点:
神经元死亡问题,当输入接近零或为负时,函数的梯度变为零,网络将无法执行反向传播,也无法学习。
Leaky Relu函数
优点:
解决了Relu的神经元死亡问题问,在负区域具有小的正斜率,因此即使对于负输入值,它也可以进行反向传播。
具有Relu函数的优点。
缺点:
结果不一致,无法为正负输入值提供一致的关系预测(不同区间函数不同)。
Softmax
公式:
K代表输出类别总数
Softmax函数的作用:
把一堆实数的值映射到0-1区间,并且使他们的和为1,可以理解为对应每个类别对应的预测概率!
4、适用场景
Sigmoid、tanh:二分类任务输出层;模型隐藏层
Relu、Leaky Relu:回归任务;卷积神经网络隐藏层
Softmax:多分类任务输出层