softmax 函數的理解和優點


       

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

定義

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

     S_i = \frac{e^{V_i}}{\sum_j{e^{V_j}}}

    也就是說,是該元素的指數,與所有元素指數和的比值

    這個定義可以說非常的直觀,當然除了直觀朴素好理解以外,它還有更多的優點

    《一天搞懂深度學習》:

   

 

1.計算與標注樣本的差距

    在神經網絡的計算當中,我們經常需要計算按照神經網絡的正向傳播計算的分數S1,和按照正確標注計算的分數S2,之間的差距,計算Loss,才能應用反向傳播。Loss定義為交叉熵


    L_i=-log(\frac{e^{f_{y_i}}}{\sum_j{e^j}})

    取log里面的值就是這組數據正確分類的Softmax值,它占的比重越大,這個樣本的Loss也就越小,這種定義符合我們的要求

2.計算上非常非常的方便

    當我們對分類的Loss進行改進的時候,我們要通過梯度下降,每次優化一個step大小的梯度

    我們定義選到yi的概率是

     P_{y_i}=\frac{e^{f_{y_i}}}{\sum_j{e^j}}

    然后我們求Loss對每個權重矩陣的偏導,應用鏈式法則

     \frac{\partial{L_i}}{\partial{f_{y_i}}}=\frac{\partial(-\ln(\frac{e^{f_{y_{i}}}}{\sum_{j}e^{{j}}}))}{\partial{f_{y_i}}}=P_{f_{y_i}}-1

    最后結果的形式非常的簡單,只要將算出來的概率的向量對應的真正結果的那一維減1,就可以了

    舉個例子,通過若干層的計算,最后得到的某個訓練樣本的向量的分數是[ 1, 5, 3 ], 那么概率分別就是[0.015,0.866,0.117],如果這個樣本正確的分類是第二個的話,那么計算出來的偏導就是[0.015,0.866−1,0.117]=[0.015,−0.134,0.117]然后再根據這個進行back propagation就可以了

 


免責聲明!

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



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