解析損失函數之categorical_crossentropy loss與 Hinge loss

冒泡~那天伙伴說,看我的簡書是動力,就突然發現很久沒有更了。最近實驗是遇到了瓶頸,死活卡在了最后的Merge上...值得做的事情都不容易鴨。今天就再記錄一下。

損失函數

在之前寫期望風險的時候其實已經提過這個概念了,再補充一下

損失函數
定義:損失函數就一個具體的樣本而言,模型預測的值與真實值之間的差距。
對于一個樣本(xi,yi)其中yi為真實值,而f(xi)為我們的預測值。使用損失函數L(f(xi),yi)來表示真實值和預測值之間的差距。兩者差距越小越好,最理想的情況是預測值剛好等于真實值。

進入正題~

categorical_crossentropy loss(交叉熵損失函數)

講交叉熵損失函數,我想先從均方差損失函數講起

均方差損失函數
簡單來說,均方誤差(MSE)的含義是求一個batch中n個樣本的n個輸出與期望輸出的差的平方的平均值。比如對于一個神經元(單輸入單輸出,sigmoid函數),定義其代價函數為
(其中y是我們期望的輸出,a為神經元的實際輸出【 a=σ(z), where z=wx+b 】。):

在訓練神經網絡過程中,我們通過梯度下降算法來更新w和b,因此需要計算損失函數對w和b的導數:
然后更新w、b:
w <—— w - η* ?C/?w = w - η * a σ′(z)
b <—— b - η
?C/?b = b - η * a * σ′(z)
因為sigmoid函數的性質,導致σ′(z)在z取大部分值時會很小,這樣會使得w和b更新非常慢(因為η * a * σ′(z)這一項接近于0)。

為了克服這個不足,引入了categorical_crossentropy(交叉熵損失函數)

categorical_crossentropy(交叉熵損失函數)

交叉熵是用來評估當前訓練得到的概率分布與真實分布的差異情況。
它刻畫的是實際輸出(概率)與期望輸出(概率)的距離,也就是交叉熵的值越小,兩個概率分布就越接近。

公式如下:
(其中y為期望的輸出,a為神經元實際輸出)
【a=σ(z), where z=∑Wj * Xj+b】


同樣進行求導:
從上圖可以看到,導數中沒有σ′(z)這一項,權重的更新是受σ(z)?y這一項影響,即受誤差的影響,所以當誤差大的時候,權重更新就快,當誤差小的時候,權重的更新就慢

性質
a.非負性。(所以我們的目標就是最小化代價函數)
b.當真實輸出a與期望輸出y接近的時候,代價函數接近于0.(比如y=0,a~0;y=1,a~1時,代價函數都接近0)。

這邊舉一個簡單的二分類例子:
預測為貓的p=Pr(y=1)概率是0.8,真實標簽y=1;預測不是貓的1-p=Pr(y=0)概率是0.2,真實標簽為0。

那么 loss=?(1?log(0.8)+0?log(0.2))=?log(0.8)

詳細解釋--KL散度與交叉熵區別與聯系

其余可參考深度學習(3)損失函數-交叉熵(CrossEntropy)
如何通俗的解釋交叉熵與相對熵?

Hinge loss

在網上也有人把hinge loss稱為鉸鏈損失函數,它可用于“最大間隔(max-margin)”分類,其最著名的應用是作為SVM的損失函數。


二分類情況下

多分類
擴展到多分類問題上就需要多加一個邊界值,然后疊加起來。公式如下:

舉例:
栗子① △為1
假設有3個類cat、car、frog:
image.png
第一列表示樣本真實類別為cat,分類器判斷樣本為cat的分數為3.2,判斷為car的分數為5.1,判斷為frog的分數為 -1.7。
hinge loss:

栗子②△取10

可參考(http://www.cnblogs.com/xiaojianliu/articles/10014598.html#_label1
https://blog.csdn.net/fendegao/article/details/79968994

Ending~明天是冬至啦!提前的冬至快樂!
還是要干巴爹鴨!
emmm....考研的朋友加油!你會考上的鴨!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。