• 神经网络中常用的激活函数


    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)$ 

  • 相关阅读:
    数组
    字符对象的方法
    事件
    判断数据类型
    数据类型和变量
    语法
    快速入门
    JavaScript简介
    Spring init-method和destroy-method属性的使用
    spring3后提供了的context:property-placeholder/元素
  • 原文地址:https://www.cnblogs.com/qizhou/p/12214551.html
Copyright © 2020-2023  润新知