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
    不当之处,敬请批评指正。
  • 相关阅读:
    043 抖音短视频爬取实战
    048 Python里面yield的实现原理
    047 Python面试知识点小结
    001 Glang实现简单分布式缓存
    046 算法的时间复杂度和空间复杂度计算
    042 使用Python远程监视多个服务器和数据库的状态,python,监控,同步
    041基于python实现jenkins自动发布代码平台
    045 chrome浏览器前端调试技巧
    STL学习
    Asio与Boost.Asio
  • 原文地址:https://www.cnblogs.com/wumh7/p/9455631.html
Copyright © 2011-2022 走看看