機器學習/深度學習入門:損失函數

分類問題損失函數——交叉熵(crossentropy)和Softmax

交叉熵

交叉熵刻畫了兩個概率分佈之間的距離,是分類問題中使用廣泛的損失函數。給定兩個概率分佈p和q,交叉熵刻畫的是兩個概率分佈之間的距離:

對於交叉熵理解比較透徹:https://blog.csdn.net/tsyccnh/article/details/79163834

Softmax

關於Softmax 函數(一般在神經網絡中, softmax可以作爲(多)分類任務的輸出層)的定義如下所示:

實際應用中,使用 Softmax 需要注意數值溢出的問題。因爲有指數運算,如果 V 數值很大,經過指數運算後的數值往往可能有溢出的可能。所以,需要對 V 進行一些數值處理:即 V 中的每個元素減去 V 中的最大值。

對於softmax理解比較透徹:https://blog.csdn.net/M_Z_G_Y/article/details/90175421

迴歸問題損失函數——均方誤差(MSE,mean squared error)

均方誤差亦可用於分類問題的損失函數,其定義爲:

其中yiyi爲一個batch中第i個數據的正確答案,而yi′yi′爲神經網絡給出的預測值。 
如下代碼展示瞭如何通過TensorFlow實現均方誤差損失函數:

mse = tf.reduce_sum(tf.square(y_ -  y))

其中y代表了神經網絡的輸出答案,y_代表了標準答案。

機器學習中的損失函數

一般來說,我們在進行機器學習任務時,使用的每一個算法都有一個目標函數,算法便是對這個目標函數進行優化,特別是在分類或者回歸任務中,便是使用損失函數(Loss Function)作爲其目標函數,又稱爲代價函數(Cost Function)。損失函數是用來評價模型的預測值 Y_hat=f(X) 與真實值Y的不一致程度,它是一個非負實值函數。通常使用 L(Y,f(x))來表示損失函數,損失函數越小,模型的性能就越好。

設總有N個樣本的樣本集爲(X,Y)=(x_{i},y_{i}),y_{i}∈[1,N]爲樣本i的真實值,\hat{y_{i}}=f(xi),i∈[1,N] 爲樣本i的預測值,f 爲分類或者回歸函數。 那麼總的損失函數爲:

常見的損失函數 L(y_{i},\hat{y_{i}}) 有以下幾種:

1. 鉸鏈損失(Hinge Loss):主要用於支持向量機(SVM) 的最大距離,常用於分類算法;
2. 互熵損失 (Cross Entropy Loss,Softmax Loss ):用於Logistic 迴歸與Softmax 分類中,常用於分類算法;
3. 平方損失(Square Loss):主要是最小二乘法(OLS)中; 
4. 指數損失(Exponential Loss) :主要用於Adaboost 集成學習算法中; 
5. 其他損失(如0-1損失,絕對值損失,感知損失等)

Zero-one Loss

Zero-one Loss即0-1損失,它是一種較爲簡單的損失函數,如果預測值與目標值不相等,那麼爲1,否則爲0,即:

該損失函數的意義就是,當預測錯誤時,損失函數值爲1,預測正確時,損失函數值爲0。該損失函數不考慮預測值和真實值的誤差程度,也就是隻要預測錯誤,預測錯誤差一點和差很多是一樣的。可以看出上述的定義太過嚴格,如果真實值爲1,預測值爲0.999,那麼預測應該正確,但是上述定義顯然是判定爲預測錯誤,那麼可以進行改進爲Perceptron Loss。

 

Perceptron Loss

Perceptron Loss即爲感知損失。即:

其中t是一個超參數閾值,如在PLA(Perceptron Learning Algorithm,感知機算法)中取t=0.5。

 

Hinge Loss

Hinge損失可以用來解決間隔最大化問題,如在SVM中解決幾何間隔最大化問題,其定義如下:

 

Log Loss

在使用似然函數最大化時,其形式是進行連乘,但是爲了便於處理,一般會套上log,這樣便可以將連乘轉化爲求和,由於log函數是單調遞增函數,因此不會改變優化結果。因此log類型的損失函數也是一種常見的損失函數,如在LR(Logistic Regression, 邏輯迴歸)中使用交叉熵(Cross Entropy)作爲其損失函數。即:

規定:

對數損失和交叉熵損失的一點點區別:https://blog.csdn.net/JustKian/article/details/83117170

Square Loss

Square Loss即平方誤差,常用於迴歸中。即:

 

Absolute Loss

Absolute Loss即絕對值誤差,常用於迴歸中。即:

 

Exponential Loss

Exponential Loss爲指數誤差,常用於boosting算法中,如AdaBoost。即:

各損失函數圖形

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