--- tags: 機器學習技法 --- Ch4 Soft-Margin Support Vector Machine === ## Content [TOC] ## [Slides & Videos](https://www.csie.ntu.edu.tw/~htlin/mooc/) ## [Motivation and Primal Problem](https://www.youtube.com/watch?v=K7ZcAYXuU_A&list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2&index=15&t=0s) ### Cons of Hard-Margin SVM ![](https://i.imgur.com/lffWnIe.png) - feature transform $\phi$ 太過 powerful - 硬要 separable => 任何資料都可以 shatter - 會去 overfit 到 noise 上 ### Give Up on Some Examples ![](https://i.imgur.com/sedLytm.png) - pocket PLA 可以容忍誤差 - 那就跟 hard-margin SVM 結合吧~ - 結合 pocket 和 SVM 後 - 優化目標 $\min_\limits{b,w}\frac 12w^Tw+C\cdot\sum_\limits{n=1}^N 1[\![y_n\neq\text{sign}(w^Tz_n+b)]\!]$ - 權衡兩者的是 hyperparameter $C$ - 條件 - 做對的點還是要符合條件 $y_n(w^Tz_n+b)\geq 1$ - 做錯的點就不管惹 $y_n(w^Tz_n+b)\geq -\infty$ ### Soft-Margin SVM ![](https://i.imgur.com/feDY8m8.png) - 現在有了新問題 - 優化 $\min_\limits{b,w}\frac 12w^Tw+C\cdot\sum_\limits{n=1}^N 1[\![y_n\neq\text{sign}(w^Tz_n+b)]\!]$ - 合併兩條件 $y_n(w^Tz_n+b)\geq 1-\infty\cdot 1[\![y_n\neq\text{sign}(w^Tz_n+b)]\!]$ - 根據 $y_n$ 是否等於 $\text{sign}(w^Tz_n+b)$ 分別討論就知道這跟本來條件一樣 - 這樣有兩個缺點 - 不能用 QP 解了 (因為 constraint 不是 linear 的) - 沒辦法分辨小的 error 或大的 error - 於是把問題改成 - 優化 $\min_\limits{b,w,\xi}\frac 12w^Tw+C\cdot\sum_\limits{n=1}^N\xi_n$ - $\xi_n$ 表示我們的 point 離那個目標的 boundary 到底有多遠(不是距離,只是表達遠近) - 把問題變成 minimize 我們犯了多大的錯誤,而不是犯了幾個錯誤 - 這樣就是 quadratic objective 了 - 條件 $y_n(w^Tz_n+b)\geq 1-\xi_n\,\text{ and }\,\xi_n\geq 0,\forall n\in\{1,...,N\}$ - 如果第 $n$ 筆資料合乎本來的 SVM 條件,那這項就是 $y_n(w^Tz_n+b)\geq 1$ 因為 $\xi_n=0$ - 所以當 $\xi_n>0$ 就是不合乎本來條件 - 這樣就是 linear constraint 了 - **思考:那為何 $\xi_n$ 會是「違反的量」?** - 假設第 $n$ 個 data 有違反,且違反的量是 $a_n$,也就是說 $y_n(w^Tz_n+b)=1-a_n,a_n>0$ - 看看條件可以得到 $1-a_n\geq 1-\xi_n$,移項得到 $\xi_n\geq a_n$ - 然而 objective function 要 minimize $\xi_n$,所以 optimal point 的解 $\xi_n=a_n$。 - > Q: 這樣想應該沒錯吧 @@ ![](https://i.imgur.com/xQC3EMO.png) - 那麼 $C$ 現在就變成了 large-margin 和 margin violation $\xi_n$ 的 trade-off - 現在 QP 多了 $N$ 個變數 $\xi_n$ 要解 - $\tilde d+1+N$ 個變數 - $2N$ 個 constraints - 接下來我們要再移除對 $\tilde d$ 的依賴,跟之前一樣 ### Fun Time: Soft-Margin? ![](https://i.imgur.com/EX6wGt8.png) - $\xi_1$ 是 $11$ 很直覺 - 思考一下其他答案會有什麼結果 (注意題目說 At the optimal solution) - $1$ 明顯不符合條件 - $21$ 看起來符合呀,因為 $-10\geq 1-21$,但是因為上面要 minimize $\xi_n$ 所以 optimal point 還是會縮小到 $\xi_1=11$ ## [Dual Problem](https://www.youtube.com/watch?v=fTHTqW5Uq4U&list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2&index=15) ### Lagrange Dual ![](https://i.imgur.com/71Oa7MH.png) - 現在的問題 (primal problem) - 優化 $\min_\limits{b,w,\xi}\frac 12w^Tw+C\cdot\sum_\limits{n=1}^N\xi_n$ - 條件 $y_n(w^Tz_n+b)\geq 1-\xi_n\,\text{ and }\,\xi_n\geq 0,\forall n\in\{1,...,N\}$ - 轉化成對偶問題 (dual problem) - 把**所有 constraint 都移項變成小於等於 0,再乘上 Lagrange Multiplier 就可以丟到 objective function 裡面了** - > 要變成小於等於 0 是因為我們是要 minimize objective function 吧,如果是 maximize 的話應該要整理成 大於等於 0 的形式 - $\mathcal L(b,w,\xi,\alpha,\beta)=\frac 12w^Tw+C\cdot\sum_\limits{n=1}^N\xi_n\\+\sum_\limits{n=1}^N\alpha_n\cdot(1-\xi_n-y_n(w^Tz_n+b))+\sum_\limits{n=1}^N\beta_n\cdot(-\xi_n)$ - $\xi,\alpha,\beta$ 都是 $N$ 維向量 - 轉化成 Lagrange Dual Problem 之後就可以跟之前一樣用 max-min 的形式寫下來,然後用 KKT condition 簡化這個問題。 - $\max_\limits{\alpha_n\geq 0,\beta_n\geq 0}[\min_\limits{b,w,\xi}\mathcal L(b,w,\xi,\alpha,\beta)]$ - 這邊可以複習 - [Lagrange Multiplier](https://hackmd.io/@johnnyasd12/Hyse98wCS#The-Lagrange-Multiplier) - [Dual SVM](https://hackmd.io/@johnnyasd12/HkyoeuCRS#Key-Tool-Lagrange-Multipliers) ### Simplify $\xi_n$ and $\beta_n$ ![](https://i.imgur.com/lXrMj13.png) - 複習 [KKT condition](https://hackmd.io/@johnnyasd12/HkyoeuCRS#KKT-Optimality-Conditions) - 利用 dual-inner optimal 偏微分等於 0,可以知道 $\frac{\partial\mathcal L}{\partial\xi_n}=0=C-\alpha_n-\beta_n$,所以 optimal point 的 $\beta_n=C-\alpha_n$ - 又 $\alpha_n\geq 0, \beta_n=C-\alpha_n\geq 0$,如此我們就可以寫成 $0\leq\alpha_n\leq C,\beta_n=C-\alpha_n$ - 把 $\xi_n$ 的項整理在一起,發現係數是 0,所以可以忽略 - 回想:跟之前推導 dual hard-margin SVM 的 $b$ 一樣 ### Other Simplifications ![](https://i.imgur.com/NbYeV6b.png) - 簡化後,現在的問題 $\max_\limits{0\leq\alpha_n\leq C,\beta_n=C-\alpha_n}[\min_\limits{b,w}\frac 12w^Tw+\sum_n\alpha_n(1-y_n(w^Tz_n+b))]$ - 發現 inner problem 跟之前的 [dual SVM](https://hackmd.io/@johnnyasd12/HkyoeuCRS#Starting-Point-Constrained-to-%E2%80%98Unconstrained%E2%80%99) 一樣啊 - 根本只有 outer problem 的 constraints 不一樣而已 - 所以 inner problem 解法就跟 [dual SVM](https://hackmd.io/@johnnyasd12/HkyoeuCRS#Starting-Point-Constrained-to-%E2%80%98Unconstrained%E2%80%99) 一樣啦 ### Standard Soft-Margin SVM Dual ![](https://i.imgur.com/sgXpgGw.png) - 現在的對偶問題 dual problem - 最佳化 $\min_\limits\alpha\frac 12\sum_n\sum_m\alpha_n\alpha_my_ny_mz_n^Tz_m-\sum_n\alpha_n$ - 受限於 $\sum_ny_n\alpha_n=0\\0\leq\alpha_n\leq C,\forall n\in\{1,...,N\}$ - implicitly $w=\sum_n\alpha_ny_nz_n;\\\beta_n=C-\alpha_n,\forall n\in\{1,...,N\}$ - > Q: implicitly 意思? - 幾乎跟本來 [hard-margin SVM 的 dual 形式](https://hackmd.io/@johnnyasd12/HkyoeuCRS#Dual-Formulation-of-Support-Vector-Machine) 一模一樣,(大概)只有條件不同而已 - 對照一下 ![](https://i.imgur.com/TcYLEn6.png) - 就只是多了條件 $\alpha_n\leq C$ 讓它不能無窮大,然後多了一些變數 $\beta_n$,可以直接用 $C-\alpha_n$ 算出來 - **所以 $C$ 就是 $\alpha_n$ 的 upper bound** - 就是另外一個 convex QP - $N$ 個 variables - $2N+1$ 個 constraints ### Fun Time: Soft-Margin SVM Dual ![](https://i.imgur.com/x7PM1WS.png) - 所以當 $C$ 增加 $2$,就代表 $\alpha_n$ 的 upper bound 也增加 $2$ ## [Messages behind Soft-Margin SVM](https://www.youtube.com/watch?v=5z7ujI3YBBE&list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2&index=16) ### Kernel Soft-Margin SVM ![](https://i.imgur.com/GYokb00.png) - soft-margin 和 [hard-margin SVM]() 的差異 - **多了 upper-bound 的條件 (就是 $\alpha_n\leq C$)** - **因為這是一個新的 QP 問題,所以 KKT condition 會不一樣,也因此 $b$ 的算法會不一樣。** - 其他部份幾乎都跟 hard-margin 一樣 - 可以複習一下本來的 hard-margin SVM QP - ![](https://i.imgur.com/cxddI9W.png) - 剩下問題就是 $b$ 怎麼算? ### Solving for $b$ ![](https://i.imgur.com/u9IZcis.png) - 回想之前 hard-margin SVM 的 **complementary slackness:Lagrange multiplier 和 primal constraint([回顧](https://hackmd.io/WPBgCzUwTM-d-LR6dBp4zw?both#Lagrange-Dual)) 乘積會是 0**,所以 1. $\alpha_n(1-\xi_n-y_n(w^Tz_n+b))=0$ 2. $\beta_n(-\xi_n)=0$ 所以 $(C-\alpha_n)\xi_n=0$ - 看第 1. 點,則可以利用 support vector 計算 $b=y_s-y_s\xi_s-w^Tz_s$ - 但是這樣要先求 $\xi_s$,而 $\xi_s$ 又是違反的量所以要先知道 $b$。雞生蛋蛋生雞? - 真希望 $y_s\xi_s$ 這項可以不見ㄏㄏ - 可以啊,我讓 $\xi_s=0$ 不就好了,那根據第 2. 點,這時候 $C-\alpha_n\neq 0$ - 所以只要當 $\alpha_s<C$,就可以直接計算 $b=y_s-w^Tz_s=y_s-\sum_\limits{\text{SV indices}\,n}\alpha_ny_nK(x_n,x_s)$ - 可以回想[這裡](https://hackmd.io/@johnnyasd12/HJ_CkNwJI#Kernel-Transform--Inner-Product) - 但是如果找不到 $\alpha_s\neq C$ 的話就只能用一堆不等式來解 $b$ 的 range 了。這邊比較複雜就不說ㄌ。 - **像這樣符合 $0<\alpha_n<C$ 的 support vector 又稱為 free support vector (free SV)** ### Soft-Margin Gaussian SVM in Action ![](https://i.imgur.com/8KCWQKh.png) - 灰灰的部分是 margin - $C$ 越大就表示越不能接受錯誤,**而 margin 小一點沒關係** - 對 noise 的容忍度就更不高 -> 更容易 overfit ### Physical Meaning of $\alpha_n$ ![](https://i.imgur.com/QDcLAbF.png) - 剛剛的 complementary slackness: 1. $\alpha_n(1-\xi_n-y_n(w^Tz_n+b))=0$ 2. $(C-\alpha_n)\xi_n=0$ - **free support vector ($0<\alpha_n<C$)** - 因為 $0<\alpha_n<C$ 所以根據第 2. 點,$\xi_n=0$ - $\alpha_n\neq 0$ 又 $\xi_n=0$ 所以根據第 1. 點,$1-y_n(w^Tz_n+b)=0$ - 這條件不就剛好在那個胖胖的邊界上了嗎 - **所以 free support vector 就是在 fat boundary 上的那些點(上圖方框)** - **非 support vector ($\alpha_n=0$)** - $\xi_n=0$ 沒有任何違反 - 絕大多數都會在 margin 外面,極少數會剛好在 fat boundary 上 - **bounded support vector ($\alpha_n=C$)** - $\alpha_n\neq 0$ 所以根據第 1. 點,$1-\xi_n-y_n(w^Tz_n+b)=0$ - **$\xi_n=1-y_n(w^Tz_n+b)$ 也就是說 $\xi_n$ 正好紀錄了「違反的量」** - **所以 bounded support vector 就是有違反 margin 的 vector (上圖三角形)** - 違反也分兩種:分對(少量違反) & 分錯(大量違反) - 也是有極少數的情形 $\alpha_n=C$ 的時候它剛剛好在 fat boundary 上 - 這時候 $\xi_n=0$ 吧 - 這樣一來,根據 $\alpha_n$ 就可以分析資料,例如 - 檢查看看哪些 data 可能是有 noise 的 ($\alpha_n=C$ 吧) - 哪些 data 可能有幫助 ($\alpha_n<C$ 吧) - 哪些 data 是可有可無的冗員 ($\alpha_n=0$ 吧) ### Fun Time: Messages behind Soft-Margin SVM ![](https://i.imgur.com/3XNUxWn.png) - 最好狀況就 bounded SV 全對 - 最差狀況就 bounded SV 全錯 ## [Model Selection](https://www.youtube.com/watch?v=ahogAa5Rnmc&list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2&index=17) ### Practical Need: Model Selection ![](https://i.imgur.com/38phCpu.png) - 橫軸是 $C$,縱軸是 $\gamma$ - 選擇 model 最簡單的工具就 validation ### Selection by Cross Validation ![](https://i.imgur.com/nY0NwFY.png) - cross validation 滿常用來挑選 soft-margin SVM ### Leave-One-Out CV Error for SVM ![](https://i.imgur.com/NhHWHaq.png) - leave-one-out cross validation error 在 SVM 上有個很有趣的點 - 我們可以證明 $E_{loocv}\leq\dfrac{\text{#SV}}{N}$ - 假設我們用所有 data 訓練出來的 SVM $g$,它的每個 data 分別對應到 optimal value $\alpha_1,...,\alpha_N$ - 而 leave-one-out 第 $n$ 次取出的 validation data $(x_n,y_n)$ 對應到 $\alpha_n$ - > Q: 雖然 slide 上是寫 $(x_N,y_N)$ 不過我覺得小寫 $n$ 比較合適? - 當 $\alpha_n=0$,則去掉這筆 data 訓練所得到的 SVM $g^-$ 就跟 $g$ 相同,也就是說同一組 $\alpha$ 一樣會是最佳解 -> $e_{non-SV}=0$ - 同理,$e_{SV}\leq 1$ - **所以啦,leave-one-out 平均出來的 error rate 會小於等於 SV 的比例** ### Selection by # SV ![](https://i.imgur.com/54yfa42.png) - 使用 #SV 來選擇 model 有些地方要注意 - 它不是平滑函數所以難以最佳化 - **它只是 $E_{loocv}$ 的 upper bound**,不代表 error 真的做到最好 - **所以 #SV 通常用來 safety check 如果 cross validation 太花時間** ### Fun Time: Loocv and # SV ![](https://i.imgur.com/HUeyKvB.png) - **注意這邊會影響的是 # SV 而不是 # bounded SV** ### Summary ![](https://i.imgur.com/SbvFs01.png) - **我們常常說的 SVM 幾乎就是指 soft-margin SVM** - 下節會說,如何把類似 SVM 的機制延伸到其他 model