SVM分類器中損失函式梯度求法及理解
一、損失函式的計算公式:
s(j)表示該類別錯誤分類為其他類別的估計分數。s(y(i))表示該類別正確的估值分數。這是基礎的概念。
上式還可以進一步表示為矩陣向量相乘的形式:
其中w(j)表示權重矩陣中的每一個列向量,而每一個x(i)則代表著每個被抽成列向量的二維圖片矩陣(應該是這個樣子理解的,但是這個寫法可能會看暈。)
二、求損失函式關於權重矩陣的梯度:
梯度求導相對於softmax(另一種線性分類器)就簡單了很多,沒有複雜的指數求導,我們發現對於w來說,還是一共有w(j)和w(y(i))兩個引數,分別對其求導,其中max函式在括號裡面小於0的時候,梯度肯定等於0(因為此時w的變化對最後損失函式的大小是沒有絲毫的影響的)。接下來就是看大於0的時候,如下,很簡單易懂。
圖是俺扣的別人的,出處見水印,稍後有連結。但是就我自己思考的話,這些公式是有問題的,這個應該換成偏w(j)應該是。前面括號是條件。
另外一張摳圖:
三、梯度計算的程式碼實現:
這裡需要一次從公式到具體數值計算的跳躍,對於像我這樣的初學者來說還是比較費腦子去理解的。因為loss對於w(j)的梯度就是x(i),故x(i)的值便是w(j)的梯度。
參考連結:https://blog.csdn.net/silent_crown/article/details/78109461
https://blog.csdn.net/lanchunhui/article/details/70991228