今天要介紹的是支援向量機(Support Vector Machine, SVM),它有兩個特色,而這兩個特色加起來,也就是Hinge Loss加上Kernel Trick就是SVM。
首先我們透過這張圖來複習一下Binary Classification,而步驟二一開始列出的loss function是不可微分的,導致要在步驟三做optimization找到一個最好的function是有困難的,所以我們就把 用另一個approximate的loss來表示。
Hinge Loss是一個很特別的式子,寫成 ,如果 ,就代表只要 ,Loss就會等於0,而 ,就代表 ,Loss就會等於0。
Hinge Loss跟Cross Entropy最大的不同來自於他們對待已經做得好的example的態度,如果我們把 的值從1挪到2,對於Cross Entropy來說,你可以得到Loss的下降,所以Cross Entropy會想要好還要更好,它就有動機讓 的值更大來讓Loss減少。但是對Hinge Loss來說,它就只需要及格就好,也就是只需要你的值大過margin就可以了。
Linear SVM就代表我們的funciton是linear的,式子如下圖所示,而Loss function在SVM裡面的特色就是它採用了Hinge Loss,通常我們還會再加上Regularization的term,這兩個都是convex的function,所以這個Loss function就是一個convex的function。
而Logistic Regressino跟Linear SVM的差別只在於Loss function的不同,用Hinge Loss就是Linear SVM,用Cross Entropy就是Logistic Regression,
有一個用Gradient Descent來訓練SVM的方法叫做Picasso,那就是跟之前一樣做Gradient Descent,經過計算得到下圖的式子,就可以更新參數了。
我們現在把Hinge Loss換成是 ,而我們是要minimize這個Loss function,也就是要選擇一個最小的 ,這樣子下圖兩個紅色框框中的式子就會是相等的。也就是說,SVM告訴我們 和 要同號的,它們相乘以後要大於等於一個margin 1,但是這個margin是soft的,有時候沒辦法滿足這個margin,所以可以把你的margin稍微放寬,把它減掉一個 ,這個 會放寬你的margin,所以我們稱之為slack variable,要注意的是 不能是負的,它必須要大於等於0。
這個formulation是一個Quadratic Programming(QP)的problem,所以你就可以帶一個Quadratic Programming的solver把它解出來,當然前面我們也有講到可以用Gradient Descent來解它。