• 深度学习基础系列(四)| 理解softmax函数


      深度学习最终目的表现为解决分类或回归问题。在现实应用中,输出层我们大多采用softmax或sigmoid函数来输出分类概率值,其中二元分类可以应用sigmoid函数。

      而在多元分类的问题中,我们默认采用softmax函数,具体表现为将多个神经元的输出,映射到0 ~ 1的区间中,按概率高低进行分类,各概率之和为1。

      某分类的概率数学表达式为:y= e/ ∑j=1e 

      具体来说,假设有四个输出单元,分别为:

    •   y= ex1 / (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.4
    •   y2 = ex2/ (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.15
    •   y= ex3/ (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.15
    •   y4= ex4/ (ex1 + ex2 + ex3 + ex4 ), 假设其概率为0.3

      可以看出 y1 + y+ y+ y4 = 1。并且其中某神经元的输出若增加,则其他神经元的输出则减少,反之也成立。

      最后再看看softmax函数如何求导,令y = ex/ ∑exk ,分两种情况:

      1. i为softmax值,我们对exi 求导,

          与此相关的基础求导公式:(u/v)= (uv - uv') / v2 和  (ex)= e,并应用链式法则可得求导过程:

       dy/dexi = ( ex/ ∑exk)

           =  (exi * ∑exk  - exi * exi ) / (∑exk)

           =  ex/ ∑exk   -  (ex/ ∑exk ) * (ex/ ∑exk )

           = yxi - yxi2

      2. i不为softmax值,我们依然对exi 求导,其过程为:

       dy/dexi =  ( ex/ ∑exk)    注:i ≠ j

           = (0 * ∑exk - exj * exi) / (∑exk)

           = -1 * (ex/ ∑exk ) * (exj / ∑exk)

           = - yxi * yxj 

     

           

      

  • 相关阅读:
    切片 Slice
    表单与v-model
    vue-内置指令
    go单元测试
    go异常处理
    设计模式
    django数据库事务
    go interface衍生的插件化处理
    goroutine
    drf之序列化
  • 原文地址:https://www.cnblogs.com/hutao722/p/9754822.html
Copyright © 2020-2023  润新知