我們一般在回歸問題中,損失函數經常會用到MSE(mean squared error),而在分類問題中,我們經常會用到CrossEntropy。我們經常把它與softmax一起用,因為我們用交叉熵計算出來的值不一定是在[0,1]之間,我們通常用softmax歸一到0-1之間,這樣我們可以進行物體的分類。

這裡,yi是預測值,y’i是label
我們為什麼要使用交叉熵呢?
比如我們給你兩組資料
那麼我們正常計算table1,2的準确率都是33.3%,但是我們仔細觀察,table2的明顯要比table1要好,因為0.8-0.1-0.1估計錯的機率明顯要比
0.3-0.4-0.3估計錯誤的機率要大,那麼我們怎麼才能看出哪一個模型效果更好呢?
我們用crossentropy來計算loss:
table1:第一項:- ((ln0.2)*0+(ln0.2)*0+(ln0.6)*1) = -ln0.6
同理,table1:loss = -(ln0.6+ln0.4+ln0.1)/3 = 1.243
table2:loss = -(ln0.6+0.4+0.3) = 0.877
那麼我們明顯看出來table2要比table1更好。
我們用MSE來計算loss:
table1:第一項:(0.2-0)^2+ (0.2-0)^2 +(0.6-1)^2 = 0.24
同理:table1:loss = (0.24+0.54+0.06)/3 = 0.28
table2:loss = (0.24+0.54+0.74)/3 = 0.507
這樣看來MSE也很好啊
如果用 MSE 計算 loss, 通過 Softmax後 輸出的曲線是波動的,有很多局部的極值點,即非凸優化問題 (non-convex)
而用 Cross Entropy Loss 計算 loss,就還是一個凸優化問題,用梯度下降求解時,凸優化問題有很好的收斂特性。
分類問題最後必須是 one hot 形式算出各 label 的機率, 然後用max 選出最終的分類。最開始我們講到,在計算各個 label 機率的時候,用的是 softmax 函數。
softmax:
假設你的輸入S=[1,2,3],那麼經過softmax層後就會得到[0.09,0.24,0.67],這三個數字表示這個樣本屬于第1,2,3類的機率分别是0.09,0.24,0.67。
參考:https://blog.csdn.net/xg123321123/article/details/80781611
https://www.jianshu.com/p/47172eb86b39