softmax 在機器學習和深度學習中有著非常廣泛的應用。尤其在處理多分類(c > 2)問題,分類器最後的輸出單元需要softmax 函式進行數值處理。關於softmax 函式的定義如下所示:
其中,vi 是分類器類別的輸出。i 表示類別索引,總的類別個數為 c。si 表示的是當前元素的指數與所有元素指數和的比值。softmax 將多分類的輸出數值轉化為相對概率,更容易理解和比較。我們來看下面這個例子。 乙個多分類問題,c = 4。線性分類器模型最後輸出層包含了四個輸出值,分別是:
經過softmax處理後,數值轉化為相對概率:
很明顯,softmax 的輸出表徵了不同類別之間的相對概率。我們可以清晰地看出,s1 = 0.8390,對應的概率最大,則更清晰地可以判斷**為第1類的可能性更大。softmax 將連續數值轉化成相對概率,更有利於我們理解。 實際應用中,使用 softmax 需要注意數值溢位的問題。因為有指數運算,如果 v 數值很大,經過指數運算後的數值往往可能有溢位的可能。所以,需要對 v 進行一些數值處理:即 v 中的每個元素減去 v 中的最大值.
我們知道,線性分類器的輸出是輸入 x 與權重係數的矩陣相乘:s = wx。對於多分類問題,使用 softmax 對線性輸出進行處理。這一小節我們來**下 softmax 的損失函式。
其中,syi是正確類別對應的線性得分函式,si 是正確類別對應的 softmax輸出。 由於 log 運算子不會影響函式的單調性,我們對 si 進行 log 操作:
我們希望 si 越大越好,即正確類別對應的相對概率越大越好,那麼就可以對 si 前面加個負號,來表示損失函式:
對上式進一步處理,把指數約去:
假設 i = 1 為真實樣本,計算其損失函式為:
TensorFlow學習之常用函式
tensorflow的設計理念稱之為計算流圖,在編寫程式時,首先構築整個系統的graph,並不會直接生效。然後,在實際的執行時,啟動乙個session,程式才會真正的執行。很多python程式的底層為c語言或者其他語言,執行一行指令碼,就要切換一次,這樣做的好處就是 避免反覆地切換底層程式實際執行的...
小白學習之Tensorflow安裝
tensorflow安裝過程中會出現各種問題,經過無數次跳坑之後,終於解決問題,所以就記錄一下 1 環境 win10 2 安裝步驟 win cmd進入後台,輸入conda version 會出現conda版本號 輸入python version,可以檢視當前python版本號 4 安裝tensorf...
TensorFlow學習之CS20SI 之一
首先,什麼是tensor?tensor就是乙個n維的矩陣,要是0維就是個數,1維就是個vector,2維就是個二維矩陣。然後,什麼是data flow graph?就是上面這樣,表示資料流動的運算圖,在圖中節點 nodes 就是 運算 operators 變數 variables 常量 consta...