(for pytorch)
MSELoss 多用於迴歸問題,也可以用於one_hotted編碼形式,要求batch_x與batch_y的tensor都是FloatTensor類型。
CrossEntropyLoss名字爲交叉熵損失函數,不用於one_hotted編碼形式, 要求batch_x爲Float,batch_y爲LongTensor類型。
score classification
0.0 0
0.4 1
0.7 2
1.0 3
1 CrossEntropyLoss
訓練分類器爲什麼要用CrossEntropy loss(交叉熵損失函數)而不能用mean square error loss(MSE,最小平方差損失函數)呢?
對於多分類的標籤,從本質上看,通過One-hot操作,就是把具體的標籤(Label)空間,變換到一個概率測度空間(設爲 p),如[1,0,0](表示它是第一個品類)。可以這樣理解這個概率,如果標籤分類的標量輸出爲1(即概率爲100%),其它值爲0(即概率爲0%)。
而對於多分類問題,在Softmax函數的“加工”下,神經網絡的實際輸出值就是一個概率向量,如[0.96, 0.04, 0],設其概率分佈爲q。現在我們想衡量p和q之間的差異(即損失),一種簡單粗暴的方式,自然是可以比較p和q的差值,如MSE(不過效果不好而已)。
一種更好的方式