zoukankan      html  css  js  c++  java
  • 激活函数

    什么是激活函数

    激活函数是一个几乎处处可微的函数,在神经网络中,它的作用是给神经网络添加一些非线性因素,从而使得神经网络能够解决一些更加复杂的问题。
    在某些情况下,数据是线性可分的,如下图所示:


    图片来源于网络

    而在另外一些情况下,数据是线性不可分的,如下图所示:


    图片来源于网络

    这个时候,我们就需要通过激活函数添加一些非线性因素,从而更好地解决问题,如下图所示:


    图片来源于网络

    常用的激活函数有哪些

    1. Sigmoid函数

    Sigmoid函数曾被广泛地使用,但是由于其自身的一些缺陷,现在已经很少被使用了。
    Sigmoid函数的表达式为:

    [f(x)=frac{1}{1+e^{-x}} ]

    Sigmoid函数的图像为:


    图片来源于网络

    Sigmoid函数的优点为:(1)函数值在(0,1)之间,函数值范围小,单调连续,优化稳定,适合用于输出层;(2)容易求导。
    Sgimoid函数的缺点为:(1)当x趋于正无穷或者负无穷时,其梯度趋近于0,容易产生梯度消失,导致训练出现问题;(2)输出并不是以0为中心。

    2. tanh函数

    现在,比起sigmoid函数,我们更倾向于使用tanh函数。Tanh函数的表达式如下:

    [tanh(x)=frac{1-e^{-2x}}{1+e^{-2x}} ]

    Tanh函数的图像如下:


    图片来源于网络

    Tanh函数的优点:(1)相比于sigmoid函数收敛速度更快;(2)输出以0为中心。
    Tanh函数的缺点为:和sigmoid函数一样,容易产生梯度消失的问题。

    3. ReLU函数

    ReLU函数近年来非常流行,其表达式为:

    [y= left{ egin {matrix} 0(xleqslant 0) \ x(x>0) end {matrix} ight} ]

    函数图像为:


    图片来源于网络

    ReLU函数的优点:(1)收敛速度快;(2)缓解了梯度消失的问题;(3)在无监督预训练的时候也有较好的表现。
    ReLU函数的缺点:可能会出现神经元死亡,权重无法更新的情况。

    Reference

    1. http://www.cnblogs.com/rgvb178/p/6055213.html
    不当之处,敬请批评指正。
  • 相关阅读:
    java面向对象高级分层实例_实体类
    But what exactly do we mean by "gets closer to"?
    information entropy as a measure of the uncertainty in a message while essentially inventing the field of information theory
    SVM vs. Softmax
    every row of W is a classifier for one of the classes
    Hinge Loss
    polynomial time
    Conditional random fields
    Frobenius Norm
    L2 范数 L1 范数 出租车范数
  • 原文地址:https://www.cnblogs.com/wumh7/p/9455631.html
Copyright © 2011-2022 走看看