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

  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/yanghh/p/13915134.html
Copyright © 2011-2022 走看看