1. 程式人生 > >SVM分類器中損失函式梯度求法及理解

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