softmax函數


       前面提到激活函數,在實現手寫體 mnist 數據集的識別任務中的反向傳播過程文件(mnist_backward.py) 用到了softmax函數,又稱歸一化指數函數。下面就談談我對其的理解。

它能將一個含任意實數的K維的向量z的“壓縮”到另一個K維實向量σ(z) 中,使得每一個元素的范圍都在(0,1)之間,並且所有元素的和為1。

Softmax是一種形如下式的函數:

我們知道max,假如說我有兩個數,a和b,並且a>b,如果取max,那么就直接取a,沒有第二種可能  但有的時候我不想這樣,因為這樣會造成分值小的那個取不到。所以我希望分值大的那一項經常取到,分值小的那一項也偶爾可以取到,那么我用softmax就可以了 現在還是a和b,a>b,如果我們取按照softmax來計算取a和b的概率,那a的softmax值大於b的,所以a會經常取到,而b也會偶爾取到,概率跟它們本來的大小有關。所以說不是max,而是 Soft max 那各自的概率究竟是多少呢,我們下面就來具體看一下

       假設上面這個圖中的Z1,Z2,Z3為一個三分類模型的output vector,為[3,1,-3],3代表類別1所對應的分量,1為類別2對應的分量,-3為類別3對應的分量。經過Softmax函數作用后,將其轉化為了[0.88,0.12,0],這就代表了輸入的這個樣本被分到類別1的概率為0.88,分到類別2的概率為0.12,分到類別3的概率幾乎為0。這就是Softmax函數的作用
       因此Softmax函數得到的是一個[0,1]之間的值,現在討論其求導過程

下面我們舉出一個簡單例子,原理一樣,目的是為了幫助大家容易理解!

 

我們能得到下面公式:

z4 = w41*o1+w42*o2+w43*o3

z5 = w51*o1+w52*o2+w53*o3

z6 = w61*o1+w62*o2+w63*o3

z4,z5,z6分別代表結點4,5,6的輸出,01,02,03代表是結點1,2,3往后傳的輸入.

那么我們可以經過softmax函數得到

 

 

 為了形式化說明,我這里認為訓練數據的真實輸出為第j個為1,其它均為0

 

j=i對應例子里就是如下圖所示:

比如我選定了j為4,那么就是說我現在求導傳到4結點這!

 

 

這里對應我的例子圖如下,我這時對的是j不等於i,往前傳:

 

 

 

 本文參考:

知乎專題:https://www.zhihu.com/question/23765351 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM