美文网首页python与Tensorflow
Tensorflow——tensorflow的激活函数

Tensorflow——tensorflow的激活函数

作者: SpareNoEfforts | 来源:发表于2018-10-30 16:00 被阅读106次

    目录

    1. sigmoid 函数
    2. tanh函数
    3. relu 函数
    4. softplus 函数
    5. leakrelu 函数
    6. ELU 函数
    7. SELU函数

    1.sigmoid 函数

    这是传统的神经网络中常用的激活函数之一。
    公式:
    S(x) = \frac{1}{{1 + {e^{ - x}}}}
    图像:

    • 优点:它输出映射在(0,1)内,单调连续,非常适合用作输出层,并且求导比较容易;
    • 缺点:具有软饱和性,一旦输入落入饱和区,一阶导数就变得接近于0,很容易产生梯度消失。
    • 饱和性:当|x|>c时,其中c为某常数,此时一阶导数等于0,通俗的说一阶导数就是上图中的斜率,函数越来越水平。

    2. tanh函数

    tanh也是传统神经网络中比较常用的激活函数。
    公式:
    \tanh (x) = \frac{{\sinh x}}{{\cosh x}} = \frac{{{e^x} - {e^{ - x}}}}{{{e^x} + {e^{ - x}}}} = \frac{{1 - {e^{ - 2x}}}}{{1 + {e^{ - 2x}}}}
    图像:

    3. relu 函数

    relu函数是目前用的最多也是最受欢迎的激活函数。
    公式:
    f(x) = \max (x,0)
    图像:


    由上图的函数图像可以知道,

    5. leakrelu 函数

    leakrelu函数是relu激活函数的改进版本,解决部分输入会落到硬饱和区,导致对应的权重无法更新的问题。

    公式:
    f(x) = \max (x,leak*x)
    图像:


    左边缩小方差,右边保持方差;方差整体还是缩小的,而均值得不到保障。

    6. ELU 函数

    公式:
    ELU(x) = \left\{ {\begin{array}{*{20}{c}} x&{if(x > 0)}\\ {\alpha ({e^x} - 1)}&{if(x \le 0)} \end{array}} \right.
    图像:

    7. SELU函数

    最近的自归一化网络中提出,函数和图像如下

    公式:
    SELU(x) = \lambda \left\{ {\begin{array}{*{20}{c}} x&{if(x > 0)}\\ {\alpha ({e^x} - 1)}&{if(x \le 0)} \end{array}} \right.\begin{array}{*{20}{c}} {}&{\lambda > 1} \end{array}
    图像:
    蓝色是:selu,橙色是:elu


    左边缩小方差,右边放大方差,适当选取参数alpha和lambda,使得整体上保持方差与期望。如果选取:
    lambda=1.0506,alpha=1.67326,那么可以验证如果输入的x是服从标准正态分布,那么SELU(x)的期望为0,方差为1.

    相关文章

      网友评论

        本文标题:Tensorflow——tensorflow的激活函数

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