Skip to content

軟邊界 SVM:允許犯錯之後怎麼選 C|台大林軒田 機器學習技法 第 4 堂

2026年10月13日1 分鐘
TL;DRhard-margin SVM 堅持把資料完全分開,所以會去擬合雜訊。這堂課替每個點加一個違反量 ξₙ,用參數 C 權衡邊界寬度與違反總量,得到 soft-margin SVM;它的對偶問題和 hard-margin 只差 αₙ 多了上界 C。αₙ 的值把資料分成非支援向量、free SV、bounded SV 三類,算 b 要用 free SV;C 與 γ 用交叉驗證選,支援向量的比例 #SV/N 是 leave-one-out 誤差的上界。

🌏 English version

影片狀態:已附影片。 這篇依官方 MOOC 講義 204_handout.pdf 與這堂四支官方影片的機器轉錄逐字稿寫成,公式以講義為準;逐字稿未經人工校對。每一節開頭附該節的官方影片與大致的時間區段。文中的頁碼指投影片右下角的編號(0/22 到 22/22),寫「課堂上」的地方是轉述影片裡的說法。

這是台大林軒田 機器學習基石與技法 導讀裡的技法第 4 堂。講義第 1 頁的 Roadmap 把技法分成三種處理特徵的技巧,這堂仍在第一種 Embedding Numerous Features: Kernel Models 裡面。同一頁對上一堂技法第 3 堂:Kernel SVM的總結是:kernel 是「轉換加內積」的捷徑,SVM 因此不再依賴轉換後的維度 d~\tilde{d},可以從簡單的線性模型一路用到無限維的 Gaussian kernel。上一堂講 Gaussian kernel 時留了一句警告:SVM 還是會過擬合。這堂處理的就是這件事。

先備是技法第 2 堂:對偶 SVM的整套推導(拉格朗日函數、對 bb 與 w\mathbf{w} 偏微分、KKT 條件、互補鬆弛)、上一堂的 kernel 函數 K(x,x′)K(\mathbf{x}, \mathbf{x}'),以及基石第 15 堂:驗證的交叉驗證。讀完之後,你應該能自己寫出 soft-margin SVM 的原始問題並推到對偶問題,說明 αn\alpha_n 的上界 CC 從哪裡來,由解出來的 α\boldsymbol{\alpha} 判斷每個點落在哪裡、用哪些點算 bb,並解釋支援向量的個數為什麼能當模型選擇時的安全檢查。

這堂的四節依序回答四個問題:

  1. 資料分不開、或不該硬分開時,問題要怎麼改寫。
  2. 改寫之後對偶問題長什麼樣子。
  3. 解出 α\boldsymbol{\alpha} 之後怎麼算 bb,αn\alpha_n 的值代表什麼。
  4. 多出來的參數 CC(以及 kernel 的參數)怎麼選。

為什麼要允許犯錯:堅持分開的代價,以及違反量 ξ 與參數 C

YouTube:Soft-Margin Support Vector Machine :: Motivation and Primal @ Machine Learning Techniques (機器學習技法)

(影片 00:00–01:12 複習上一堂,01:12–03:00 講 hard-margin 的毛病,03:00–06:39 把 pocket 與 hard-margin 合起來,06:39–08:54 講合體的兩個問題,08:54–13:50 是違反量與參數 CC,之後是 Fun Time。)

hard-margin SVM 的毛病

講義第 2 頁把上一堂的警告拆成兩個原因。SVM 會過擬合,一部分是因為轉換 Φ\boldsymbol{\Phi} 太強,另一部分是因為 hard-margin 堅持資料要完全分開(separable)。課堂上對第一個原因的說法是:有的轉換能力太強,就算有 large margin 也救不回來。

這一頁放了兩張圖,用的是同一組資料。左圖標 Φ1\boldsymbol{\Phi}_1,一條直線把圈圈和叉叉大致分開,有幾個點落在錯的一邊。右圖標 Φ4\boldsymbol{\Phi}_4,用四次多項式轉換之後,一條彎來彎去的邊界把每個點都分對。課堂上的評語是:看左圖會覺得用一條線、犯一點錯是合理的假說;如果堅持每個圈圈叉叉都要分對,就會走到右圖,得到的雖然是 large-margin 的邊界,卻不見得是對這份資料最合理的解釋。

講義的結論寫成一行:如果永遠堅持 separable(也就是 shatter),就有能力去擬合雜訊。課堂上補了中間那一步:不管來的是什麼樣的圈圈叉叉組合都要能完全分開,這正是基石第 5 堂:訓練與測試說的 shatter;什麼標記都做得出來,雜訊當然也照單全收。

把 pocket 和 hard-margin SVM 合起來

講義第 3 頁的標題是 Give Up on Some Examples:想放棄一些有雜訊的資料。課堂上回頭找以前怎麼處理雜訊,找到的是基石第 2 堂:感知器與 PLA的 pocket:找不到一條線把資料分開時,改找犯錯最少的線,那些分不對的點就算了。兩個舊方法並排:

最小化什麼限制式
pocket分錯的個數 ∑n=1N[ ⁣[yn≠sign(w⊤zn+b)] ⁣]\sum_{n=1}^{N} [\![ y_n \ne \text{sign}(\mathbf{w}^\top\mathbf{z}_n + b) ]\!]沒有
hard-margin SVM12w⊤w\frac{1}{2}\mathbf{w}^\top\mathbf{w}每個 nn 都要 yn(w⊤zn+b)≥1y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1

[ ⁣[⋅] ⁣][\![\cdot]\!] 是基石用過的記號,括號裡的敘述成立時值是 1,不成立是 0。講義把兩者合成一個問題:

min⁡b,w12w⊤w+C⋅∑n=1N[ ⁣[yn≠sign(w⊤zn+b)] ⁣]subject toyn(w⊤zn+b)≥1for correct nyn(w⊤zn+b)≥−∞for incorrect n\begin{aligned} \min_{b,\mathbf{w}}\quad & \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\cdot\sum_{n=1}^{N} [\![ y_n \ne \text{sign}(\mathbf{w}^\top\mathbf{z}_n + b) ]\!] \\ \text{subject to}\quad & y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1 \quad \text{for correct } n \\ & y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge -\infty \quad \text{for incorrect } n \end{aligned}

分對的點照舊要離邊界夠遠。分錯的點寫成「大於等於負無限大」,課堂上解釋這就是沒有條件、不管它。只放寬限制式還不夠:課堂上指出,如果做錯也沒關係,機器乾脆全部做錯就好,所以目標函數要像 pocket 一樣把分錯的個數加進去,能不犯錯就不犯錯。

目標函數現在有兩項,一項要 w\mathbf{w} 短(邊界胖),一項要錯誤少,兩者的相對重要性由參數 CC 決定。講義的說法是 CC: trade-off of large margin & noise tolerance。CC 大代表比較在意不要犯錯,CC 小代表比較在意分對的那些點邊界要寬。課堂上把這個新問題稱為 hard-margin SVM 與 pocket 的合體。

合體的兩個問題

講義第 4 頁先把兩條限制式併成一條:

yn(w⊤zn+b)≥1−∞⋅[ ⁣[yn≠sign(w⊤zn+b)] ⁣]y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1 - \infty\cdot[\![ y_n \ne \text{sign}(\mathbf{w}^\top\mathbf{z}_n + b) ]\!]

分對時右邊是 1,分錯時右邊是負無限大。接著列出這個寫法的兩個毛病。

第一,它不是 QP。 [ ⁣[⋅] ⁣][\![\cdot]\!] 是「對或錯」的布林運算,不是線性的。技法第 1 堂:線性 SVM說過,二次規劃要求目標函數是二次式、限制式是一次式;現在兩邊都出現了既不是一次也不是二次的東西。課堂上說這代表之前推導的對偶、kernel 那些機制通通用不上。課堂上還提了一句,pocket 本身就是 NP-hard 的問題,這個合體同樣不好解。

第二,它分不出小錯和大錯。 講義的寫法是 small error(slightly away from fat boundary)與 large error(a...w...a...y... from fat boundary)。課堂上舉的數字是:一個該是圈圈的點,分數是 −0.001-0.001,幾乎就要對了;另一個同樣該是圈圈,分數是 −1126-1126,離邊界非常遠。在上面的式子裡,這兩個點都只算「一個錯誤」。

改記違反量:soft-margin SVM

解法是替每個點多設一個變數 ξn≥0\xi_n \ge 0,記錄它的 margin violation(本文譯為違反量)。課堂上的定義是:我們想要 yny_n 乘上分數至少是 1,ξn\xi_n 記的是這個點離「1」還差多少。差得少是小錯,差得多是大錯。然後把懲罰的對象從「錯了幾個」換成「總共違反多少」,講義稱為 penalize with margin violation instead of error count:

min⁡b,w,ξ12w⊤w+C⋅∑n=1Nξnsubject toyn(w⊤zn+b)≥1−ξn  and  ξn≥0for all n\begin{aligned} \min_{b,\mathbf{w},\boldsymbol{\xi}}\quad & \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\cdot\sum_{n=1}^{N}\xi_n \\ \text{subject to}\quad & y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1 - \xi_n \ \text{ and } \ \xi_n \ge 0 \quad \text{for all } n \end{aligned}

這就是 soft-margin SVM。課堂上對名字的解釋是:對 margin 的要求不再是 hard、強硬不可更改,而是 soft,允許一些違反。兩個毛病都處理掉了:

  • 限制式是一次式。 yn(w⊤zn+b)≥1−ξny_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1 - \xi_n 對 (b,w,ξn)(b, \mathbf{w}, \xi_n) 是線性的,ξn≥0\xi_n \ge 0 也是。
  • 目標函數是二次式。 課堂上的講法是原本有 w\mathbf{w} 的二次式,加上 ξn\xi_n 的一次式,合起來是 (w,ξ)(\mathbf{w}, \boldsymbol{\xi}) 的二次式。所以它仍然是 QP。
  • 大錯小錯分得出來。 課堂上說,錯誤不再非黑即白,容許灰色地帶,大錯小錯各自算好再加起來當作懲罰。

講義第 5 頁的圖畫了一條綠色的胖邊界,有一個藍點落在帶子裡面,旁邊標著 violation,並畫出它到帶子邊緣的那一段。課堂上說這個點落在胖邊界裡面,所以違規了,它和胖邊界邊緣的距離就是違規的量。本文補充:嚴格說,ξn\xi_n 是用「分數」的單位量的,幾何上的距離是 ξn/∥w∥\xi_n / \lVert\mathbf{w}\rVert,兩者差一個固定的倍數。

同一頁整理參數 CC 的意思,現在是 trade-off of large margin & margin violation:

  • CC 大: 想要違反少。課堂上的說法是寧可邊界瘦一點,也不要有違反的地方。
  • CC 小: 想要邊界胖。很多點違反就算了。

最後數一下這個 QP 的大小。變數有 bb、w\mathbf{w} 的 d~\tilde{d} 個分量、NN 個 ξn\xi_n,共 d~+1+N\tilde{d}+1+N 個。限制式每個點兩條,共 2N2N 條;課堂上說多出來的 NN 條就是 ξn≥0\xi_n \ge 0,因為違反量只在有違反時才記,不能是負的。變數個數裡還有 d~\tilde{d},所以下一步和前兩堂一樣:推對偶問題,把 d~\tilde{d} 拿掉。

數值例子:六個點,分不開

以下是本文自擬的例子,不在講義上;後面三節會一直沿用它。資料是一維的,不做特徵轉換,zn=xnz_n = x_n:

nnxnx_nyny_n
100−1-1
233−1-1
344+1+1
466−1-1
577+1+1
61010+1+1

大致上左邊是負例、右邊是正例,但第 3 點和第 4 點的位置對調了:正例在 4,負例在 6。

hard-margin SVM 沒有解。 第 3 點要求 4w+b≥14w + b \ge 1,第 4 點要求 6w+b≤−16w + b \le -1,兩式相減得 2w≤−22w \le -2,也就是 w≤−1w \le -1。第 2 點要求 3w+b≤−13w + b \le -1,第 5 點要求 7w+b≥17w + b \ge 1,相減得 4w≥24w \ge 2,也就是 w≥12w \ge \frac{1}{2}。兩個要求互相矛盾,沒有任何 (b,w)(b, w) 滿足全部限制式。

soft-margin 的目標函數怎麼評分。 對一組給定的 (b,w)(b, w),每個 ξn\xi_n 要滿足 ξn≥1−yn(wxn+b)\xi_n \ge 1 - y_n(wx_n + b) 與 ξn≥0\xi_n \ge 0,而目標函數希望它愈小愈好,所以 ξn\xi_n 會取兩個下限裡比較大的那個(這也是這一節 Fun Time 的重點)。拿四組候選來算:

候選(w,b)(w, b)邊界胖邊界兩緣(ξ1,…,ξ6)(\xi_1, \dots, \xi_6)∑ξn\sum\xi_n分錯幾個
甲(12,−52)(\frac{1}{2}, -\frac{5}{2})x=5x = 5x=3x = 3、x=7x = 7(0,0,32,32,0,0)(0, 0, \frac{3}{2}, \frac{3}{2}, 0, 0)332
乙(1,−5)(1, -5)x=5x = 5x=4x = 4、x=6x = 6(0,0,2,2,0,0)(0, 0, 2, 2, 0, 0)442
丙(15,−1)(\frac{1}{5}, -1)x=5x = 5x=0x = 0、x=10x = 10(0,35,65,65,35,0)(0, \frac{3}{5}, \frac{6}{5}, \frac{6}{5}, \frac{3}{5}, 0)185\frac{18}{5}2
丁(2,−7)(2, -7)x=3.5x = 3.5x=3x = 3、x=4x = 4(0,0,0,6,0,0)(0, 0, 0, 6, 0, 0)661

以候選甲的第 3 點為例:y3(wx3+b)=(+1)(12⋅4−52)=−12y_3(wx_3 + b) = (+1)(\frac{1}{2}\cdot 4 - \frac{5}{2}) = -\frac{1}{2},離 1 差了 1−(−12)=321 - (-\frac{1}{2}) = \frac{3}{2},所以 ξ3=32\xi_3 = \frac{3}{2}。候選丙的第 2 點:y2(wx2+b)=(−1)(35−1)=25y_2(wx_2 + b) = (-1)(\frac{3}{5} - 1) = \frac{2}{5},分對了但落在胖邊界裡面,ξ2=35\xi_2 = \frac{3}{5}。違反量小於 1 的點還在正確的一邊,大於 1 的點已經被分錯。

再把 12w2+C∑ξn\frac{1}{2}w^2 + C\sum\xi_n 算出來:

候選12w2\frac{1}{2}w^2C=1C = 1 的目標值C=120C = \frac{1}{20} 的目標值
甲18\frac{1}{8}18+3=3.125\frac{1}{8} + 3 = 3.12518+320=0.275\frac{1}{8} + \frac{3}{20} = 0.275
乙12\frac{1}{2}12+4=4.5\frac{1}{2} + 4 = 4.512+420=0.7\frac{1}{2} + \frac{4}{20} = 0.7
丙150\frac{1}{50}150+185=3.62\frac{1}{50} + \frac{18}{5} = 3.62150+18100=0.2\frac{1}{50} + \frac{18}{100} = 0.2
丁222+6=82 + 6 = 82+620=2.32 + \frac{6}{20} = 2.3

這個結果代表什麼。

  • C=1C = 1 時甲的目標值最低,C=120C = \frac{1}{20} 時丙最低。丙的胖邊界半寬是 1/w=51/w = 5,甲只有 2;丙的違反總量 185\frac{18}{5} 比甲的 3 多。CC 變小,換來的是比較胖的邊界與比較多的違反,和講義第 5 頁說的方向一致。這兩組也真的是各自的最佳解:本文用 ww 與 bb 各以 140\frac{1}{40} 為間隔的格點把目標函數掃過一遍,並在後面「數值例子:六個點的對偶問題」與「數值例子:六個點的 b 與 KKT」兩段用對偶解與 KKT 條件確認。
  • 候選丁只分錯一個點,是這份資料能做到的最少錯誤數(正例在 4、負例在 6,左邊判負、右邊判正的門檻不管放哪裡都至少分錯其中一個;反過來左正右負的話,兩端的四個點會全錯)。但在 soft-margin SVM 的評分裡,它在兩個 CC 底下都是最差的:邊界很瘦,而且第 4 點離它想要的位置非常遠,ξ4=6\xi_4 = 6。把 CC 調到 100 也一樣,甲是 18+300\frac{1}{8} + 300,丁是 2+6002 + 600。soft-margin SVM 最小化的是違反量的總和,和「分錯的個數最少」是兩個不同的目標。
  • 對照講義第 3 頁那個數錯誤個數的合體:甲的目標值是 18+2C\frac{1}{8} + 2C,丁是 2+C2 + C。C=1C = 1 時甲比較好(2.1252.125 對 33),C=10C = 10 時丁比較好(20.12520.125 對 1212)。兩種寫法在同一份資料上會選出不同的線。
  • 甲和乙的邊界都在 x=5x = 5,乙的胖邊界比較瘦,違反量反而比較大(2 對 32\frac{3}{2})。原因是 ξn\xi_n 用分數的單位量:ww 愈大,同一段距離換算成的分數差愈大。

Fun Time:違反量是多少

題目(第 6 頁): 在 soft-margin SVM 原始問題的最佳解上,假設 y1(w⊤z1+b)=−10y_1(\mathbf{w}^\top\mathbf{z}_1 + b) = -10。對應的 ξ1\xi_1 是多少?

  1. 11
  2. 1111
  3. 2121
  4. 3131

答案:2。 講義的解答是:y1(w⊤z1+b)≤1y_1(\mathbf{w}^\top\mathbf{z}_1 + b) \le 1 時,ξ1\xi_1 就是 1−y1(w⊤z1+b)1 - y_1(\mathbf{w}^\top\mathbf{z}_1 + b)。課堂上的講法更短:我們要的是 1,現在是 −10-10,差了 11。

推理補完整:限制式要求 ξ1≥1−(−10)=11\xi_1 \ge 1 - (-10) = 11,以及 ξ1≥0\xi_1 \ge 0。目標函數裡 ξ1\xi_1 的係數是 C>0C > 0,最佳解不會讓它比必要的還大,所以 ξ1=11\xi_1 = 11。一般的寫法是 ξn=max⁡(0, 1−yn(w⊤zn+b))\xi_n = \max\big(0,\ 1 - y_n(\mathbf{w}^\top\mathbf{z}_n + b)\big)。選項 1 不滿足限制式(1<111 < 11);選項 3 與 4 滿足限制式,但白白多付了 10C10C 與 20C20C 的懲罰,不會是最佳解。

推對偶問題:多一組乘數,結果只多一個上界

YouTube:Soft-Margin Support Vector Machine :: Dual Problem @ Machine Learning Techniques (機器學習技法)

(影片 00:00–02:02 寫拉格朗日函數,02:02–04:55 消去 ξn\xi_n 與 βn\beta_n,04:55–06:10 其餘的化簡,06:10–07:10 標準對偶問題,之後是 Fun Time。)

兩組限制式,兩組乘數

做法和技法第 2 堂完全相同:先寫拉格朗日函數,每條限制式配一個乘數。現在限制式有兩組(講義第 7 頁用紅色與藍色區分),所以乘數也有兩組:

  • yn(w⊤zn+b)≥1−ξny_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1 - \xi_n 配 αn\alpha_n。移項成「小於等於 0」的形式是 1−ξn−yn(w⊤zn+b)≤01 - \xi_n - y_n(\mathbf{w}^\top\mathbf{z}_n + b) \le 0。
  • ξn≥0\xi_n \ge 0 配 βn\beta_n。移項後是 −ξn≤0-\xi_n \le 0。

課堂上特別提醒要注意符號,每條都要先移成小於等於 0 的那一邊。拉格朗日函數是目標函數加上「乘數乘以該條限制式」:

L(b,w,ξ,α,β)=12w⊤w+C⋅∑n=1Nξn+∑n=1Nαn(1−ξn−yn(w⊤zn+b))+∑n=1Nβn(−ξn)\mathcal{L}(b, \mathbf{w}, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) = \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\cdot\sum_{n=1}^{N}\xi_n + \sum_{n=1}^{N}\alpha_n\big(1 - \xi_n - y_n(\mathbf{w}^\top\mathbf{z}_n + b)\big) + \sum_{n=1}^{N}\beta_n(-\xi_n)

要解的拉格朗日對偶問題是

max⁡αn≥0, βn≥0 (min⁡b,w,ξ L(b,w,ξ,α,β))\max_{\alpha_n \ge 0,\ \beta_n \ge 0}\ \Big( \min_{b,\mathbf{w},\boldsymbol{\xi}}\ \mathcal{L}(b, \mathbf{w}, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \Big)

本文補充:講義在這裡直接寫「want: Lagrange dual」,沒有重講為什麼可以改解對偶問題。理由和技法第 2 堂一樣,需要強對偶的三個條件:原始問題是凸的、限制式是線性的、原始問題有解。前兩個一看就成立。第三個在 hard-margin 時要求資料可分,soft-margin 則永遠成立:取 w=0\mathbf{w} = \mathbf{0}、b=0b = 0、每個 ξn=1\xi_n = 1,所有限制式都滿足。這就是講義第 12 頁說 soft-margin 的原始與對偶問題 always solvable 的原因。

先消去 ξ 和 β

內層的 min⁡\min 對 (b,w,ξ)(b, \mathbf{w}, \boldsymbol{\xi}) 沒有任何限制,最小值的地方偏微分是 0。講義第 8 頁從新的變數 ξn\xi_n 下手。L\mathcal{L} 裡含某一個特定 ξn\xi_n 的地方有三處,課堂上一處一處找:目標函數裡的 CξnC\xi_n、αn\alpha_n 那一項裡的 −αnξn-\alpha_n\xi_n、βn\beta_n 那一項的 −βnξn-\beta_n\xi_n。所以

∂L∂ξn=C−αn−βn=0\frac{\partial\mathcal{L}}{\partial\xi_n} = C - \alpha_n - \beta_n = 0

也就是在最佳解上,αn\alpha_n 和 βn\beta_n 加起來剛好是 CC。講義接著說,把 βn=C−αn\beta_n = C - \alpha_n 當成隱含的限制來解,不會損失最佳性,於是 βn\beta_n 可以整個換掉。換掉之前要確認原本對兩組乘數的要求還在:

  • αn≥0\alpha_n \ge 0:照舊。
  • βn≥0\beta_n \ge 0:換成 C−αn≥0C - \alpha_n \ge 0,也就是 αn≤C\alpha_n \le C。

所以只要要求 0≤αn≤C0 \le \alpha_n \le C,βn\beta_n 就自動大於等於 0,課堂上說從此完全不用再考慮 β\beta。αn\alpha_n 的上界 CC 就是從這裡來的:它是「βn\beta_n 不能是負的」換了一個寫法。

本文補充一個看法,說明為什麼加這條限制不損失最佳性。把 L\mathcal{L} 裡含 ξn\xi_n 的項收在一起是 (C−αn−βn) ξn(C - \alpha_n - \beta_n)\,\xi_n,對 ξn\xi_n 是一次式。係數只要不是 0,內層的 min 就能把 ξn\xi_n 往正確的方向推到無限遠,讓 L\mathcal{L} 變成 −∞-\infty。外層在找最大值,不會選這種 (α,β)(\boldsymbol{\alpha}, \boldsymbol{\beta}),所以只需要考慮係數是 0 的情形。這和技法第 2 堂處理 bb 的理由相同。

把 βn=C−αn\beta_n = C - \alpha_n 代進去之後,含 ξn\xi_n 的項是

∑n=1N(C−αn−βn) ξn=∑n=1N(C−αn−(C−αn)) ξn=0\sum_{n=1}^{N}\big(C - \alpha_n - \beta_n\big)\,\xi_n = \sum_{n=1}^{N}\big(C - \alpha_n - (C - \alpha_n)\big)\,\xi_n = 0

投影片把這一項整個劃掉。課堂上說這次消去有兩個效果:βn\beta_n 不見了,更重要的是所有 ξn\xi_n 也不見了,就像 hard-margin 時把 bb 消掉一樣。剩下的問題是

max⁡0≤αn≤C, βn=C−αn (min⁡b,w 12w⊤w+∑n=1Nαn(1−yn(w⊤zn+b)))\max_{0 \le \alpha_n \le C,\ \beta_n = C - \alpha_n}\ \bigg( \min_{b,\mathbf{w}}\ \frac{1}{2}\mathbf{w}^\top\mathbf{w} + \sum_{n=1}^{N}\alpha_n\big(1 - y_n(\mathbf{w}^\top\mathbf{z}_n + b)\big) \bigg)

剩下的和 hard-margin 一模一樣

講義第 9 頁在這個式子旁邊寫了「familiar? :-)」。括號裡的內層問題和技法第 2 堂 hard-margin 的內層問題完全相同,差別只在外面 αn\alpha_n 多了上界。課堂上說這些步驟兩堂之前都做過,細節不再重做,不確定的人回去看第 2 堂。這裡把步驟補齊。

對 bb 偏微分。 L\mathcal{L} 裡含 bb 的部分是 −b∑nαnyn-b\sum_n\alpha_n y_n,所以

∂L∂b=−∑n=1Nαnyn=0\frac{\partial\mathcal{L}}{\partial b} = -\sum_{n=1}^{N}\alpha_n y_n = 0

加上 ∑nαnyn=0\sum_n\alpha_n y_n = 0 這條限制之後,含 bb 的項消失。

對 w\mathbf{w} 偏微分。 第 ii 個分量:12w⊤w\frac{1}{2}\mathbf{w}^\top\mathbf{w} 微分得 wiw_i,−αnynw⊤zn-\alpha_n y_n\mathbf{w}^\top\mathbf{z}_n 微分得 −αnynzn,i-\alpha_n y_n z_{n,i},所以

∂L∂wi=wi−∑n=1Nαnynzn,i=0⟹w=∑n=1Nαnynzn\frac{\partial\mathcal{L}}{\partial w_i} = w_i - \sum_{n=1}^{N}\alpha_n y_n z_{n,i} = 0 \quad\Longrightarrow\quad \mathbf{w} = \sum_{n=1}^{N}\alpha_n y_n\mathbf{z}_n

代回去。 bb 的項已經消掉,剩下 ∑nαn(1−ynw⊤zn)=∑nαn−w⊤(∑nαnynzn)=∑nαn−w⊤w\sum_n\alpha_n(1 - y_n\mathbf{w}^\top\mathbf{z}_n) = \sum_n\alpha_n - \mathbf{w}^\top\big(\sum_n\alpha_n y_n\mathbf{z}_n\big) = \sum_n\alpha_n - \mathbf{w}^\top\mathbf{w},內層的最小值是

12w⊤w+∑n=1Nαn−w⊤w=−12∥∑n=1Nαnynzn∥2+∑n=1Nαn\frac{1}{2}\mathbf{w}^\top\mathbf{w} + \sum_{n=1}^{N}\alpha_n - \mathbf{w}^\top\mathbf{w} = -\frac{1}{2}\Big\lVert\sum_{n=1}^{N}\alpha_n y_n\mathbf{z}_n\Big\rVert^2 + \sum_{n=1}^{N}\alpha_n

標準的 soft-margin 對偶問題

把範數的平方展開成雙重加總,再乘上 −1-1 把 max 換成 min,就是講義第 10 頁的 standard soft-margin SVM dual:

min⁡α12∑n=1N∑m=1Nαnαmynymzn⊤zm−∑n=1Nαnsubject to∑n=1Nynαn=0;0≤αn≤C,n=1,2,…,N\begin{aligned} \min_{\boldsymbol{\alpha}}\quad & \frac{1}{2}\sum_{n=1}^{N}\sum_{m=1}^{N}\alpha_n\alpha_m y_n y_m\mathbf{z}_n^\top\mathbf{z}_m - \sum_{n=1}^{N}\alpha_n \\ \text{subject to}\quad & \sum_{n=1}^{N} y_n\alpha_n = 0; \\ & 0 \le \alpha_n \le C,\quad n = 1, 2, \dots, N \end{aligned}

另外有兩條隱含的關係,不是對 α\boldsymbol{\alpha} 的限制,但之後會用到:w=∑nαnynzn\mathbf{w} = \sum_n\alpha_n y_n\mathbf{z}_n,以及 βn=C−αn\beta_n = C - \alpha_n。

講義在式子下面寫:和 hard-margin 唯一的差別是 αn\alpha_n 有上界。課堂上的說法是,會解 hard-margin 的對偶,現在這個也會解,只是 α\alpha 不再毫無上限。這仍然是凸的 QP,變數 NN 個;限制式照課堂上的數法,是一條等式,加上每個 αn\alpha_n 的下限 0 與上限 CC 各一條,共 2N+12N + 1 條。變數與限制式的數量都和 d~\tilde{d} 無關,zn⊤zm\mathbf{z}_n^\top\mathbf{z}_m 也可以照上一堂換成 kernel。

和原始問題並排看:

原始問題對偶問題
變數d~+1+N\tilde{d} + 1 + N 個NN 個
限制式2N2N 條2N+12N + 1 條
CC 出現在哪裡目標函數裡 ∑ξn\sum\xi_n 的係數αn\alpha_n 的上界
ξn\xi_n是變數消掉了,事後再算

數值例子:六個點的對偶問題

沿用前面的六個點(本文自擬)。一維的情況下 w=∑nαnynxnw = \sum_n\alpha_n y_n x_n 是一個數:

w(α)=−0⋅α1−3α2+4α3−6α4+7α5+10α6w(\boldsymbol{\alpha}) = -0\cdot\alpha_1 - 3\alpha_2 + 4\alpha_3 - 6\alpha_4 + 7\alpha_5 + 10\alpha_6

對偶問題是最小化 12w(α)2−∑nαn\frac{1}{2}w(\boldsymbol{\alpha})^2 - \sum_n\alpha_n,限制式是 −α1−α2+α3−α4+α5+α6=0-\alpha_1 - \alpha_2 + \alpha_3 - \alpha_4 + \alpha_5 + \alpha_6 = 0 與 0≤αn≤C0 \le \alpha_n \le C。

先看沒有上界會怎樣。 取 α=(0,t2,t,t,t2,0)\boldsymbol{\alpha} = (0, \frac{t}{2}, t, t, \frac{t}{2}, 0),t≥0t \ge 0。等式限制:−t2+t−t+t2=0-\frac{t}{2} + t - t + \frac{t}{2} = 0,成立。w=−3t2+4t−6t+7t2=0w = -\frac{3t}{2} + 4t - 6t + \frac{7t}{2} = 0。目標函數是 0−3t0 - 3t。tt 愈大目標值愈低,沒有下限。hard-margin 的原始問題在這份資料上沒有解,反映到對偶問題就是目標函數可以無限制地往下掉。加上 αn≤C\alpha_n \le C 之後,tt 最多只能到 CC,這個方向就被擋住了。

解 C=1C = 1。 六個變數的 QP 直接手解很繁,這裡用「先猜型態、再求解、最後驗證」的做法。原始問題那邊的候選甲暗示:第 1、6 點離胖邊界很遠,第 3、4 點違反胖邊界,第 2、5 點剛好在邊緣上。猜 α1=α6=0\alpha_1 = \alpha_6 = 0,α3=α4=1\alpha_3 = \alpha_4 = 1(頂到上界;為什麼違反的點會頂到上界,後面「α 的值把資料分成三類」那一段說明)。等式限制變成 −α2+1−1+α5=0-\alpha_2 + 1 - 1 + \alpha_5 = 0,所以 α2=α5\alpha_2 = \alpha_5,記成 aa。這時

w=−3a+4−6+7a=4a−2,objective=12(4a−2)2−2−2aw = -3a + 4 - 6 + 7a = 4a - 2, \qquad \text{objective} = \frac{1}{2}(4a - 2)^2 - 2 - 2a

對 aa 微分:4(4a−2)−2=16a−10=04(4a - 2) - 2 = 16a - 10 = 0,a=58a = \frac{5}{8},落在 0 與 1 之間。所以

α=(0, 58, 1, 1, 58, 0),w=12,objective=18−134=−258\boldsymbol{\alpha} = \Big(0,\ \frac{5}{8},\ 1,\ 1,\ \frac{5}{8},\ 0\Big), \qquad w = \frac{1}{2}, \qquad \text{objective} = \frac{1}{8} - \frac{13}{4} = -\frac{25}{8}

驗證這真的是最佳解。 把對偶問題寫回 max 的形式,這組 α\boldsymbol{\alpha} 的值是 258=3.125\frac{25}{8} = 3.125。技法第 2 堂的弱對偶說,任何一組合法的 α\boldsymbol{\alpha} 給出的值都不會超過原始問題的最佳值;而候選甲 (w,b)=(12,−52)(w, b) = (\frac{1}{2}, -\frac{5}{2}) 在原始問題的目標值正好也是 3.1253.125。下界和一個實際做得到的值相等,所以甲是原始問題的最佳解,這組 α\boldsymbol{\alpha} 是對偶問題的最佳解,強對偶在這個例子上看得到。

注意 ww 是從 α\boldsymbol{\alpha} 算出來的 12\frac{1}{2},和候選甲一致;bb 則還沒出現,對偶問題裡沒有它。

Fun Time:C 加 2,對偶問題怎麼變

題目(第 11 頁): 在 soft-margin SVM 裡,想把參數 CC 增加 2。對應的對偶問題該怎麼改?

  1. αn\alpha_n 的上界減半
  2. αn\alpha_n 的上界減少 2
  3. αn\alpha_n 的上界增加 2
  4. αn\alpha_n 的上界加倍

答案:3。 講義的解答是:CC 就是 αn\alpha_n 的上界,原始問題的 CC 加 2,等於對偶問題的上界加 2。課堂上舉的例子是 CC 從 10 變成 12,αn\alpha_n 的上限也從 10 變成 12。

從推導看,上界來自 βn=C−αn≥0\beta_n = C - \alpha_n \ge 0,CC 原封不動地出現在右邊,沒有被乘或除過,所以是「加多少就加多少」。選項 1 與 2 的方向反了。選項 4 只有在 CC 剛好從 2 變成 4 時才碰巧說對。對偶問題的目標函數與等式限制裡都沒有 CC,不需要改。

解出 α 之後:怎麼算 b,每個點的 α 透露什麼

YouTube:Soft-Margin Support Vector Machine :: Messages @ Machine Learning Techniques (機器學習技法)

(影片 00:00–01:55 是 kernel soft-margin SVM 演算法,01:55–05:47 算 bb,05:47–08:28 看不同 CC 的 Gaussian SVM,08:28–12:32 講 αn\alpha_n 的物理意義,之後是 Fun Time。)

Kernel soft-margin SVM 演算法

講義第 12 頁把上一堂的 kernel hard-margin SVM 演算法改了一個地方:

  1. 算 qn,m=ynymK(xn,xm)q_{n,m} = y_n y_m K(\mathbf{x}_n, \mathbf{x}_m),p=−1N\mathbf{p} = -\mathbf{1}_N,以及表示等式、下界、上界三類限制式的 (A,c)(A, \mathbf{c})。
  2. α←QP(QD,p,A,c)\boldsymbol{\alpha} \leftarrow \text{QP}(Q_D, \mathbf{p}, A, \mathbf{c})。
  3. b← ?b \leftarrow\ ?
  4. 回傳支援向量、它們的 αn\alpha_n 與 bb。對新的 x\mathbf{x},
gSVM(x)=sign(∑SV indices nαnynK(xn,x)+b)g_{\text{SVM}}(\mathbf{x}) = \text{sign}\Big(\sum_{\text{SV indices } n}\alpha_n y_n K(\mathbf{x}_n, \mathbf{x}) + b\Big)

第 1 步多的是上界那一組限制式,課堂上說它來自參數 CC。本文補充:用技法第 1 堂 QP 解算器只收「≥\ge」的格式來寫,上界 αn≤C\alpha_n \le C 要寫成 −αn≥−C-\alpha_n \ge -C。

講義對這個演算法的評語有兩點。它和 hard-margin 幾乎一樣;而且更有彈性,原始與對偶問題永遠有解。課堂上的說法是:hard-margin 要資料可分才有解,現在不用,總會得到一個解,還可以用 CC 調整比較在乎胖的邊界還是比較在乎少犯錯;soft-margin 是實務上比較常用的 SVM 形式。這一節後面,課堂上乾脆直接把 soft-margin SVM 叫作 SVM。

剩下的問題是第 3 步。QP 換了,KKT 條件也跟著變,bb 還能照以前的方式算嗎?

算 b 要用 free SV

先列出互補鬆弛。技法第 2 堂的規則是:每條限制式和它的乘數,至少有一個是 0(課堂上沿用哈利波特與佛地魔不能同時活著的比喻)。hard-margin 只有一條:

αn(1−yn(w⊤zn+b))=0\alpha_n\big(1 - y_n(\mathbf{w}^\top\mathbf{z}_n + b)\big) = 0

soft-margin 有兩組限制式,所以有兩條(講義第 13 頁):

αn(1−ξn−yn(w⊤zn+b))=0,(C−αn) ξn=0\alpha_n\big(1 - \xi_n - y_n(\mathbf{w}^\top\mathbf{z}_n + b)\big) = 0, \qquad (C - \alpha_n)\,\xi_n = 0

第二條原本是 βn⋅(−ξn)=0\beta_n\cdot(-\xi_n) = 0。課堂上說明,βn\beta_n 已經知道是 C−αnC - \alpha_n,負號不影響「乘起來是 0」,所以直接寫成 (C−αn)ξn=0(C - \alpha_n)\xi_n = 0。

照 hard-margin 的做法,找一個支援向量 (zs,ys)(\mathbf{z}_s, y_s),αs>0\alpha_s > 0。第一條逼得括號是 0:

1−ξs−ys(w⊤zs+b)=0⟹ys(w⊤zs+b)=1−ξs1 - \xi_s - y_s(\mathbf{w}^\top\mathbf{z}_s + b) = 0 \quad\Longrightarrow\quad y_s(\mathbf{w}^\top\mathbf{z}_s + b) = 1 - \xi_s

兩邊同乘 ysy_s(ys2=1y_s^2 = 1):w⊤zs+b=ys−ysξs\mathbf{w}^\top\mathbf{z}_s + b = y_s - y_s\xi_s,所以

b=ys−ysξs−w⊤zsb = y_s - y_s\xi_s - \mathbf{w}^\top\mathbf{z}_s

比 hard-margin 多了一項 ysξsy_s\xi_s。麻煩在於 ξs\xi_s 是違反量,要先知道 bb 才算得出來。課堂上說這變成雞生蛋、蛋生雞,算不完。

解法是想辦法讓那一項是 0。第二條互補鬆弛說,只要 C−αs≠0C - \alpha_s \ne 0,也就是 αs<C\alpha_s < C,就有 ξs=0\xi_s = 0。同時滿足 0<αs<C0 < \alpha_s < C 的支援向量叫 free SV;課堂上解釋 free 是自由自在、沒有被 CC 綁住的意思。對 free SV,

b=ys−w⊤zs=ys−∑SV indices nαnynK(xn,xs)b = y_s - \mathbf{w}^\top\mathbf{z}_s = y_s - \sum_{\text{SV indices } n}\alpha_n y_n K(\mathbf{x}_n, \mathbf{x}_s)

和 hard-margin 的式子一樣,內積照樣由 kernel 算。課堂上說任何一個 free SV 都會給出同一個 bb。

沒有 free SV 的時候呢?講義只寫了一句「range of bb otherwise」。課堂上的補充是:這種情形很少見,但會發生;這時 bb 只能由一組不等式限制,可能有不只一個答案,只要滿足所有 KKT 條件的 bb 都可以。細節課堂上沒有講,下面的例子會遇到一次。

數值例子:六個點的 b 與 KKT

(本文自擬,接續前面的六個點。)C=1C = 1 時 α=(0,58,1,1,58,0)\boldsymbol{\alpha} = (0, \frac{5}{8}, 1, 1, \frac{5}{8}, 0)、w=12w = \frac{1}{2}。free SV 是第 2、5 點:

  • 用第 2 點:b=y2−wx2=−1−32=−52b = y_2 - wx_2 = -1 - \frac{3}{2} = -\frac{5}{2}。
  • 用第 5 點:b=y5−wx5=1−72=−52b = y_5 - wx_5 = 1 - \frac{7}{2} = -\frac{5}{2}。

兩個 free SV 給出同一個 bb。如果誤用 α3=C\alpha_3 = C 的第 3 點代 hard-margin 的式子,會得到 b=1−2=−1b = 1 - 2 = -1,是錯的;用完整的式子 b=y3−y3ξ3−wx3=1−32−2=−52b = y_3 - y_3\xi_3 - wx_3 = 1 - \frac{3}{2} - 2 = -\frac{5}{2} 才對,但那需要先知道 ξ3=32\xi_3 = \frac{3}{2}。

有了 bb,每個點的 ξn=max⁡(0,1−yn(wxn+b))\xi_n = \max(0, 1 - y_n(wx_n + b)) 就算得出來,兩條互補鬆弛可以逐點檢查:

nnxnx_nyny_nαn\alpha_nyn(wxn+b)y_n(wx_n + b)ξn\xi_nαn(1−ξn−yn(wxn+b))\alpha_n(1 - \xi_n - y_n(wx_n + b))(C−αn)ξn(C - \alpha_n)\xi_n類別
100−1-10052\frac{5}{2}000000非支援向量
233−1-158\frac{5}{8}11000000free SV
344+1+111−12-\frac{1}{2}32\frac{3}{2}0000bounded SV
466−1-111−12-\frac{1}{2}32\frac{3}{2}0000bounded SV
577+1+158\frac{5}{8}11000000free SV
61010+1+10052\frac{5}{2}000000非支援向量

其餘的條件也成立:∑nynαn=−58+1−1+58=0\sum_n y_n\alpha_n = -\frac{5}{8} + 1 - 1 + \frac{5}{8} = 0,每個 αn\alpha_n 都在 0 與 1 之間,每個點都滿足 yn(wxn+b)≥1−ξny_n(wx_n + b) \ge 1 - \xi_n。分類器是 g(x)=sign(12x−52)g(x) = \text{sign}(\frac{1}{2}x - \frac{5}{2}),邊界在 x=5x = 5,胖邊界從 3 到 7。

換幾個 CC 看看。 同樣的做法(猜型態、求解、驗 KKT,數字另外用程式以分數精確計算核對過)得到:

CCα\boldsymbol{\alpha}ww胖邊界半寬 1/w1/wbb∑ξn\sum\xi_nfree SVbounded SV
120\frac{1}{20}(1100,120,120,120,120,1100)(\frac{1}{100}, \frac{1}{20}, \frac{1}{20}, \frac{1}{20}, \frac{1}{20}, \frac{1}{100})15\frac{1}{5}55−1-1185\frac{18}{5}第 1、6 點第 2、3、4、5 點
15\frac{1}{5}(0,15,15,15,15,0)(0, \frac{1}{5}, \frac{1}{5}, \frac{1}{5}, \frac{1}{5}, 0)25\frac{2}{5}52\frac{5}{2}−115-\frac{11}{5} 到 −95-\frac{9}{5}165\frac{16}{5}沒有第 2、3、4、5 點
11(0,58,1,1,58,0)(0, \frac{5}{8}, 1, 1, \frac{5}{8}, 0)12\frac{1}{2}22−52-\frac{5}{2}33第 2、5 點第 3、4 點
100100(0,4018,100,100,4018,0)(0, \frac{401}{8}, 100, 100, \frac{401}{8}, 0)12\frac{1}{2}22−52-\frac{5}{2}33第 2、5 點第 3、4 點

這張表有三件事可以看:

  • CC 變大,邊界變瘦、違反變少。 CC 從 120\frac{1}{20} 到 1,胖邊界半寬從 5 縮到 2,違反總量從 185\frac{18}{5} 降到 3,bounded SV 從四個減到兩個。
  • C=15C = \frac{1}{5} 沒有 free SV。 照 C=1C = 1 的型態解會得到 a=C2+18=940a = \frac{C}{2} + \frac{1}{8} = \frac{9}{40},超過上界 15\frac{1}{5},所以第 2、5 點也頂到上界,四個支援向量全是 bounded。這時 bb 只受不等式限制:第 2 點是 bounded,要求 y2(wx2+b)≤1y_2(wx_2 + b) \le 1,即 −(65+b)≤1-(\frac{6}{5} + b) \le 1,b≥−115b \ge -\frac{11}{5};第 5 點要求 145+b≤1\frac{14}{5} + b \le 1,b≤−95b \le -\frac{9}{5}。這個範圍裡的每個 bb 目標值都是 1825\frac{18}{25},都是最佳解。這就是講義那句「range of bb otherwise」。
  • CC 從 1 加到 100,分類器沒有變。 第 3、4 點的位置對調,任何一條線都救不回來,CC 再大也只是讓 α\alpha 跟著變大。在這個例子裡,只要 C≥14C \ge \frac{1}{4},a=C2+18a = \frac{C}{2} + \frac{1}{8} 就不超過上界,解出來的都是 w=12w = \frac{1}{2}、b=−52b = -\frac{5}{2},CC 再調大也不會有不同的分類器。講義接下來的圖用的是 Gaussian kernel,邊界可以一直彎,情況不同。

不同 C 的 Gaussian SVM

講義第 14 頁用同一組資料、Gaussian kernel,放了 C=1C = 1、1010、100100 三張圖。課堂上先說明圖怎麼讀:黑線是邊界,上面是藍色區域、下面是紅色區域;灰色的地方是 margin,也就是 Z\mathcal{Z} 空間裡那條胖邊界對回 X\mathcal{X} 空間的樣子。

  • C=1C = 1: 邊界平緩,灰色區域寬。課堂上指出這張圖裡有不少違反:有紅色的點落在藍色區域(分錯),也有藍色的點雖然在對的那一邊,卻落在灰色區域裡。
  • C=10C = 10: 邊界開始彎,灰色區域變窄,違反變少。課堂上舉了一個剛才分錯的藍點,現在到了對的那一邊,只是還在灰色區域裡,從大錯變成小錯。
  • C=100C = 100: 邊界更曲折,圖的上方甚至圍出一小圈,把一個孤立的叉叉也分對了。

講義的註解是 large CC ⟹ less noise tolerance ⟹ 'overfit'?,並再寫一次 warning: SVM can still overfit。課堂上對 C=100C = 100 那張圖的反問是:有必要做到這麼複雜嗎,上面那個叉叉會不會根本只是雜訊。CC 沒調好,soft-margin SVM 對雜訊的容忍度不夠,一樣會過擬合。所以講義的結論是 Gaussian soft-margin SVM 要仔細選 (γ,C)(\gamma, C);課堂上補充,多項式 kernel 要選的參數更多。

α 的值把資料分成三類

講義第 15 頁的標題是 Physical Meaning of αn\alpha_n。同樣的兩條互補鬆弛,依 αn\alpha_n 的值分三種情形:

類別αn\alpha_n互補鬆弛推出什麼ξn\xi_n位置圖上的標記
非支援向量00C−αn=C≠0C - \alpha_n = C \ne 0,第二條逼得 ξn=0\xi_n = 000在胖邊界外側,少數剛好在邊緣上沒有
free SV0<αn<C0 < \alpha_n < C第二條給 ξn=0\xi_n = 0;第一條給 yn(w⊤zn+b)=1y_n(\mathbf{w}^\top\mathbf{z}_n + b) = 100剛好在胖邊界的邊緣上方框
bounded SVCCαn≠0\alpha_n \ne 0,第一條給 ξn=1−yn(w⊤zn+b)\xi_n = 1 - y_n(\mathbf{w}^\top\mathbf{z}_n + b)違反量違反胖邊界,少數剛好在邊緣上三角形

三列各補一點說明:

  • 非支援向量。 ξn=0\xi_n = 0 加上原始問題的限制式,得到 yn(w⊤zn+b)≥1y_n(\mathbf{w}^\top\mathbf{z}_n + b) \ge 1,沒有違反。講義寫 'away from'/on fat boundary;課堂上說這些點大部分離胖邊界還有一段距離,極少數會剛好落在邊緣上。
  • free SV。 講義寫 on fat boundary, locates bb。它們就是用來算 bb 的點。
  • bounded SV。 ξn\xi_n 剛好記下這個點違反了多少。課堂上把違反再分成兩種:小小的違反沒有跨過中間那條線,不造成分類錯誤;大大的違反跨到另一邊去,是嚴重的錯誤。兩種都有 αn=C\alpha_n = C。課堂上也提到,極少數剛好在邊緣上的點也可能 αn=C\alpha_n = C,但大部分情況下,看到 αn=C\alpha_n = C 就知道這個點違反了胖邊界。

這也回答了前面例子裡的猜法:有違反(ξn>0\xi_n > 0)的點,第二條互補鬆弛逼得 C−αn=0C - \alpha_n = 0,所以 αn\alpha_n 一定頂到上界。

講義的結論是 αn\alpha_n 可以拿來做資料分析(data analysis)。課堂上的說法是,做完 SVM 之後看 α\alpha 的值就能把手上的點分成三種:哪些可能有雜訊,哪些有幫助,哪些可有可無。六個點的例子裡,C=1C = 1 時頂到上界的正是位置對調的第 3、4 點。

Fun Time:從支援向量的數量估 E_in

題目(第 16 頁): 一份 10000 筆的資料,解完 SVM 之後有 1126 個支援向量,其中 1000 個是 bounded。以 0/1 錯誤衡量,Ein(gSVM)E_{\text{in}}(g_{\text{SVM}}) 可能的範圍是?

  1. 0.0000≤Ein(gSVM)≤0.10000.0000 \le E_{\text{in}}(g_{\text{SVM}}) \le 0.1000
  2. 0.1000≤Ein(gSVM)≤0.11260.1000 \le E_{\text{in}}(g_{\text{SVM}}) \le 0.1126
  3. 0.1126≤Ein(gSVM)≤0.50000.1126 \le E_{\text{in}}(g_{\text{SVM}}) \le 0.5000
  4. 0.1126≤Ein(gSVM)≤1.00000.1126 \le E_{\text{in}}(g_{\text{SVM}}) \le 1.0000

答案:1。 講義的解答是:只有 bounded SV 可能違反胖邊界。ξn≥1\xi_n \ge 1 的違反會造成 0/1 錯誤;ξn<1\xi_n < 1 的違反不會。課堂上用最好與最壞的情況來講:最好的情況是 1000 個 bounded SV 其實都剛好在胖邊界上,沒有任何錯誤,Ein=0E_{\text{in}} = 0;最壞的情況是 1000 個都越過了邊界,Ein=1000/10000=0.1E_{\text{in}} = 1000 / 10000 = 0.1。

把推理接起來:非支援向量與 free SV 的 ξn=0\xi_n = 0,所以 yn⋅score≥1>0y_n \cdot \text{score} \ge 1 > 0,一定分對。會分錯的點只可能在 1000 個 bounded SV 裡,上限是 0.10.1。下限是 0,因為 bounded SV 的 ξn\xi_n 可以全部小於 1。選項 2 把下限設成 0.10.1,等於假設每個 bounded SV 都分錯,並把 126 個 free SV 也算成可能出錯。選項 3 與 4 的下限 0.11260.1126 假設所有支援向量都分錯,更不對。

在六個點的例子裡,C=1C = 1 時 bounded SV 有 2 個,Ein=26E_{\text{in}} = \frac{2}{6},剛好碰到上限;C=120C = \frac{1}{20} 時 bounded SV 有 4 個,其中第 2、5 點的 ξn=35<1\xi_n = \frac{3}{5} < 1 沒有分錯,EinE_{\text{in}} 還是 26\frac{2}{6},低於上限 46\frac{4}{6}。

C 和 γ 怎麼選:交叉驗證,以及支援向量個數給的上界

YouTube:Soft-Margin Support Vector Machine :: Model Selection @ Machine Learning Techniques (機器學習技法)

(影片 00:00–02:08 講用交叉驗證選參數,02:08–05:30 是 leave-one-out 與支援向量個數的關係,05:30–07:28 用支援向量個數做選擇,07:28–08:10 是 Fun Time,之後是總結。)

參數一多,就要做模型選擇

講義第 17 頁放了一張九宮格:九張圖全部用 Gaussian kernel,各配一組不同的 (C,γ)(C, \gamma)。課堂上說明橫軸是不同的 CC,縱軸是不同的 γ\gamma。九張圖的邊界差很多,最上面一列彎得很厲害,最下面一列接近直線。講義的說法是,光是 Gaussian SVM 的 (C,γ)(C, \gamma) 就已經夠複雜,把其他 kernel 或其他參數算進來,組合更多。

怎麼選?講義只寫了一個字:validation。課堂上說這是基石唯一給過的肯定答案,最簡單也最好用的工具就是驗證。

用交叉驗證選

講義第 18 頁在同一張九宮格上標出每一格的交叉驗證誤差 EcvE_{\text{cv}}:

左中右
上列0.35000.35000.32500.32500.32500.3250
中列0.20000.20000.22500.22500.27500.2750
下列0.17500.17500.22500.22500.20000.2000

最小的是左下角的 0.17500.1750,投影片把它標成橘色。課堂上指出,上面那一列看起來很過擬合的邊界,EcvE_{\text{cv}} 也確實比較大。

講義提醒兩件事:

  • Ecv(C,γ)E_{\text{cv}}(C, \gamma) 是 (C,γ)(C, \gamma) 的「不平滑」函數,很難直接最佳化。課堂上的說法是,每一組 (C,γ)(C, \gamma) 送進去會得到一個值,但沒辦法像梯度下降那樣對 CC 與 γ\gamma 求最佳,通常只能送幾組不同的值進去比較。
  • 所以實際的做法是在 (C,γ)(C, \gamma) 的少數幾個格點上做 VV-fold 交叉驗證,挑 EcvE_{\text{cv}} 最小的。

講義的評語是 EcvE_{\text{cv}} 是 soft-margin SVM 非常常用的選擇標準。

leave-one-out 誤差不會超過支援向量的比例

講義第 19 頁先回顧:EloocvE_{\text{loocv}} 就是切成 NN 份的 EcvE_{\text{cv}},每次留一筆資料做驗證,其餘拿去訓練。接著宣稱 SVM 有一個特別的結果:

Eloocv≤#SVNE_{\text{loocv}} \le \frac{\#\text{SV}}{N}

課堂上舉的數字是:一萬筆資料裡有 100 個支援向量,leave-one-out 誤差就不會超過 100/10000=1%100 / 10000 = 1\%。

證明分三步。

第一步:拿掉一個非支援向量,剩下的 α\boldsymbol{\alpha} 仍是最佳解。 假設用全部 NN 筆資料解出的最佳解裡,第 NN 筆的 αN=0\alpha_N = 0。把 (xN,yN)(\mathbf{x}_N, y_N) 拿掉,只用剩下 N−1N - 1 筆資料解 SVM。講義宣稱 (α1,α2,…,αN−1)(\alpha_1, \alpha_2, \dots, \alpha_{N-1}) 仍是這個小問題的最佳解,並提示關鍵是問:如果有更好的呢?課堂上把反證法講完了:假如小問題有一組更好的 N−1N - 1 個 α\alpha,把被拿掉的那個點加回去、配上 αN=0\alpha_N = 0,就得到原本 NN 筆問題的一組更好的解,和「原本的已經是最佳解」矛盾。

本文把中間省略的檢查補上。原本的 (α1,…,αN−1)(\alpha_1, \dots, \alpha_{N-1}) 在小問題裡是合法的,而且目標值不變,因為 αN=0\alpha_N = 0 的那一項在等式限制 ∑nynαn=0\sum_n y_n\alpha_n = 0、在雙重加總、在 ∑nαn\sum_n\alpha_n 裡都沒有貢獻。反過來,小問題的任何一組合法解補上 αN=0\alpha_N = 0,也是大問題的合法解,目標值相同。所以小問題若有目標值更低的解,大問題也會有,這就是矛盾的來源。

第二步:g−=gg^- = g。 記拿掉那一筆之後學到的分類器為 g−g^-。α\boldsymbol{\alpha} 沒有變,w=∑nαnynzn\mathbf{w} = \sum_n\alpha_n y_n\mathbf{z}_n 與由 free SV 算出的 bb 也就沒有變,所以 g−g^- 和原本的 gg 是同一個。講義寫成 SVM: g−=gg^- = g when leaving out non-SV。課堂上說這是之前講 hard-margin 時那個觀察(技法第 2 堂講義的 only SV needed)在最佳化上的解釋:非支援向量拿掉之後,胖邊界一點都不受影響。講義第 19 頁右邊放的也是 hard-margin 那四個點的圖,註明 motivation from hard-margin SVM: only SVs needed。

本文補充:這一步用了兩個講義沒有明說的前提。一是小問題的最佳 α\boldsymbol{\alpha} 只有這一組,或者解算器回傳的剛好是這一組;二是 bb 由 free SV 唯一決定。沒有 free SV 時 bb 只確定在一個範圍內,拿掉一個點等於少了幾條限制,這個範圍只會不變或變寬,g−g^- 就不一定和 gg 完全相同。講義與課堂都沒有處理這些邊角情形,所以這三步是證明的主要想法,還不是每種情形都顧到的嚴格證明。

第三步:逐點算誤差。 第 nn 筆資料對 EloocvE_{\text{loocv}} 的貢獻是 en=err(g−,(xn,yn))e_n = \text{err}(g^-, (\mathbf{x}_n, y_n))。

  • 非支援向量:enon-SV=err(g−,non-SV)=err(g,non-SV)=0e_{\text{non-SV}} = \text{err}(g^-, \text{non-SV}) = \text{err}(g, \text{non-SV}) = 0。最後一個等號是因為非支援向量的 ξn=0\xi_n = 0,沒有違反胖邊界,gg 一定把它分對。
  • 支援向量:拿掉之後 g−g^- 可能改變,分對分錯都有可能,只知道 eSV≤1e_{\text{SV}} \le 1。

平均起來,

Eloocv=1N∑n=1Nen≤1N(0⋅#non-SV+1⋅#SV)=#SVNE_{\text{loocv}} = \frac{1}{N}\sum_{n=1}^{N} e_n \le \frac{1}{N}\big(0\cdot\#\text{non-SV} + 1\cdot\#\text{SV}\big) = \frac{\#\text{SV}}{N}

講義的總結是 scaled #SV bounds leave-one-out CV error。

數值例子:六個點的 leave-one-out

(本文自擬,接續前面的六個點,C=1C = 1。)支援向量有 4 個,上界是 46\frac{4}{6}。實際把每個點輪流拿掉,用剩下五個點重解:

拿掉的點在完整問題裡的類別剩下五點的解對被拿掉的點的分數ene_n
第 1 點(x=0x = 0,−1-1)非支援向量w=12w = \frac{1}{2}、b=−52b = -\frac{5}{2},不變−52-\frac{5}{2},判成 −1-100
第 2 點(x=3x = 3,−1-1)free SVw=27w = \frac{2}{7}、b=−1b = -167−1=−17\frac{6}{7} - 1 = -\frac{1}{7},判成 −1-100
第 3 點(x=4x = 4,+1+1)bounded SVw=1w = 1、bb 在 −7-7 到 −6-6 之間−3-3 到 −2-2 之間,判成 −1-111
第 4 點(x=6x = 6,−1-1)bounded SVw=1w = 1、bb 在 −4-4 到 −3-3 之間22 到 33 之間,判成 +1+111
第 5 點(x=7x = 7,+1+1)free SVw=27w = \frac{2}{7}、b=−137b = -\frac{13}{7}2−137=172 - \frac{13}{7} = \frac{1}{7},判成 +1+100
第 6 點(x=10x = 10,+1+1)非支援向量w=12w = \frac{1}{2}、b=−52b = -\frac{5}{2},不變52\frac{5}{2},判成 +1+100

拿掉第 2 點的那一列可以手算核對。剩下 x=0,4,6,7,10x = 0, 4, 6, 7, 10:猜 x=0x = 0 與 x=7x = 7 是 free SV,x=4x = 4 與 x=6x = 6 頂到上界 1,x=10x = 10 是 0。兩個 free SV 給 0⋅w+b=−10\cdot w + b = -1 與 7w+b=17w + b = 1,所以 b=−1b = -1、w=27w = \frac{2}{7}。等式限制讓兩個 free SV 的 α\alpha 相等,記成 aa:w=4−6+7a=27w = 4 - 6 + 7a = \frac{2}{7},a=1649a = \frac{16}{49},在 0 與 1 之間。再檢查其餘三點:x=10x = 10 的 y⋅score=137≥1y\cdot\text{score} = \frac{13}{7} \ge 1;x=4x = 4 是 17≤1\frac{1}{7} \le 1;x=6x = 6 是 −57≤1-\frac{5}{7} \le 1,都和各自的類別相符。

拿掉第 3 點的那一列沒有 free SV:剩下的資料變成可分,但 hard-margin 的解需要 α=2\alpha = 2,超過上界,於是 x=6x = 6 與 x=7x = 7 兩點都頂在 C=1C = 1,bb 只確定在一個範圍內。範圍裡的每個 bb 都把 x=4x = 4 判成 −1-1,所以 e3=1e_3 = 1 沒有疑義。

這個結果代表什麼。 Eloocv=0+0+1+1+0+06=26E_{\text{loocv}} = \frac{0 + 0 + 1 + 1 + 0 + 0}{6} = \frac{2}{6},確實不超過 46\frac{4}{6}。兩個非支援向量拿掉之後解完全不變,貢獻是 0,和證明的第一、二步一致。四個支援向量拿掉之後解都變了,但只有兩個因此被分錯,另外兩個的貢獻還是 0。上界把每個支援向量都當成「會錯」來算,所以通常比實際的 EloocvE_{\text{loocv}} 寬鬆。

用支援向量的個數做安全檢查

講義第 20 頁在同一張九宮格上改標每一格的支援向量個數 nSV:

左中右
上列383837373737
中列272721211717
下列212118181919

課堂上指出,上面那三個比較糟的例子支援向量很多,下面比較簡單的例子相對少。講義提醒三件事:

  • nSV(C,γ)\text{nSV}(C, \gamma) 同樣是不平滑的函數,很難最佳化。
  • 它只是上界(just an upper bound!)。課堂上的說法是,我們不知道實際的 leave-one-out 誤差是多少,只能從支援向量的個數估一個上限;對上限做最佳化,可能只是把上限做到最好,不代表把真正的誤差做到最好。
  • 所以它的用途是排除危險的模型:在幾個格點上看 nSV,把支援向量特別多的排除掉。

本文對照兩張表:nSV 最小的是中列右邊那一格(17,投影片標成橘色),它的 EcvE_{\text{cv}} 是 0.27500.2750,在九格裡由小到大排第六;EcvE_{\text{cv}} 最小的左下角(0.17500.1750),nSV 是 21。照 nSV 挑和照 EcvE_{\text{cv}} 挑會選到不同的格子。另一方面,nSV 最大的上列三格(38、37、37)也正是 EcvE_{\text{cv}} 最大的三格。這兩張表剛好示範了講義的用法:nSV 用來排除,不用來做最後的決定。

講義的結論是,nSV 常在計算 EcvE_{\text{cv}} 太花時間時當作安全檢查(safety check)。課堂上補充了兩點:支援向量的個數在訓練完就有了,不用額外計算;排除掉危險的組合之後,可以在剩下的組合上再做交叉驗證,選出更合適的參數。

Fun Time:哪個不可能是 leave-one-out 誤差

題目(第 21 頁): 一份 10000 筆的資料,用某組參數解完 SVM 之後有 1126 個支援向量,其中 1000 個是 bounded。下面哪一個不可能是這組參數的 EloocvE_{\text{loocv}}?

  1. 0.00000.0000
  2. 0.08050.0805
  3. 0.11110.1111
  4. 0.55660.5566

答案:4。 講義的解答只有一句:EloocvE_{\text{loocv}} 的上界是 0.11260.1126。它的來源是 #SV/N=1126/10000=0.1126\#\text{SV} / N = 1126 / 10000 = 0.1126。前三個選項都不超過 0.11260.1126,上界排除不了它們;0.55660.5566 超過了,不可能。

本文補充:這題和「從支援向量的數量估 E_in」那題 Fun Time 用的是同一組數字,上限卻不一樣。EinE_{\text{in}} 的上限是 bounded SV 的比例 0.10.1,EloocvE_{\text{loocv}} 的上限是全部支援向量的比例 0.11260.1126。差別在 free SV:在 gg 底下它們剛好在胖邊界上,一定分對;可是把一個 free SV 拿掉之後重新訓練,g−g^- 可能改變,就不保證還分得對。所以題目裡「1000 個是 bounded」這個資訊在這一題用不到。

這堂的總結

講義第 22 頁把四節各收成一句:原始問題加上違反量 ξn\xi_n;對偶問題替 αn\alpha_n 加上上界 CC;bounded 與 free SV 可以拿來做資料分析;模型選擇用交叉驗證,或用 nSV 近似。課堂上說,從 hard-margin、對偶、kernel 一路推到 soft-margin,這四堂是最流行的 soft-margin SVM 的完整介紹。講義對下一堂的預告是 other kernel models for soft binary classification。

自我檢查

1. 分類器是 g(x)=sign(x1−x2−1)g(\mathbf{x}) = \text{sign}(x_1 - x_2 - 1),也就是 w=(1,−1)\mathbf{w} = (1, -1)、b=−1b = -1。四個點:(3,1)(3, 1) 標 +1+1、(2,12)(2, \frac{1}{2}) 標 +1+1、(1,1)(1, 1) 標 +1+1、(0,2)(0, 2) 標 −1-1。各自的 ξn\xi_n 是多少?哪些違反胖邊界,哪些被分錯?

答案:四個點的 yn(w⊤xn+b)y_n(\mathbf{w}^\top\mathbf{x}_n + b) 依序是 11、12\frac{1}{2}、−1-1、33,所以 ξn\xi_n 依序是 00、12\frac{1}{2}、22、00,總和 52\frac{5}{2}。第二個點違反胖邊界但沒有分錯(ξ<1\xi < 1);第三個點違反而且分錯(ξ>1\xi > 1);第一個點剛好在邊緣上;第四個點在胖邊界外側。

2. 兩筆一維資料:x1=1x_1 = 1 標 +1+1,x2=−1x_2 = -1 標 −1-1。分別對 C=1C = 1 與 C=14C = \frac{1}{4} 解 soft-margin 對偶問題,求 α\boldsymbol{\alpha}、ww、bb。

答案:等式限制給 α1=α2=α\alpha_1 = \alpha_2 = \alpha,w=α⋅1−α⋅(−1)=2αw = \alpha\cdot 1 - \alpha\cdot(-1) = 2\alpha,目標函數是 12(2α)2−2α=2α2−2α\frac{1}{2}(2\alpha)^2 - 2\alpha = 2\alpha^2 - 2\alpha,沒有上界時最小值在 α=12\alpha = \frac{1}{2}。C=1C = 1 時 12<C\frac{1}{2} < C,兩個點都是 free SV,w=1w = 1,b=y1−wx1=0b = y_1 - wx_1 = 0,和 hard-margin 的解相同。C=14C = \frac{1}{4} 時 12\frac{1}{2} 超過上界,目標函數在 [0,14][0, \frac{1}{4}] 上遞減,所以 α=14\alpha = \frac{1}{4},兩個點都是 bounded SV,w=12w = \frac{1}{2}。沒有 free SV,bb 只能定出範圍:ξ1=1−(w+b)≥0\xi_1 = 1 - (w + b) \ge 0 給 b≤12b \le \frac{1}{2},ξ2=1−(w−b)≥0\xi_2 = 1 - (w - b) \ge 0 給 b≥−12b \ge -\frac{1}{2}。範圍內原始問題的目標值都是 18+14(2−2w)=38\frac{1}{8} + \frac{1}{4}(2 - 2w) = \frac{3}{8},等於對偶的 ∑αn−12w2=12−18=38\sum\alpha_n - \frac{1}{2}w^2 = \frac{1}{2} - \frac{1}{8} = \frac{3}{8}。

3. 用自己的話說明:αn≤C\alpha_n \le C 這條限制是哪一步推出來的?如果某個 αn>C\alpha_n > C,內層的 min⁡b,w,ξL\min_{b,\mathbf{w},\boldsymbol{\xi}}\mathcal{L} 是多少?

判準:答案要提到 L\mathcal{L} 對 ξn\xi_n 是一次式,係數是 C−αn−βnC - \alpha_n - \beta_n;對 ξn\xi_n 偏微分為 0 給出 βn=C−αn\beta_n = C - \alpha_n,而 βn≥0\beta_n \ge 0 就是 αn≤C\alpha_n \le C。若 αn>C\alpha_n > C,因為 βn≥0\beta_n \ge 0,係數 C−αn−βnC - \alpha_n - \beta_n 一定是負的,把 ξn\xi_n 推向正無限大,內層的 min 是 −∞-\infty,外層的 max 不會選它。

4. C=2C = 2,解完 SVM 得到 8 個點的 αn\alpha_n 依序是 0,0,0,0.4,1.6,2,2,20, 0, 0, 0.4, 1.6, 2, 2, 2。哪些點可以拿來算 bb?EinE_{\text{in}} 與 EloocvE_{\text{loocv}} 各自最多是多少?

答案:第 4、5 點是 free SV(0<αn<20 < \alpha_n < 2),可以算 bb。前三點是非支援向量,後三點是 bounded SV。只有 bounded SV 可能分錯,Ein≤38E_{\text{in}} \le \frac{3}{8}。支援向量共 5 個,Eloocv≤58E_{\text{loocv}} \le \frac{5}{8}。

5. 講義第 18 頁與第 20 頁的兩張九宮格裡,nSV 最小的那一格 EcvE_{\text{cv}} 是 0.27500.2750,EcvE_{\text{cv}} 最小的那一格 nSV 是 21。有人主張「直接挑 nSV 最小的參數就好,省掉交叉驗證」。這個主張哪裡有問題?nSV 該怎麼用?

判準:答案要說出 #SV/N\#\text{SV}/N 只是 EloocvE_{\text{loocv}} 的上界,上界最小不代表誤差最小,這兩張表就是反例;nSV 的用途是排除支援向量特別多的危險組合(例如上列的 38、37、37),剩下的再用交叉驗證選。能進一步說出「支援向量的貢獻可能是 0 也可能是 1,上界把它們全算成 1」更好。

練習與對應閱讀

動手做。 用 LIBSVM 或 scikit-learn 的 SVC 在任何一份二元分類資料上跑 3×33 \times 3 的 (C,γ)(C, \gamma) 格點,同時記下 5-fold 交叉驗證誤差與 #SV/N\#\text{SV}/N。看 #SV/N\#\text{SV}/N 最大的格點,交叉驗證誤差是不是也偏高;再看兩者各自最小的格點是不是同一個。這就是自己重做講義第 18 頁與第 20 頁的兩張表。

兩個學期的對應週次。 Fall 2024 課程頁把 kernel SVM 與 soft-margin SVM 排在同一週(W10,11/04),這堂的投影片代號是 204u。Fall 2026 課程頁同樣排在 W10(11/11)。本文只用 MOOC 版講義。

教科書。 兩份課程頁把這一週標在 Learning from Data(LFD)的 e-8.3 與 e-8.4,soft margin 對應 e-8.4。e-Chapter 8 是 LFD 的線上章節。

作業。 Fall 2024 HW6(2024-11-18 發布、12-02 截止,12 題加 1 題 bonus,沒有官方解答)和這堂相關的題目:

題主題對應這堂的哪裡
Q2所有點都是 bounded SV 時,最小的 b∗b^* 是多少算 bb 要用 free SV;沒有 free SV 時 bb 是一個範圍
Q5把常數 1 補進 xn\mathbf{x}_n 再解 soft-margin SVM,解是否不變原始問題與對偶問題
Q6用原點當錨點的 one-class SVM,推對偶問題對偶推導的四個步驟
Q10MNIST 3 對 7,多項式 kernel,C∈{0.1,1,10}C \in \{0.1, 1, 10\}、Q∈{2,3,4}Q \in \{2, 3, 4\} 的支援向量個數CC 與 nSV
Q11同資料,Gaussian kernel,CC 與 γ\gamma 各取 {0.1,1,10}\{0.1, 1, 10\},算 margin 1/∥w∥1/\lVert\mathbf{w}\rVert不同 CC 的 Gaussian SVM
Q12固定 C=1C = 1,隨機抽 200 筆當驗證資料選 γ\gamma,重複 128 次畫頻率圖用驗證選參數
Q13(bonus)推導 soft-margin SVM 對偶問題的對偶,和原始問題比較對偶推導

程式題的資料是 LIBSVM 網站上的 mnist.scale。題目建議用 LIBSVM,並提醒兩件事:不要讓套件自動縮放資料,否則等於換了 kernel;要自己確認套件解的是課堂上的對偶形式,數值精度也夠。Q10 到 Q12 可以用兩個套件(例如 LIBSVM 與 scikit-learn 的 SVC,後者底層也是 LIBSVM)交叉比對支援向量個數與 margin。做 Q2 之前,先把自我檢查第 2 題 C=14C = \frac{1}{4} 的情形自己算一遍。整份作業的導讀在技法作業與期末專題。

延伸閱讀。 CS229 主講義第 6 章用另一套記號寫支援向量機,可以和這堂對照。Caltech Learning from Data 是同一本教科書的英文課。

下一堂。 技法第 5 堂:Kernel 邏輯迴歸 從這堂的 ξn=max⁡(0,1−yn(w⊤zn+b))\xi_n = \max(0, 1 - y_n(\mathbf{w}^\top\mathbf{z}_n + b)) 出發,把 soft-margin SVM 重新讀成一個正則化模型。

課程影片來源

原始影片:Motivation and Primal Problem、Dual Problem、Messages behind Soft-Margin SVM、Model Selection

查核日期:2026-10-13。影片 ID、標題與長度於當天從官方播放清單取得;YouTube 上沒有字幕軌,本文的課堂說法來自自行轉錄的逐字稿。

更新紀錄

  • 2026-10-13:改為一堂一篇,這篇只寫技法第 4 堂,依講義與影片逐字稿重寫。

參考資料