为什么要返回softmax_为什么softmax搭配cross entropy是解决分类问题的通用方案?
眾所周知,softmax+cross entropy是在線性模型、神經網絡等模型中解決分類問題的通用方案,但是為什么選擇這種方案呢?它相對于其他方案有什么優勢?筆者一直也困惑不解,最近瀏覽了一些資料,有一些小小心得,希望大家指正~
損失函數:交叉熵Cross Entropy
我們可以從三個角度來理解cross entropy的物理意義
從實例上直觀理解
我們首先來看Cross Entropy 的公式:
假設存在兩個分布
和 , 為樣本的真實分布, 為模型預測出的樣本分布,則在給定的樣本集 上,交叉熵的計算方式為通常情況下在線性模型、神經網絡等模型中,關于樣本的真實分布可以用one-hot的編碼來表示,比如男、女分別可以用[0,1]和[1,0]來表示,同樣的,C種類別的樣本可以用長度為C的向量來表示,且一個樣本的表示向量中有且僅有一個維度為1,其余為0。那會造成什么后果呢?我們來看一個例子,假設一個樣本的真實label為
,預測的分布為 ,則交叉熵為:如果預測分布為
,則交叉熵為:可以看出其實
只與label中1所對應下標的預測值有關,且該預測值越大, 越小。只要label中1所對應下標的預測值越接近1,則損失函數越小,這在直觀上就是符合我們對于損失函數的預期。
交叉熵為什么比均方誤差好
作為回歸問題的常見損失函數,均方誤差公式為
,好像也可以用來計算分類問題的損失函數,那它為什么不適合分類問題呢?我們再來看一個例子假設一個樣本的真實label為[0,0,0,1,0],預測的分布為 ,預測分布 ,此時 ,也就是說對于 而言,即使與label中1所對應下標的預測值是正確的,其他項預測值的分布也會影響損失的大小,這不符合我們對于分類問題損失函數的預期。似然估計的視角
我們知道,對于一個多分類問題,給定樣本
,它的似然函數可以表示為其中
是模型預測的概率, 是對應類的label, 為類別的個數,那么其負對數似然估計則為: , 對應于 , 對應于 ,其實交叉熵就是對應于該樣本的負對數似然估計。KL散度視角
KL散度又被稱為相對熵,可以用來衡量兩個分布之間的距離,想了解KL散度可以參考如何理解K-L散度。需要了解的是:KL散度越小,兩個分布越相近。這么看KL散度是不是很符合我們對于兩個分布損失函數的定義呢?
KL散度的公式為:
其中
為 的熵,注意這里的 是樣本的真實分布,所以 為常數,因此,KL散度與交叉熵事實上是等價的,所以交叉熵也可以用來衡量兩個分布之間的距離,符合我們對于損失函數的期待。softmax+cross entropy到底學到了什么?
我們知道在回歸問題中的最常用的損失函數是均方誤差
,那么在反向傳播時, ,即均方誤差在反向傳播時傳遞的是預測值與label值的偏差,這顯然是一個符合我們預期的、非常直覺的結果。假定分類問題的最后一個隱藏層和輸出層如下圖所示
為最后一個隱藏層的C個類別, 為輸出層,則有 ,因此softmax+cross entropy在反向傳播時傳遞的同樣是預測值與label值的偏差,即 ,如果對于證明不感興趣的,那么這篇文章就可以到此結束了~以下均為證明過程。圖中
,我們用 表示分母 ,則 。注意這里的 與所有的 都相關,因此需要用鏈式法則求導。下面求
, 的求導分為兩種情況當
時,當
時,代入上式得
注意這里 為所有label的和,應該等于1。總結
以上是生活随笔為你收集整理的为什么要返回softmax_为什么softmax搭配cross entropy是解决分类问题的通用方案?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多叉树的前序遍历_二叉树的非递归遍历的思
- 下一篇: 《从过旧宫诗》第六句是什么