深度學習之Softmax損失函數(shù) python實現(xiàn)

損失函數(shù)
損失函數(shù)(loss function,也叫代價函數(shù),cost function)用來評價模型輸出的分值向量的好壞,分值向量與真實標簽之間的差異越大,損失函數(shù)值就越大,反之則越小。
真實類別所對應的分值應當取最高分值,分值的絕對大小不能用來直接作出判斷,一般使用相對大小或所占比例來判斷,例如SVM損失函數(shù)采用相對大小來判斷,本文的softmax則是采用所占比例來判斷。
softmax損失函數(shù)
定義:

softmax損失函數(shù).png

其中,i表示第i個樣本,yi表示第i個樣本的label,現(xiàn)在我們來解釋這個公式。

假設我們的模型輸出為s=(s1,s2,s3,s4,....,sk),這些模型輸出可能為負數(shù),所以無法之間計算各自所占的比例。那我們就需要一個映射函數(shù),將這些輸出映射為可計算的比例的向量。

(1)根據(jù)我們所學的數(shù)學知識,有許多函數(shù)都可以將這些值映射為正數(shù),比如絕對值函數(shù),平方函數(shù)都可以,但是在這里考慮到之后還要計算占比,這個映射函數(shù)必須是單調遞增而且在實數(shù)范圍內恒大于0。指數(shù)函數(shù)剛好滿足上訴所有性質。

e指數(shù)函數(shù).png

(2)通過e指數(shù)函數(shù)很容易計算出模型輸出分量的所占比例,并且這些分量比例都是取開區(qū)間(0,1)的值,所有比例之和為1。

(3)真實類別所占的比例應當取最高分值并且越高越好。換句話說,當真實類別所占比例趨近于 0 時,損失函數(shù)值應該趨近于無窮大,當真實類別所占比例趨近于 1 時,損失函數(shù)值應該趨近于 0 ,并且損失函數(shù)的輸入是(0,1)中的值。負對數(shù)函數(shù)剛好滿足這些條件。

負對數(shù)函數(shù).png

上訴三點剛好可以構建出我們現(xiàn)在所用的softmax損失函數(shù)(這個函數(shù)是不是和交叉熵很像 →_→ )。
python code:

# coding=utf-8
import numpy as np
D = 784
K = 10
N = 128
#scores 是分值矩陣,每行代表一個樣本
scores = np.random.randn(N,K)
#樣本標簽
y = np.random.randint(K,size=N)
#指數(shù)化
exp_score = np.exp(scores)
#求和
exp_scores_sum = np.sum(exp_score,axis=1)
#計算比例
corect_probs = exp_score[range(N),y]/exp_scores_sum
#負對數(shù)損失函數(shù)
corect_logprobs = -np.log(corect_probs)
#平均損失
data_loss = np.sum(corect_logprobs)/N
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 機器學習術語表 本術語表中列出了一般的機器學習術語和 TensorFlow 專用術語的定義。 A A/B 測試 (...
    yalesaleng閱讀 2,146評論 0 11
  • A 準確率(accuracy) 分類模型預測準確的比例。在多類別分類中,準確率定義如下: 在二分類中,準確率定義為...
    630d0109dd74閱讀 1,585評論 0 3
  • 本文編譯自谷歌開發(fā)者機器學習術語表項目,介紹了該項目所有的術語與基本解釋。 A 準確率(accuracy) 分類模...
    630d0109dd74閱讀 2,149評論 0 1
  • 說明: 本系列文章翻譯斯坦福大學的課程:Convolutional Neural Networks for Vis...
    Warren_Liu閱讀 3,450評論 0 8
  • 以西瓜書為主線,以其他書籍作為參考進行補充,例如《統(tǒng)計學習方法》,《PRML》等 第一章 緒論 1.2 基本術語 ...
    danielAck閱讀 4,911評論 0 5

友情鏈接更多精彩內容