前面提到激活函數,在實現手寫體 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