zoukankan      html  css  js  c++  java
  • Softmax 函数

    $Softmax$ 函数,又称归一化指数函数。作用是将多分类的结果以概率的形式展现出来,函数定义如下:

    $$Softmax(z_{i}) = frac{e^{z_{i}}}{sum_{c = 1}^{C}e^{z_{c}}}$$

    其中  $z_{i}$ 为第 $i$ 个节点的输出值,$C$ 为输出节点的个数,即分类的类别个数。通过 $Softmax$ 函数就可以将多分类的输出值转换为范围

    在 $0,1$ 区间内和为 $1$ 的概率分布。它是连接在输出层后面的,$Softmax$ 层的网络结构长成下面这个样子:

           

    所以 $Softmax$ 层具有两层神经元。引入指数函数对于 $Softmax$ 函数既有有点也有缺点:指数函数曲线呈现递增趋势,最重要的是斜

    率逐渐增大,也就是说在 $x$ 轴上一个很小的变化,可以导致 $y$ 轴上很大的变化。这种函数曲线能够将输出的数值拉开距离,这是优点,

    但当 $z_{i}$ 值非常大的话,计算得到的数值也会变的非常大,可能会发生溢出。

    因为神经网络采用的是反向传播算法进行训练,下面来看看 $Softmax$ 函数如何求导。回顾 $Softmax$ 函数的表达式:

    $$Softmax(z_{i}) = frac{e^{z_{i}}}{sum_{c = 1}^{C}e^{z_{c}}}$$

    其中 $i$ 表示输出节点的编号,对 $z_{j}$ 求偏导分为两种情况:

    1)$j = i$

    $$frac{partial S}{partial z_{j}} = frac{e^{z_{i}}sum_{c = 1}^{C}e^{z_{c}} - e^{z_{i}}e^{z_{j}}}{left ( sum_{c = 1}^{C}e^{z_{c}} ight )^{2}} = frac{e^{z_{i}}left (sum_{c = 1}^{C}e^{z_{c}} - e^{z_{j}}  ight )}{left ( sum_{c = 1}^{C}e^{z_{c}} ight )^{2}} \
    = frac{e^{z_{i}}}{sum_{c = 1}^{C}e^{z_{c}}} cdot frac{sum_{c = 1}^{C}e^{z_{c}} - e^{z_{j}}}{sum_{c = 1}^{C}e^{z_{c}}} \
    = p_{i}(1 - p_{j})$$

    2)$j eq i$

    $$frac{partial S}{partial z_{j}} = frac{- e^{z_{i}}e^{z_{j}}}{left ( sum_{c = 1}^{C}e^{z_{c}} ight )^{2}} = frac{-e^{z_{i}}}{sum_{c = 1}^{C}e^{z_{c}}} cdot frac{e^{z_{j}}}{sum_{c = 1}^{C}e^{z_{c}}} \
    = -p_{i}p_{j}$$

  • 相关阅读:
    edgeR
    R中的运算符,条件语句,控制语句
    library-type:fr-unstanded vs fisrt-stand vs second-stanrd
    R的几个基础函数
    HTseq-count
    HISAT2的运用
    shell的符号总结
    python-tuple
    python -List
    win10 ubuntu18.0 LTS双系统安装
  • 原文地址:https://www.cnblogs.com/yanghh/p/13915134.html
Copyright © 2011-2022 走看看