Softmax函數將多個標量映射為一個概率分布,其輸出的每一個值范圍在(0,1)。公式如下圖
softmax 函數
softmax函數經常用在神經網絡的最后一層,作為輸出層,進行多分類。此外,softmax在增強學習領域內,softmax經常被用作將某個值轉化為激活概率,這類情況下,softmax的公式如下:
帶溫度參數的softmax函數
其中,T被稱為是溫度參數(temperature parameter)。當T很大時,即趨于正無窮時,所有的激活值對應的激活概率趨近于相同(激活概率差異性較小);而當T很低時,即趨于0時,不同的激活值對應的激活概率差異也就越大。這個結論很重要,Hinton在2015年的一篇paper中重點闡釋了如何根據溫度參數來soften神經網絡的輸出,從而提出了distillation的思想和方法。
temperature = 0.01
temperature = 1
temperature = 100
1.前向傳播
該過程比較簡單,對輸入的每個節點進行softmax(x)計算。但是需要注意的是,由于存在指數函數exp,對于輸入很大的實數會softmax數值越界,導致預想不到的結果。所以在做softmax之前,需要將數據做簡單的預處理,即:找出輸入節點的最大值,然后讓每個節點減去該最大值,使得輸入節點都是小于等于0的,這樣就能避免數值越界。
2.反向傳播
softmax層的導數要分兩種情況:1)該節點是輸出類別 (i ?= ?j);2)該節點不為輸出類別(i != j)
softmax 導數