Deep Learning基礎--Softmax求導過程


 

一、softmax函數

softmax用於多分類過程中,它將多個神經元的輸出,映射到(0,1)區間內,可以看成概率來理解,從而來進行多分類!

假設我們有一個數組,V,Vi表示V中的第i個元素,那么這個元素的softmax值就是:

$$  S_i = \frac{e^j }{ \sum\nolimits_{j} e^j}  \tag{1}$$

更形象的如下圖表示:

softmax直白來說就是將原來輸出是3,1,-3通過softmax函數一作用,就映射成為(0,1)的值,而這些值的累和為1(滿足概率的性質),那么我們就可以將它理解成概率,在最后選取輸出結點的時候,我們就可以選取概率最大(也就是值對應最大的)結點,作為我們的預測目標。

二、softmax相關求導

當我們對分類的Loss進行改進的時候,我們要通過梯度下降,每次優化一個step大小的梯度,這個時候我們就要求Loss對每個權重矩陣的偏導,然后應用鏈式法則。那么這個過程的第一步,就是對softmax求導傳回去,不用着急,我后面會舉例子非常詳細的說明。在這個過程中,你會發現用了softmax函數之后,梯度求導過程非常非常方便。

下面我們舉出一個簡單例子。

 

根據圖片網絡所示,我們能得到下面公式:

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函數得到:

 $$a_4 = \frac{e^{z_4}}{e^{z_4} + e^{z_5} + e^{z_6}}, a_5 = \frac{e^{z_5}}{e^{z_4} + e^{z_5} + e^{z_6}}, a_6 = \frac{e^{z_6}}{e^{z_4} + e^{z_5} + e^{z_6}}   \tag{2}$$

 

經過上面的形式化后,接下來我們選用交叉熵作為損失函數來推導Softmax的偏導。交叉熵的形式為:

$$ Loss = -\sum_{i} y_i \cdot \ln a_i    \tag{3}$$

其中$y$代表我們的真實值,$a$代表我們softmax求出的值。$i$代表的是輸出結點的標號。

為了形式化說明,我這里認為訓練數據的真實輸出為第$j$個為1,其它均為0,那么Loss就變成了$Loss = - y_j \cdot \ln a_j = - \ln a_j$,累和已經去掉,現在我們開始求導數。

參數的形式在該例子中,總共分為w41,w42,w43,w51,w52,w53,w61,w62,w63.這些,那么比如我要求出w41,w42,w43的偏導,就需要將Loss函數求偏導傳到結點4,然后再利用鏈式法則繼續求導即可。

舉個例子此時求w41的偏導為:

$$
\frac{\partial Loss}{\partial w_{41}} = \frac{\partial Loss}{\partial a_{4}} \cdot \frac{\partial a_4}{\partial z_{4}} \cdot \frac{\partial z_4}{\partial w_{41}}
\\= - \frac{1}{a_4} \cdot \frac{\partial a_4}{\partial z_{4}} \cdot 1  \tag{4}
$$

上式中,只要求出$\frac{\partial a_4}{\partial z_{4}}$就可以完成推導。這里分為兩種情況:

1. 當$j=i$時:

$$ \frac{\partial a_j}{\partial z_i} = \frac{\partial}{\partial z_i}(\frac{e^{z_j}}{\sum_k e^{z_k}})
\\=\frac{(e^{z_j})' \cdot \sum_k e^{z_k} - e^{z_j} \cdot e^{z_j}}{(\sum_k e^{z_k})^2}
\\=\frac{e^{z_j}}{\sum_k e^{z_k}} - \frac{e^{z_j}}{\sum_k e^{z_k}} \cdot \frac{e^{z_j}}{\sum_k e^{z_k}}
\\=a_j \cdot (1-a_j)
\tag{5} $$

將(5)式帶入(4)中,得到$ \frac{\partial Loss}{\partial w_{j}} = -\frac{1}{a_j} \cdot a_j \cdot (1-a_j) = a_j - 1$。

2. 當$j \neq i$時:

$$ \frac{\partial a_j}{\partial z_i} = \frac{\partial}{\partial z_i}(\frac{e^{z_j}}{\sum_k e^{z_k}})
\\=\frac{0 \cdot \sum_k e^{z_k} - e^{z_j} \cdot e^{z_i}}{(\sum_k e^{z_k})^2}
\\=- \frac{e^{z_j}}{\sum_k e^{z_k}} \cdot \frac{e^{z_i}}{\sum_k e^{z_k}}
\\=-a_j \cdot a_i
\tag{6} $$

將(6)式帶入(4)中,得到$ \frac{\partial Loss}{\partial w_{j}} = -\frac{1}{a_j} \cdot -a_j \cdot a_i = a_i$。

 

OK,到此我們已經完全推導完Softmax部分的反向傳播。

 

 

參考:

1. https://zhuanlan.zhihu.com/p/25723112

2. https://blog.csdn.net/u014313009/article/details/51045303

 


免責聲明!

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



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