美文网首页
机器学习笔记(五)——激活函数

机器学习笔记(五)——激活函数

作者: ____X | 来源:发表于2020-02-29 16:30 被阅读0次

激活函数区别和作用

本质:
    激活函数是来向神经网络中引入非线性因素,通过激活函数,神经网络就可以拟合各种曲线。
    在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两步:
      1.输入该节点的值为x1,x2 时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值 z^{\left [ 1 \right ]} = w_{1}x_{1} + w_{2}x_{2}+ b^{\left [ 1 \right ]} = W^{\left [ 1 \right ]}x+b^{\left [ 1 \right ]},上标 [1]表示第 1 层隐藏层。
      2.再进行一个非线性变换,也就是经过非线性激活函数,计算出该节点的输出值(激活值) \alpha ^{(1)} = \sigma (z^{(1)}),其中 \sigma (z) 为非线性函数。

激活函数.png

常见的激活函数

    在深度学习中,常用的激活函数主要有:sigmoid函数tanh函数ReLU函数softmax函数。下面我们将一一介绍。

1.sigmoid函数

    sigmoid函数是将(-∞,+∞)的数映射到(0,1)之间。sigmoid函数的公式以及图形如下:
g(z)=\frac{1}{1+e^{-z}}

sigmoid.png

    sigmoid函数作为非线性激活函数,但其很少被使用,因为又以下几个缺点:
      1.sigmoid极容易导致梯度消失问题。sigmoid神经元在值为0或1的时候接近饱和,在这些区域梯度将接近于0,使得梯度更新十分缓慢,即梯度消失;
      2.计算费时;
        a.计算sigmoid函数中,幂计算会导致耗时增加;
        b. 函数的输出不是以0为均值,将不便于下层的计算;
      3. sigmoid函数不是关于原点中心对称的(zero-centered),Sigmoid函数的输出值恒大于0,这会导致模型训练的收敛速度变慢。

2.tanh函数

    tanh函数相较于sigmoid函数要常见一些,tanh函数将取值为(-∞,+∞)的数映射到(-1,1)之间。tanh函数在0附近很短的一段区域可以近似看作线性。tanh函数均值为0,弥补了sigmoid函数均值为0.5的缺点,解决了sigmoid中的zero-centered问题,但同样也存在着梯度消失的问题。tanh函数的公式以及图形如下:
g(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}

tanh.png

    特征其实与sigmoid激活函数相似,解决了sigmoid函数的zero-centered问题,但仍然存在梯度消失的问题。

3.ReLU函数

    ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。ReLU函数的公式以及图形如下:
g(z)=\left\{\begin{matrix} z,if\; z>0\\ 0,if\; z<0 \end{matrix}\right.

ReLU.png

g^{'}(z)=\left\{\begin{matrix} 1,if\; z>0\\ 0,if\; z<0 \end{matrix}\right.
    ReLU函数的优点
      1. 在输入为正数的时候,解决了梯度消失问题;
      2. 计算速度非常快,只需要判断输入是否大于0,只有线性关系,不管是前向传播还是反向传播,都比sigmoid和tanh要快很多(sigmoid和tanh要计算指数);
      3. 收敛速度远快于sigmoid和tanh
    虽然ReLU很不错,但依旧有一些缺点
      1. ReLU的输出不是zero-centered
      2. 当输入为负时,产生梯度消失。Dead ReLU Problem,由于ReLU在小于0时梯度为0,导致其相应的参数永远不能被更新,这以为这某些神经元可能永远不会被激活。
    尽管ReLU激活函数存在一些问题,但它目前仍然是最常用的Activation Function,在构建人工神经网络的时候推荐优先尝试。

4.Leaky-ReLU函数

    为了解决ReLU函数的Dead ReLU Problem,人们提出了将ReLU函数的前半段设为固定值α,这就是Leaky-ReLU函数。Leaky-ReLU函数的公式以及图形如下:
g(z)=\left\{\begin{matrix} z,if\; z>0\\ \alpha\! z,if\; z<0 \end{matrix}\right.

Leaky-ReLU.png

    理论上来讲,Leaky-ReLU具有ReLU函数的所有有点,也克服了Dead ReLU Problem。

5.PReLU函数(Parametric Rectified Linear Unit)

    参数化修正线性单元(Parameteric Rectified Linear Unit,PReLU)属于 ReLU 修正类激活函数的一员。它和 RReLU 以及 Leaky ReLU 有一些共同点,即为负值输入添加了一个线性项。而最关键的区别是,这个线性项的斜率实际上是在模型训练中学习到的。
    如果α=0,那么PReLU退化为ReLU;如果α是一个很小的固定值(如α=0.01),则PReLU退化为Leaky ReLU(LReLU)。PReLU是通过在训练中,根据数据自学习参数得到α。 有实验证明,与ReLU相比,LReLU对最终的结果几乎没什么影响。

6.ELU (Exponential Linear Units)

f(x)=\left\{\begin{matrix} x,if\; x>0\\ \alpha (e^{x}-1),otherwise \end{matrix}\right.

ELU.png
    ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:
  • 融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性;
  • 右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒,不会有Dead ReLU问题;
  • ELU的输出均值接近于零,所以收敛速度更快。

    它还有的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。

总结

summary.png

收集与:
https://www.cnblogs.com/lliuye/p/9486500.html
https://zhuanlan.zhihu.com/p/44398148
https://liam.page/2018/04/17/zero-centered-active-function/
https://zhuanlan.zhihu.com/p/25110450
https://www.cnblogs.com/jins-note/p/9646602.html
https://blog.csdn.net/zrh_CSDN/article/details/81266188

相关文章

  • 机器学习笔记(五)——激活函数

    激活函数区别和作用 本质:    激活函数是来向神经网络中引入非线性因素,通过激活函数,神经网络就可以拟合各种曲线...

  • tensorflow--激活函数

    来源:tensorflow学习笔记(四):激活函数

  • 机器学习常见面试问题及答案汇总

    一些常见的机器学习面试题(不定时更新)。 激活函数的作用?激活函数为神经网络提供了非线性。如果不使用激活函数,每一...

  • 机器学习中常见函数

    1、激活函数 常用于神经网络,激活函数增加了神经网络模型的非线性特征 2、损失函数 机器学习过程中中,我们期望样本...

  • 激活函数softmax-P2分类任务

    激活函数种类激活函数作用 激活函数 深度学习常用激活函数之— Sigmoid & ReLU & Softmax 深...

  • 2019-10-09

    深度学习第三天 激活函数: 激活函数是...

  • 2021-06-30

    一、机器学习 1. HMM 1.1 2. MEMM 3. CRF 4. 激活函数  4.1 梯度优化算法[http...

  • 神经网络:激活函数

    神经网络学习笔记 - 激活函数的作用、定义和微分证明 http://www.cnblogs.com/steven-...

  • 激活函数学习笔记

    本博客内容来源于网络以及其他书籍,结合自己学习的心得进行重编辑,因为看了很多文章不便一一标注引用,如图片文字等侵权...

  • ReLu 激活函数理解

    ReLU激活函数:简单之美深度学习中的激活函数与梯度消失

网友评论

      本文标题:机器学习笔记(五)——激活函数

      本文链接:https://www.haomeiwen.com/subject/igxfhhtx.html