svm損失函數


作者:杜客
鏈接:https://zhuanlan.zhihu.com/p/20945670
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

SVM的損失函數定義如下:


\displaystyle L_i=\sum_{j\not=y_i}max(0,s_j-s_{y_i}+\Delta)

舉例:用一個例子演示公式是如何計算的。假設有3個分類,並且得到了分值s=[13,-7,11]。其中第一個類別是正確類別,即y_i=0。同時假設\Delta是10(后面會詳細介紹該超參數)。上面的公式是將所有不正確分類(j\not=y_i)加起來,所以我們得到兩個部分:

\displaystyle Li=max(0,-7-13+10)+max(0,11-13+10)

可以看到第一個部分結果是0,這是因為[-7-13+10]得到的是負數,經過max(0,-)函數處理后得到0。這一對類別分數和標簽的損失值是0,這是因為正確分類的得分13與錯誤分類的得分-7的差為20,高於邊界值10。而SVM只關心差距至少要大於10,更大的差值還是算作損失值為0。第二個部分計算[11-13+10]得到8。雖然正確分類的得分比不正確分類的得分要高(13>11),但是比10的邊界值還是小了,分差只有2,這就是為什么損失值等於8。簡而言之,SVM的損失函數想要正確分類類別y_i的分數比不正確類別分數高,而且至少要高\Delta。如果不滿足這點,就開始計算損失值。

那么在這次的模型中,我們面對的是線性評分函數(f(x_i,W)=Wx_i),所以我們可以將損失函數的公式稍微改寫一下:


\displaystyle L_i=\sum_{j\not=y_i}max(0,w^T_jx_i-w^T_{y_i}x_i+\Delta)

其中w_j是權重W的第j行,被變形為列向量。然而,一旦開始考慮更復雜的評分函數f公式,這樣做就不是必須的了。


在結束這一小節前,還必須提一下的屬於是關於0的閥值:max(0,-)函數,它常被稱為折葉損失(hinge loss)。有時候會聽到人們使用平方折葉損失SVM(即L2-SVM),它使用的是max(0,-)^2,將更強烈(平方地而不是線性地)地懲罰過界的邊界值。不使用平方是更標准的版本,但是在某些數據集中,平方折葉損失會工作得更好。可以通過交叉驗證來決定到底使用哪個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM