CrossEntropyLoss() 與 MSELoss() 的區別

 

(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(不過效果不好而已)。

一種更好的方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章