本小節介紹一些常見的loss函數
1. l1_loss&l2_loss
衡量預測值與真實值的偏差程度的最常見的loss: 誤差的L1范數和L2范數
因為L1范數在誤差接近0的時候不平滑,所以比較少用到這個范數
L2范數的缺點是當存在離群點(outliers)的時候,這些點會占loss的主要組成部分。比如說真實值為1,預測10次,有一次預測值為1000,其余次的預測值為1左右,顯然loss值主要由1000主宰。
2.Huber Loss:
Huber Loss經常用于回歸問題,相比與l2 loss,其對離群點(outliers)沒有那么敏感(因為如果殘差太大的話,由于是分段函數,loss為殘差的線性函數)
函數定義:
其中其中tao是一個設定的參數,y表示真實值,f(x)表示預測值。
這樣做的好處是當殘差(residual)很小的時候,loss函數為l2范數,殘差大的時候,為l1范數的線性函數
Pseudo-Huber loss function:Huber loss 的一種平滑近似,保證各階可導
其中tao為設置的參數,其越大,則兩邊的線性部分越陡峭
3.Hinge Loss
合頁損失常用于二分類問題,比如ground true :t=1 or -1,預測值 y=wx+b
在svm分類器中,定義的hinge loss 為
也就是說當y越接近t的時候,loss越小
擴展:
可以將上面的二分類loss函數擴展成C分類的loss函數
注意S=X*W+b???? shape( X: (N,D),? W:(D,C),? b:(C,) )
s_j= x_i*w_j+b 也就是為j類的分數,s_yi=x_i*w_yi+b 也就是yi類的打分
注意ground true的標簽為 yi
其中 x_i(shape :1*D)可以表示第i張圖片,w_j(shape:D*1)表示第j類的權重參數
理想情況下我們希望的是錯誤分類的打分最小,正確分類的打分最大
這種情況下 s_j - s_yi 小于0,則這時候 loss趨于0
同時可以想象,因為打分函數是線性的 y=x*w+b,那么假如w_0能夠正確分類這些圖片,那么w_1=2 *w_0也能夠正確的分類圖片(仔細理解上面的公式,w_1讓s_j-s_yi負的更多,但最后結果因為是負數所以都是0,所以 w_1和w_0都能夠正確的分類。為了避免這種不確定性,一般會加入懲罰項來約束參數w,使得參數w盡可能的小
Cross-entropy loss
上面主要是說 cross-entropy loss 主要應用在二分類問題上,預測值為概率值,根據交叉熵定義loss.注意上面的值的取值范圍:y的預測值應該為概率,取值范圍為【0,1】
sigmoid-Cross-entropy loss
上面的交叉熵loss要求預測值是概率,一般來說我們算出來的都是 scores=x*w+b,將這個值輸入到sigmoid函數就能夠壓縮值域到(0,1)
可以看到由于sigmoid函數平滑了預測值(比如直接輸入0.1和0.01和將0.1,0.01sigmoid后再輸入,顯然后者的變化值會小很多),使得sigmoid-ce在預測值離label比較遠的時候loss的增長沒有那么的陡峭
softmax cross-entropy loss
首先softmax函數能夠把一組分數向量轉換成相對應的概率向量。下面是softmax函數的定義
如上,softmax也是做到了'squashes' k維任意實數值到k維的【0,1】值域的向量,同時保證了累加和為1.
根據交叉熵的定義,需要概率作為輸入。sigmoid-cross-entropy-loss用sigmoid來將分數向量轉換成概率向量,softmax-cross-entropy-loss則是用softmax函數來將分數向量轉換成概率向量。
根據交叉熵loss的定義
其中p(x)表示分類x是正確分類的概率,p的取值只能數0或者1。這個是先驗值
q(x)則為x種類為正確分類的預測概率,取值范圍為(0,1)
那么具體到一個 共有C種類的分類問題,那么p(x_j),(0<=j<=C)肯定只有1個為1,C-1個為0(因為只能有一個正確的分類,正確分類為正確分類的概率為1,其余分類為正確分類的概率為0)
那么就可以很自然的推導出softmax-cross-entropy-loss的定義了
下面是softmax-cross-entropy-loss 的定義
其中f_j表示所有可能種類的分數,f_yi表示ground true類的分數