zoukankan      html  css  js  c++  java
  • 神经网络中常用的激活函数

    ReLu

    $max(0,z)$

      修正线性单元,是最常用的非线性映射函数。常在神经网络隐层中使用,因为它在反向传播中计算导数十分方便。导数为:

    $left{egin{aligned}&1,zge0\&0,z<0end{aligned} ight.$

    softplus

     $log(1+e^z)$

      ReLu的“软化版”。导数为:

    $displaystyle 1-frac{1}{e^z+1}$

    sigmoid

    $displaystylesigma(z)=frac{1}{1+e^{-z}}$  

      同样将单个输入值映射到(0,1)之间,但函数是对称的。求导也很方便,导数为:

    $displaystyle frac{1}{1+e^{-z}} - frac{1}{(1+e^{-z})^2} =sigma(z)(1-sigma(z))$

    softmax

    $displaystylesigma(z) = frac{e^{z_i}}{sum_{j=1}^n z_j}$

      将一层的输出的多个值归一化,通常在预测各个类别的概率时用到,而且一般用在输出层。图类似于sigmoid,上图画的是元素数量为2的示意图。

      比如某个模型输出层中每个结点的输出分别是:狗、猫、猪、牛,这些动物是输入数据的真实标签的概率,概率总和显然应该为1,因此用softmax来归一化。好处是所有输出一定为正值,总和为1,并且较大值能够更好地凸显出来。

      softmax与其它激活函数最大的不同就在于,同一层每个元素的计算都涉及到该层的所有元素($R^n o R$),而其他激活函数都是每个元素算它们自己的($R o R$)。softmax的导数与sigmoid类似,复杂度也不高,但因它有“汇总”的功能,所以会分成两种情况。下面直接举个具体的例子来说明。

      假设这个激活函数用在输出层,该层有三个结点,前一层线性运算后的结果存在向量$z$中,损失函数使用MSE,于是目标函数为(不算正则项):

    $displaystyle L=frac{1}{2}left[(sigma_1(z)-y_1)^2+(sigma_2(z)-y_2)^2+(sigma_3(z)-y_3)^2 ight]$

      其中

    $displaystylesigma_i(z) = frac{e^{z_i}}{sum_{j=1}^3e^{z_j}}$

      对$z_1$进行求导:

    $ egin{aligned} &frac{partial L}{partial z_1}\ =& (sigma_1(z)-y_1)left(frac{e^{z_1}}{e^{z_1}+e^{z_2}+e^{z_3}} ight)'_{z_1}+\ &(sigma_2(z)-y_2)left(frac{e^{z_2}}{e^{z_1}+e^{z_2}+e^{z_3}} ight)'_{z_1}+\ &(sigma_3(z)-y_3)left(frac{e^{z_3}}{e^{z_1}+e^{z_2}+e^{z_3}} ight)'_{z_1}\ =&(sigma_1(z)-y_1)left(frac{e^{z_1}}{e^{z_1}+e^{z_2}+e^{z_3}}-frac{(e^{z_1})^2}{(e^{z_1}+e^{z_2}+e^{z_3})^2} ight)+\ &(sigma_2(z)-y_2)left(frac{-e^{z_1}e^{z_2}}{(e^{z_1}+e^{z_2}+e^{z_3})^2} ight)+\ &(sigma_3(z)-y_3)left(frac{-e^{z_1}e^{z_3}}{(e^{z_1}+e^{z_2}+e^{z_3})^2} ight)\ =&(sigma_1(z)-y_1)sigma_1(z)(1-sigma_1(z))+\ &(sigma_2(z)-y_2)[-sigma_1(z)sigma_2(z)]+\ &(sigma_3(z)-y_3)[-sigma_1(z)sigma_3(z)] end{aligned} $

      $z_2,z_3$的求导类似。可以看出,在反向传播中,当激活函数所在结点$i$与待求导的结点$j$相同时,softmax导数为:

    $sigma_i(z)(1-sigma_i(z))$

      否则,导数为:

    $-sigma_i(z)sigma_j(z)$

    tanh

    $displaystyle ext{tanh}(z)=frac{e^z-x^{-z}}{e^z+e^{-z}}=2sigma(2z)-1$

      与sigmoid有点像,映射到(-1,1)。

      导数为:

    $displaystyle frac{4}{e^{2z}+1}-frac{4}{(e^{2z}+1)^2} = 1- ext{tanh}^2(z)$ 

  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/qizhou/p/12214551.html
Copyright © 2011-2022 走看看