神经网络中的激活函数及其各自的优缺点、以及如何选择激活函数

您所在的位置:网站首页 神经元激活体系疗法有哪些 神经网络中的激活函数及其各自的优缺点、以及如何选择激活函数

神经网络中的激活函数及其各自的优缺点、以及如何选择激活函数

#神经网络中的激活函数及其各自的优缺点、以及如何选择激活函数| 来源: 网络整理| 查看: 265

文章转载自:https://zhuanlan.zhihu.com/p/71882757

1.什么是激活函数?

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图,在神经元中,输入(inputs )通过加权,求和后,还被作用在一个函数上,这个函数就是激活函数。

2.为什么要用激活函数?

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

3.激活函数为什么是非线性的?

如果使用线性激活函数,那么输入跟输出之间的关系为线性的,无论神经网络有多少层都是线性组合。

使用非线性激活函数是为了增加神经网络模型的非线性因素,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。

输出层可能会使用线性激活函数,但在隐含层都使用非线性激活函数。

4.常用的激活函数:sigmoid,Tanh,ReLU,Leaky ReLU,PReLU,ELU,Maxout (1) sigmoid函数

sigmoid函数又称 Logistic函数,用于隐层神经元输出,取值范围为(0,1),可以用来做二分类。

sigmoid函数表达式: \sigma (x) = \frac{1}{1+e^{-x}}

它的导数为:

sigmoid函数的几何形状是一条S型曲线,图像如下:

优点:

Sigmoid函数的输出在(0,1)之间,输出范围有限,优化稳定,可以用作输出层。连续函数,便于求导。

缺点:

    1. sigmoid函数在变量取绝对值非常大的正值或负值时会出现饱和现象,意味着函数会变得很平,并且对输入的微小改变会变得不敏感。在反向传播时,当梯度接近于0,权重基本不会更新,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。

    2. sigmoid函数的输出不是0均值的,会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。

    3. 计算复杂度高,因为sigmoid函数是指数形式。

(2) Tanh函数

Tanh函数也称为双曲正切函数,取值范围为[-1,1]。

Tanh函数定义如下:

它的导数为:

函数图像如下:

Tanh函数是 sigmoid 的变形:

Tanh函数是 0 均值的,因此实际应用中 Tanh 会比 sigmoid 更好。但是仍然存在梯度饱和与exp计算的问题。

(3) ReLU函数

整流线性单元(Rectified linear unit,ReLU)是现代神经网络中最常用的激活函数,大多数前馈神经网络默认使用的激活函数。

ReLU函数定义如下:f(x)=max(0,x)

函数图像如下:

优点:

使用ReLU的SGD算法的收敛速度比 sigmoid 和 tanh 快。

    2. 在x>0区域上,不会出现梯度饱和、梯度消失的问题。

    3. 计算复杂度低,不需要进行指数运算,只要一个阈值就可以得到激活值。

缺点:

ReLU的输出不是0均值的。

    2. Dead ReLU Problem(神经元坏死现象):ReLU在负数区域被kill的现象叫做dead relu。ReLU在训练的时很“脆弱”。在x



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3