什么是交叉熵誤差,多分類中的交叉熵損失函數(shù)

大家好,今天要講的內容是多分類中的交叉熵損失函數(shù)。

交叉熵誤差,cross entropy error,用來評估模型輸出的概率分布和真實概率分布的差異情況,一般用于解決分類問題。它有兩種定義形式,分別對應二分類與多分類問題。
在二分類問題中,E=- [y * log(p) + (1 - y) * log(1 - p)],其中y是樣本的真實標記,p是模型的預測概率。
在多分類問題中,E=- Σ [y_i * log(p_i)],y_i和p_i對應第i個類別的真實標記與預測概率,n是類別個數(shù)。
多分類中的交叉熵誤差
在多分類問題中,如果每個類別之間的定義是互斥的,那么任何樣本都只能被標記為一種類別。

我們使用向量y來表示樣本的標記值,如果有n種類別,那么y就是一個n乘1的列向量,向量中只有1個元素是1,其余元素是0。

定義m個樣本、n種類別的交叉熵誤差E。它等于m個樣本的平均交叉熵誤差。在公式中,y-i-k和p-i-k代表了,第i個樣本,第k個類別的真實標記和第k個類別的模型預測概率。

如果第i個樣本被標記為第k個類別,那么在向量y-i中,第k個元素y-i-k就等于1,其余均是0。
多分類問題的交叉熵損失,只與真實類別對應的模型預測概率有關。這里我們單獨來看第i個樣本的誤差Ei。

如果該樣本的真實類別是第k個類別,那么在西格瑪求和的過程中,只有第k項是存在的,其余項均是0。因此Ei=-(y-i-k)*log(p-i-k)。
上述計算說明了,在交叉熵損失函數(shù)中,只有真實類別對應的那一項會被計算在內,其他類別的項,在求和過程中均為0。
所以即便模型對其他類別的預測概率不準確,但只要對真實類別的預測概率較高,損失函數(shù)的值仍然較低。
均方誤差與交叉熵誤差的舉例對比
下面是一個圖片分類的例子,圖片的類別有貓、狗、牛三種情況。

我們訓練出了兩個模型a和b,使用a和b,對3個測試樣本進行預測,得到了相應的預測結果。
我們要基于這個結果,來說明均方誤差與交叉熵誤差,兩種損失函數(shù),在多分類問題上的表現(xiàn)區(qū)別。

觀察模型的預測結果可以發(fā)現(xiàn),對于每個樣本,a和b兩個模型,都會輸出三種類別的3個概率。每個概率會對應標記值0或1。
例如,模型a預測第1個樣本,得到3個概率是0.3、0.3和0.4,它們對應的標記是0、0、1。模型預測正確。
從數(shù)據(jù)來看,a和b兩個模型,都正確的預測了樣本1和樣本2,錯誤預測了樣本3。
但是模型a在預測樣本1和2時,三種類別的概率差異并不明顯,只是很微弱的判斷正確,并且樣本3的錯誤還非常明顯。
對于模型b,在判斷前兩個樣本時,正確類別對應的預測概率很大,都是0.7,同時第3個樣本的錯誤也不明顯。
下面就使用均方誤差和交叉熵誤差,分別對這兩個模型進行衡量。

首先使用均方誤差,計算a和b兩個模型的差異。對于每個樣本,都需要計算所有類別的預測概率和標記值差的平方和,再求平均。

例如,模型a對于三個樣本的誤差是0.54、0.54和1.34,平均誤差是0.81,模型b對三個樣本的誤差是0.14、0.14和0.74,平均誤差0.34,可以得出模型b更好。

接下來使用交叉熵誤差,計算兩個模型的區(qū)別。實際上,對于每個樣本,我們只關注該樣本的真實標記類別的預測概率。

例如,模型a預測第1個樣本時,類別1和2的交叉熵都是0,類別3是負log0.4,因此得到結果0.91。
按照這種方式,計算a和b兩個模型對于3個樣本的誤差,然后求出平均值。
模型a的平均交叉熵誤差是1.37,b是0.63,同樣會得到模型b比a好的結論。

比較兩種方法的計算結果,可以發(fā)現(xiàn),a和b兩個模型的均方誤差的差異是0.81-0.34=0.47。交叉熵誤差的差異是1.37-0.63=0.74。
因此,基于交叉熵誤差比較兩個模型,可以得到更大的差異,這也就說明了,在該多分類問題中,如果使用交叉熵誤差,可以更好的區(qū)分出模型的差異。
那么到這里,多分類中的交叉熵損失函數(shù)就講完了,感謝大家的觀看,我們下節(jié)課再會。