01
畫一條線:先學會看超平面的臉色 Linear discriminants & decision hyperplanes (3.2)
這一站把「一條線」拆成三件事:方程、方向、距離。後面每個演算法都在調這些參數。
🐘 生活類比:機場安檢線
地板上的線是決策邊界。線的一側是「可通過」,另一側是「請留下」。$\boldsymbol{w}$ 不是線本身,而是垂直指向線的箭頭 ;它告訴我們哪個方向會讓分數增加。
取決策線上的兩點 $\boldsymbol{x}_1,\boldsymbol{x}_2$,兩點都讓 $g=0$,相減後:
$$\boldsymbol{w}^{T}(\boldsymbol{x}_1-\boldsymbol{x}_2)=0 \qquad (3.2)$$
所以線上任意方向都和 $\boldsymbol{w}$ 垂直。這就是「法向量」的來源,不是背公式背出來的。
圖3.1 決策的幾何:一側 g>0、一側 g<0
距離不是 $|g|$ 本身:要除以箭頭長度
原文先給兩個幾何量。原點到線的距離是:
$$d=\frac{|w_0|}{\sqrt{w_1^2+w_2^2}} \qquad (3.3)$$
任意點 $\boldsymbol{x}$ 到線的有號距離大小是:
$$z=\frac{|g(\boldsymbol{x})|}{\sqrt{w_1^2+w_2^2}} \qquad (3.4)$$
因此 $|g(\boldsymbol{x})|$ 只能當作「未正規化信心分數」;真正的歐氏距離還要除以 $\|\boldsymbol{w}\|$。$g>0$ 與 $g<0$ 分別在兩側;若 $w_0=0$,線穿過原點。
數字例子: 令 $\boldsymbol{w}=[2,1]^T$、$w_0=-3$、$\boldsymbol{x}=[2,1]^T$。
$$g(\boldsymbol{x})=2,\qquad z=\frac{2}{\sqrt{5}}\approx0.894,\qquad d=\frac{3}{\sqrt{5}}\approx1.342$$
數字大代表什麼? $|g|$ 大通常表示離邊界遠;但若換了 $\boldsymbol{w}$ 的縮放,$|g|$ 也會跟著變,所以比較模型時要看正規化距離。
互動 Demo 1|拉一條線,親眼看「距離=信心」 兩個滑桿:角度(傾斜)與偏移(離原點)
把滑鼠移進圖裡,會即時報出「這個點離線多遠、判它哪邊」。
你應該能回答
① 為什麼 $\boldsymbol{w}$ 垂直於超平面? ② $|g|$ 和真正距離差在哪? ③ $w_0=0$ 時幾何上發生什麼事?
02
感知機:錯一題、訂正一題,直到全對 The perceptron algorithm (3.3)
原文先處理「線性可分」:有一條正確的線存在,感知機負責把它找出來。
1. 先把「不過原點的線」搬進擴充空間
若 $\boldsymbol{w}^{*T}\boldsymbol{x}=0$ 能分開兩類,則 $\omega_1$ 在正側、$\omega_2$ 在負側。一般有 threshold 的線也能用擴充向量處理:
$$\boldsymbol{x}'=[\boldsymbol{x}^{T},1]^T,\qquad \boldsymbol{w}'=[\boldsymbol{w}^{*T},w_0^*]^T$$
$$\boldsymbol{w}^{*T}\boldsymbol{x}+w_0^*=\boldsymbol{w}'^{T}\boldsymbol{x}'$$
這個小技巧讓後面所有式子看起來都像「過原點的超平面」。最後一個座標其實就是截距的插座。
2. Perceptron cost:只把錯題加總
令 $Y$ 是目前被分錯的樣本集合;$\delta_x=-1$($\omega_1$)或 $+1$($\omega_2$)。在錯誤樣本上,下面的乘積會是正數;全對時 $Y=\varnothing$,成本變成 0:
$$J(\boldsymbol{w})=\sum_{\boldsymbol{x}\in Y}\delta_x\boldsymbol{w}^{T}\boldsymbol{x} \qquad (3.6)$$
$J$ 是連續、分段線性的函數。當某個點跨過邊界,$Y$ 會改變,梯度在那個位置不連續;所以它不是一個可以放心套用平滑梯度下降理論的普通函數。
$$\boldsymbol{w}(t+1)=\boldsymbol{w}(t)-\rho_t\sum_{\boldsymbol{x}\in Y}\delta_x\boldsymbol{x} \qquad (3.9)$$
更新方向很有直覺:被誤判的點會把 $\boldsymbol{w}$ 往「修正它」的方向推。
3. 原文演算法骨架
隨機選 $\boldsymbol{w}(0)$ 與正學習率 $\rho_0$。
掃過所有樣本,找出 $\delta_{x_i}\boldsymbol{w}^{T}\boldsymbol{x}_i\geq0$ 的錯誤集合 $Y$。
依 (3.9) 更新;調整 $\rho_t$;重複。
$Y=\varnothing$ 才停止。
一次把整批錯誤加總,是 batch 形式;下面的 reward-and-punishment 則是一個樣本一個樣本修。
互動 Demo 2|親眼看決策線「被轉」直到全對 批次式感知機(3.9),你按一次就轉一次
步數 0
誤判 —
ρ = 0.1
w = [0,0,0 ]
重來
轉一步 ⏭
自動播 ▶
被分錯的點會掛紅圈;每按一次 Step,紫線就朝「錯的人」轉一點。
4. 為什麼會收斂?把證明讀成「距離帳本」
原文不是只說「實驗看起來會停」。它選一個真正的解 $\boldsymbol{w}^*$,比較 $\boldsymbol{w}(t)$ 和 $\alpha\boldsymbol{w}^*$ 的距離。更新後平方距離可被壓成:
$$\|\boldsymbol{w}(t+1)-\alpha\boldsymbol{w}^*\|^2
\leq \|\boldsymbol{w}(t)-\alpha\boldsymbol{w}^*\|^2+\rho_t^2\beta^2-2\rho_t\alpha|\gamma| \qquad (3.15)$$
$\beta^2$ 是所有可能錯誤子集合的修正向量最大平方長度;$\gamma<0$ 則記錄真解對錯誤樣本提供的負向量量。選 $\alpha=\beta^2/(2|\gamma|)$ 後,累加得到 (3.16)。要讓「累積前進量」壓過「累積噪聲」,學習率需滿足:
$$\lim_{t\to\infty}\sum_{k=0}^{t}\rho_k=\infty,\qquad
\lim_{t\to\infty}\sum_{k=0}^{t}\rho_k^2<\infty \qquad (3.17\text{--}3.18)$$
第一條說步子總和不能太小;第二條說平方噪聲總和要有限。典型選擇是 $\rho_t=c/(t+1)$。在適當有界條件下,常數 $\rho$ 也能收斂,但速度與步幅很敏感。重點:收斂保證的前提是線性可分 ,而且解不一定唯一。
5. Example 3.1:一次更新真的把線轉正
目前權重是 $[1,1,-0.5]^T$、$\rho=0.7$;被誤判的兩點是 $[0.4,0.05]^T$($\delta=-1$)與 $[-0.2,0.75]^T$($\delta=+1$)。把兩個錯誤一起放入 (3.9):
$$\boldsymbol{w}(t+1)=\begin{bmatrix}1\\1\\-0.5\end{bmatrix}
-0.7(-1)\begin{bmatrix}0.4\\0.05\\1\end{bmatrix}
-0.7(+1)\begin{bmatrix}-0.2\\0.75\\1\end{bmatrix}
=\begin{bmatrix}1.42\\0.51\\-0.5\end{bmatrix}$$
新線是 $1.42x_1+0.51x_2-0.5=0$,課本指出它把所有點分對,演算法停止。
圖3.3 Example 3.1:更新後線從虛線轉到實線、全對
6. Reward-and-punishment:單筆更新版
樣本依序進來。$\omega_1$ 被錯判就加 $\rho\boldsymbol{x}_{(t)}$;$\omega_2$ 被錯判就減;分對就完全不動:
$$\boldsymbol{w}(t+1)=\begin{cases}
\boldsymbol{w}(t)+\rho\boldsymbol{x}_{(t)},&\boldsymbol{x}_{(t)}\in\omega_1\ \text{且}\ \boldsymbol{w}^{T}(t)\boldsymbol{x}_{(t)}\leq0\\
\boldsymbol{w}(t)-\rho\boldsymbol{x}_{(t)},&\boldsymbol{x}_{(t)}\in\omega_2\ \text{且}\ \boldsymbol{w}^{T}(t)\boldsymbol{x}_{(t)}\geq0\\
\boldsymbol{w}(t),&\text{otherwise}
\end{cases} \qquad (3.21\text{--}3.23)$$
它就是「答對獎勵不扣分、答錯處罰並訂正」的學習機制。
圖3.2 感知機的幾何解讀:權重朝被誤判之點的方向轉
圖3.4 Example 3.2:四點與解得直線 x1=x2
7. Example 3.2:四點逐步得到 $x_1=x_2$
類別 $\omega_1$:$(-1,0),(0,1)$;類別 $\omega_2$:$(0,-1),(1,0)$。擴充成三維,$\rho=1$、$\boldsymbol{w}(0)=[0,0,0]^T$:
步驟 當下內積 更新後權重
1,$(-1,0,1)$ 0,錯 $[-1,0,1]^T$
2,$(0,1,1)$ 1,對 不變
3,$(0,-1,1)$ 1,錯 $[-1,1,0]^T$
4,$(1,0,1)$ -1,對 不變
再掃過四個點都不需修正,得到 $-x_1+x_2=0$,也就是 $x_1=x_2$。
圖3.4 Example 3.2:四點與解得直線 x1=x2
8. Perceptron 是一個神經元
分類規則是 $\boldsymbol{w}^{T}\boldsymbol{x}+w_0>0$ 判給 $\omega_1$、小於 0 判給 $\omega_2$。網路實作就是:輸入乘 synaptic weights → 加總 threshold → 經過 hard limiter step function。
$$f(a)=\begin{cases}-1,&a<0\\+1,&a>0\end{cases},\qquad a=\boldsymbol{w}^{T}\boldsymbol{x}+w_0 \qquad (3.24)$$
輸出也可以改成 0/1。這個 McCulloch–Pitts 型神經元,是後面更複雜學習網路的基本零件。
圖3.5 感知機(神經元):線性加總+激活函數
9. 不可分時:Pocket 先把最好成績放口袋
若類別不可線性分,普通感知機會一直更新、不保證停止。Pocket algorithm 仍照感知機更新,但另外保存目前「分對最多」的 $\boldsymbol{w}_s$ 與歷史正確數 $b_s$:
隨機初始化 $\boldsymbol{w}(0)$,口袋向量與計數歸零。 做一次感知機更新,計算新權重分對的樣本數 $b$。 若 $b>b_s$,把新權重放進口袋;繼續迭代。
原文指出,在適當條件下它以機率一收斂到錯誤數最少的解。它不是把不可分資料變魔術,而是把「永遠找不到零錯誤」改成「留住目前最好的線」。
10. Kesler's construction:把多類問題搬成二類
多類時,每一類有一個 $g_i(\boldsymbol{x})=\boldsymbol{w}_i^T\boldsymbol{x}$;若 $\boldsymbol{x}\in\omega_i$,希望 $g_i>g_j$ 對所有 $j\ne i$。對每一個 $i,j$ 建立 block vector:
$$\boldsymbol{x}_{ij}=[\boldsymbol{0}^T,\ldots,\boldsymbol{x}^T,\ldots,-\boldsymbol{x}^T,\ldots,\boldsymbol{0}^T]^T$$
$$\boldsymbol{w}=[\boldsymbol{w}_1^T,\ldots,\boldsymbol{w}_M^T]^T,\qquad \boldsymbol{w}^T\boldsymbol{x}_{ij}>0$$
於是原本的 $M$ 類比較,被改寫成擴充空間裡的「所有 block vector 都在正側」的二類感知機問題。
Example 3.3: 三類分別落在三個象限。課本以 $\rho_t=0.5$ 的感知機跑 4 次,得到:
$$\boldsymbol{w}_1=[5.13,3.60,1.00]^T,\quad
\boldsymbol{w}_2=[-0.05,-3.16,-0.41]^T,\quad
\boldsymbol{w}_3=[-3.84,1.28,0.69]^T$$
這個建構法的代價是維度變成 $(l+1)M$,樣本數也變成 $(M-1)N$;類別多時,計算量會明顯增加。
你應該能回答
① 感知機 cost 為何是分段線性? ② 收斂條件兩個無窮和各自防什麼? ③ Pocket 解決什麼問題? ④ Kesler 如何把多類轉成二類?
03
最小平方家族:從「挑錯題」升級成「績效制」 Least-squares methods (3.4)
感知機追求零錯誤,但不可分資料不答應。最小平方改問:所有誤差平方加起來,怎麼最小?
1. MSE:允許犯錯,但要付平方代價
二類 desired response 設成 $y=+1$ 或 $-1$;模型輸出是 $\boldsymbol{w}^{T}\boldsymbol{x}$。MSE 把整體期望誤差平方最小化:
$$J(\boldsymbol{w})=E\left[(y-\boldsymbol{x}^{T}\boldsymbol{w})^2\right],\qquad
\hat{\boldsymbol{w}}=\operatorname*{arg\,min}_{\boldsymbol{w}}J(\boldsymbol{w}) \qquad (3.26\text{--}3.27)$$
若把兩類的條件分布展開,這就是 $\omega_1$ 的 $(1-\boldsymbol{x}^{T}\boldsymbol{w})^2$ 加上 $\omega_2$ 的 $(1+\boldsymbol{x}^{T}\boldsymbol{w})^2$,並用先驗機率加權(3.28)。
$$\frac{\partial J}{\partial\boldsymbol{w}}=2E\left[\boldsymbol{x}(y-\boldsymbol{x}^{T}\boldsymbol{w})\right]=\boldsymbol{0} \qquad (3.29)$$
$$\hat{\boldsymbol{w}}=R_x^{-1}E[\boldsymbol{x}y],\qquad R_x=E[\boldsymbol{x}\boldsymbol{x}^{T}] \qquad (3.30\text{--}3.31)$$
$R_x$ 是 autocorrelation matrix;$E[\boldsymbol{x}y]$ 是 cross-correlation。前提是 $R_x$ 可逆。
圖3.6 最小平方 = 向量 y 在 x 張開子空間上的正交投影
2. 正交投影:MSE 為何長這樣?
把隨機變數當成向量,內積用 $E[uv]$ 定義。模型 $\boldsymbol{w}^{T}\boldsymbol{x}$ 是由輸入座標張成的子空間中的一個向量。最好的解讓殘差 $y-\boldsymbol{w}^{T}\boldsymbol{x}$ 和每個輸入 $x_i$ 都垂直:
$$E\left[\boldsymbol{x}(y-\boldsymbol{x}^{T}\hat{\boldsymbol{w}})\right]=\boldsymbol{0}$$
所以 MSE 不是神秘的黑盒:它把 $y$ 正交投影到輸入能表示的子空間。若真實關係不在這個子空間裡,剩下的就是不可消除的投影誤差。
3. 多類 MSE:一個輸出變成 one-hot 向量
$M$ 類時,令 $y_i=1$(屬於 $\omega_i$)或 0(不屬於),$W=[\boldsymbol{w}_1,\ldots,\boldsymbol{w}_M]$。一次最小化所有輸出的平方誤差:
$$\hat W=\operatorname*{arg\,min}_{W}E\left[\|\boldsymbol{y}-W^T\boldsymbol{x}\|^2\right]
=\operatorname*{arg\,min}_{W}E\left[\sum_{i=1}^{M}(y_i-\boldsymbol{w}_i^T\boldsymbol{x})^2\right] \qquad (3.33)$$
它等價於 $M$ 個獨立的 scalar MSE 問題。最後選輸出最大的類別。
4. 不知道期望值怎麼辦?Robbins–Monro → LMS
理論解需要 $R_x$ 與 cross-correlation,但真實 pdf 通常不知道。隨機近似用單筆樣本替代期望:
$$\hat{\boldsymbol{w}}(k)=\hat{\boldsymbol{w}}(k-1)+\rho_kF(\boldsymbol{x}_k,\hat{\boldsymbol{w}}(k-1)) \qquad (3.34)$$
$$\sum_{k=1}^{\infty}\rho_k=\infty,\qquad \sum_{k=1}^{\infty}\rho_k^2<\infty \qquad (3.35\text{--}3.36)$$
第一條不讓學習太早凍結;第二條讓累積噪聲有限,於是 $\rho_k\to0$,估計值以機率、也以 MSE 意義趨近真解(3.37–3.39)。最簡單的平均值例子是:
$$\hat w(k)=\hat w(k-1)+\frac{1}{k}[x_k-\hat w(k-1)]=\frac{1}{k}\sum_{r=1}^{k}x_r$$
套回分類問題,就是 LMS/Widrow–Hoff:
$$\hat{\boldsymbol{w}}(k)=\hat{\boldsymbol{w}}(k-1)+\rho_k\boldsymbol{x}_k\left(y_k-\boldsymbol{x}_k^T\hat{\boldsymbol{w}}(k-1)\right) \qquad (3.40)$$
若用固定 $\rho$,只要 $0<\rho<2/\operatorname{trace}(R_x)$,平均值仍趨近 MSE 解,但方差會停在一個非零常數(3.41)。$\rho$ 小:穩但慢;$\rho$ 大:快但抖。固定步幅的好處是資料統計慢慢漂移時,模型還能追蹤。
Adaline: LMS 訓練的是沒有 activation 的線性 neuron;訓練完成後,才在加總器後面接 hard limiter。它和感知機長得像,但學習規則不同。
互動 Demo 3|你拉的線 vs 最小平方最優線(SSE 擂台賽) 就是課本 Example 3.4 那 10 個點;噪音拉高=資料開始「造反」
你的 SSE —
最優 w = [— ]
最優 SSE —
噪音 10
努力把你的粉線拉到跟綠線重疊——試著輸給電腦一次,你就懂「最優」的意思了。
5. LS/SSE:把期望值換成有限訓練集
有 $N$ 筆資料時,直接最小化誤差平方和:
$$J(\boldsymbol{w})=\sum_{i=1}^{N}(y_i-\boldsymbol{x}_i^T\boldsymbol{w})^2
=\sum_{i=1}^{N}e_i^2 \qquad (3.42)$$
$$\left(\sum_i\boldsymbol{x}_i\boldsymbol{x}_i^T\right)\hat{\boldsymbol{w}}=\sum_i\boldsymbol{x}_iy_i \qquad (3.43)$$
把樣本排成 $X$ 的列、desired response 排成 $\boldsymbol{y}$:
$$X=\begin{bmatrix}\boldsymbol{x}_1^T\\\boldsymbol{x}_2^T\\\vdots\\\boldsymbol{x}_N^T\end{bmatrix},\qquad
(X^TX)\hat{\boldsymbol{w}}=X^T\boldsymbol{y},\qquad
\hat{\boldsymbol{w}}=(X^TX)^{-1}X^T\boldsymbol{y}=X^+\boldsymbol{y} \qquad (3.44\text{--}3.45)$$
$X^+$ 是 pseudoinverse;只有 $X^TX$ 可逆、$X$ 滿 column rank 時,上面的顯式逆矩陣才合法。當 $N>l$,通常沒有一條線通過所有點,偽逆給的是平方和最小的折衷。
6. Example 3.4:不可分資料也能算出一條最好的線
課本給兩類各 5 個二維點,追加常數 1 後得到 $10\times3$ 的 $X$;desired response 是前五個 $+1$、後五個 $-1$:
$$X^TX=\begin{bmatrix}2.8&2.24&4.8\\2.24&2.41&4.7\\4.8&4.7&10\end{bmatrix},\qquad
X^T\boldsymbol{y}=\begin{bmatrix}-1.6\\0.1\\0\end{bmatrix}$$
$$[w_1,w_2,w_0]=[-3.218,\ 0.241,\ 1.431]$$
這條線不可能零錯誤,但它的總平方誤差已經是所有線性模型中最小。這是「最佳」不等於「全對」的第一個重要示範。
圖3.7 Example 3.4:最小誤差平方和的分類線(資料不可分)
你應該能回答
① MSE 正規方程的幾何意義? ② LMS 為何需要遞減步幅?固定步幅何時反而有用? ③ 偽逆在 $N>l$ 時替我們解決什麼問題?
04
MSE 的隱藏技能:條件平均、後驗與 bias–variance MSE revisited (3.5)
這一站把上一站的線性公式放回機率世界:MSE 的最佳答案其實是條件平均;分類時,one-hot 的條件平均就是後驗機率。
1. Regression:最好的平方誤差預測是條件平均
先不限定模型是直線。給定觀測到的 $\boldsymbol{x}$,想用某個 $\tilde{\boldsymbol{y}}$ 預測 $\boldsymbol{y}$:
$$\hat{\boldsymbol{y}}=\operatorname*{arg\,min}_{\tilde{\boldsymbol{y}}}E\left[\|\boldsymbol{y}-\tilde{\boldsymbol{y}}\|^2\right] \qquad (3.46)$$
$$\hat{\boldsymbol{y}}=E[\boldsymbol{y}\mid\boldsymbol{x}]=\int\boldsymbol{y}\,p(\boldsymbol{y}\mid\boldsymbol{x})\,d\boldsymbol{y} \qquad (3.47)$$
證明就是平方展開:拿任意估計 $\tilde{\boldsymbol{y}}$ 與條件平均比較,交叉項的期望為 0,剩下一個非負的距離平方:
$$E\left[\|\boldsymbol{y}-\tilde{\boldsymbol{y}}\|^2\right]
=E\left[\|\boldsymbol{y}-\hat{\boldsymbol{y}}\|^2\right]+\|\hat{\boldsymbol{y}}-\tilde{\boldsymbol{y}}\|^2 \geq E\left[\|\boldsymbol{y}-\hat{\boldsymbol{y}}\|^2\right] \qquad (3.48\text{--}3.50)$$
因此 regression function $E[\boldsymbol{y}\mid\boldsymbol{x}]$ 一般可以是非線性的;只有加上共同 Gaussian 等條件時,才會退化成線性函數。
2. 1-of-M 輸出:MSE 偷偷估出 posterior
多類標籤用 one-hot 向量 $\boldsymbol{y}$:正確類別是 1,其餘是 0。令 $\boldsymbol{g}(\boldsymbol{x})$ 是模型輸出:
$$J=E\left[\sum_{i=1}^{M}(g_i(\boldsymbol{x})-y_i)^2\right] \qquad (3.51)$$
把平方項加減 $\left(E[y_i\mid\boldsymbol{x}]\right)^2$,可以分成「模型和條件平均的距離」以及與 $g_i$ 無關的條件變異:
$$J=E\left[\sum_i\left(g_i(\boldsymbol{x})-E[y_i\mid\boldsymbol{x}]\right)^2\right]
+E\left[\sum_i\operatorname{Var}(y_i\mid\boldsymbol{x})\right] \qquad (3.56)$$
$$E[y_i\mid\boldsymbol{x}]=P(\omega_i\mid\boldsymbol{x}) \qquad (3.57\text{--}3.58)$$
所以只要用 1/0 目標做 MSE,理想上 $g_i(\boldsymbol{x})$ 就是第 $i$ 類的後驗機率估計;再取最大的 $g_i$ 就能做 Bayesian-style decision。限制不在這個結論,而在於你選的模型(例如直線)能不能把真正的非線性 posterior 表示好。
重要區分: 「MSE cost 有估 posterior 的性質」和「線性模型一定估得準」是兩句不同的話。前者是代價函數的結論,後者取決於模型容量。
互動 Demo 4|同一個真相:直線 vs 高階多項式(bias–variance 兩難) 把次數拉高,看擬合「貼死資料」卻一換資料就翻臉
多項式次數 d = 2
真值 f(x) = sin(5x) + 0.6x
結論 —
灰線 = 40 組不同訓練集各自的擬合;粗紅線 = 它們的平均;藍虛線 = 你沒看過的真值。灰色帶越寬,代表「換份資料就大變樣」。
3. Bias–variance:同一個真相,換資料集就換一條線
訓練資料集記成 $\mathcal{D}$,模型其實是 $g(\boldsymbol{x};\mathcal{D})$。對所有可能的同大小資料集平均:
$$E_{\mathcal{D}}\left[(g(\boldsymbol{x};\mathcal{D})-E[y\mid\boldsymbol{x}])^2\right]
=\left(E_{\mathcal{D}}[g]-E[y\mid\boldsymbol{x}]\right)^2
+E_{\mathcal{D}}\left[(g-E_{\mathcal{D}}[g])^2\right] \qquad (3.59\text{--}3.60)$$
第一項是 bias,第二項是 variance。模型越簡單,常見情況是 bias 大、variance 小;模型越複雜,可能把每個資料集的噪聲都背起來,bias 小但 variance 大。
Case 1:固定直線 $g(x)=w_1x+w_0$ 不隨資料集變,variance 幾乎為 0;若真實 $f(x)$ 彎曲,bias 可能很大。
Case 2:高階多項式 每個資料集都穿過 11 個 noisy points,訓練點 bias 可接近 0;但在新資料集上曲線會大幅擺動,variance 變大。
圖3.8 bias–variance:直線偏差大變異小;高階多項式反之
原文也提醒:分類不能只看 MSE。輸出即使離 $+1/-1$ 很遠,只要大多站在正確一側,分類錯誤率仍可能很好。有限資料下,我們要找的是 bias 與 variance 的折衷;這正是後續泛化理論關心的問題。
你應該能回答
① 為什麼條件平均是 MSE 最佳答案? ② one-hot 的條件平均為什麼等於 posterior? ③ 高階模型如何同時降低 bias 卻提高 variance?
05
Logistic:直接把 log-odds 建模成直線 Logistic discrimination (3.6)
MSE 是訓練後才「順便」得到 posterior;Logistic 從一開始就把 posterior 的勝算寫進模型。
1. 多類:先寫 log likelihood ratio,再讓機率總和為 1
選第 $M$ 類當參考類別,對 $i=1,\ldots,M-1$ 設:
$$\ln\frac{P(\omega_i\mid\boldsymbol{x})}{P(\omega_M\mid\boldsymbol{x})}
=w_{i,0}+\boldsymbol{w}_i^T\boldsymbol{x} \qquad (3.61)$$
$$\sum_{i=1}^{M}P(\omega_i\mid\boldsymbol{x})=1 \qquad (3.62)$$
兩式合起來就是 softmax 型的 posterior:
$$P(\omega_M\mid\boldsymbol{x})=\frac{1}{1+\sum_{i=1}^{M-1}\exp(w_{i,0}+\boldsymbol{w}_i^T\boldsymbol{x})} \qquad (3.63)$$
$$P(\omega_i\mid\boldsymbol{x})=\frac{\exp(w_{i,0}+\boldsymbol{w}_i^T\boldsymbol{x})}{1+\sum_{j=1}^{M-1}\exp(w_{j,0}+\boldsymbol{w}_j^T\boldsymbol{x})} \qquad (3.64)$$
2. 二類:sigmoid 是 softmax 的特例
$$P(\omega_2\mid\boldsymbol{x})=\frac{1}{1+\exp(w_0+\boldsymbol{w}^T\boldsymbol{x})},\qquad
P(\omega_1\mid\boldsymbol{x})=\frac{\exp(w_0+\boldsymbol{w}^T\boldsymbol{x})}{1+\exp(w_0+\boldsymbol{w}^T\boldsymbol{x})} \qquad (3.65\text{--}3.66)$$
當 $w_0+\boldsymbol{w}^T\boldsymbol{x}=0$,兩類機率相等;正側往 $\omega_1$ 靠近,負側往 $\omega_2$ 靠近。這次的輸出不是硬切的 $+1/-1$,而是有機率意義的軟分數。
互動 Demo 5|Sigmoid 曲線長在資料上的瞬間 一維特徵 x:藍點 = 類別一、紅點 = 類別二;藍線 = $P(\omega_1\mid x)$
$P(\omega_1\mid x)$ 越過 0.5 的點就是分類邊界;滑鼠移過,即時報信心值。
3. Maximum likelihood:參數怎麼學?
已知每筆訓練樣本的類別,令 $\boldsymbol{\theta}$ 收集所有 $w_{i,0}$ 與 $\boldsymbol{w}_i$。原文先寫條件 likelihood 的乘積:
$$L(\boldsymbol{\theta})=\ln\left\{\prod_{m=1}^{M}\prod_{k=1}^{N_m}
p(\boldsymbol{x}_k^{(m)}\mid\omega_m;\boldsymbol{\theta})\right\} \qquad (3.67)$$
利用 Bayes 公式,所有與 $\boldsymbol{\theta}$ 無關的 marginal 項收進常數 $C$,真正要最大化的是:
$$L(\boldsymbol{\theta})=\sum_{m=1}^{M}\sum_{k=1}^{N_m}
\ln P(\omega_m\mid\boldsymbol{x}_k^{(m)};\boldsymbol{\theta})+C \qquad (3.68\text{--}3.70)$$
接著可用梯度法或其他最佳化法求參數。這就是 Logistic regression 的核心:對條件機率做最大概似,不需要先寫出每一類的完整 pdf 。
4. Logistic 與 LDA:長得像,假設不同
若各類是 Gaussian 且共用 covariance $\Sigma$,Ch2 的 LDA log posterior odds 也可寫成:
$$\ln\frac{P(\omega_1\mid\boldsymbol{x})}{P(\omega_2\mid\boldsymbol{x})}
=\frac{1}{2}(\boldsymbol{\mu}_2^T\Sigma^{-1}\boldsymbol{\mu}_2-\boldsymbol{\mu}_1^T\Sigma^{-1}\boldsymbol{\mu}_1)
+(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)^T\Sigma^{-1}\boldsymbol{x}$$
方法 參數怎麼估 什麼時候有優勢
LDA 假設 Gaussian,使用 marginal density 的完整資訊 Gaussian/共變異假設合理時
Logistic 直接估 conditional posterior,較少分布假設 不確定 pdf 形狀時
兩者在實務上可能很接近;差異不在「邊界一定不同」,而在「參數估計時使用的資訊與假設不同」。
你應該能回答 ① log-odds 為何適合用直線建模? ② softmax 如何保證機率和為 1? ③ Logistic 與 LDA 的關鍵差異是模型形狀還是估參數的假設?
06
SVM:不只分對,還要車道夠寬 Support vector machines (3.7.1–3.7.3)
感知機找到「任何一條可分線」;SVM 要求「對未知資料更放心」的最大邊距線。
1. Generalization:為什麼不選貼邊的線?
兩條線都能把訓練點分對,但留白較大的線,資料稍微漂移時比較不容易翻到另一側。這就是原文引入的 generalization intuition:訓練資料以外的新資料,也要有安全空間。
圖3.9 兩個都可分對的超平面;實線留白更多
固定方向後,選一條到兩類最近點距離相等的線;再在所有方向中挑 margin 最大者。
圖3.10 給定方向下,讓兩側最近的點定成 ±1 → 邊距
2. 正規化後,最大邊距變成一個凸最佳化問題
因為把 $\boldsymbol{w},w_0$ 同時放大不會改變線的位置,所以把最近的正類點規範成 $+1$、負類點規範成 $-1$:
$$\boldsymbol{w}^T\boldsymbol{x}+w_0\geq1\quad(\omega_1),\qquad
\boldsymbol{w}^T\boldsymbol{x}+w_0\leq-1\quad(\omega_2)$$
$$\text{margin}=\frac{1}{\|\boldsymbol{w}\|}+\frac{1}{\|\boldsymbol{w}\|}=\frac{2}{\|\boldsymbol{w}\|}$$
$$\operatorname*{minimize}_{\boldsymbol{w},w_0}\ \frac12\|\boldsymbol{w}\|^2
\quad\text{subject to}\quad y_i(\boldsymbol{w}^T\boldsymbol{x}_i+w_0)\geq1 \qquad (3.72\text{--}3.73)$$
最小化 $\|\boldsymbol{w}\|$ 就是最大化 margin。這個目標是嚴格凸、限制是線性不等式,因此最優超平面唯一。
3. KKT:為什麼只有少數 support vectors 決定答案?
把每個限制放進 Lagrangian:
$$\mathcal{L}=\frac12\boldsymbol{w}^T\boldsymbol{w}
-\sum_{i=1}^{N}\lambda_i[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+w_0)-1]$$
$$\frac{\partial\mathcal{L}}{\partial\boldsymbol{w}}=0,\quad
\frac{\partial\mathcal{L}}{\partial w_0}=0,\quad \lambda_i\geq0,\quad
\lambda_i[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+w_0)-1]=0 \qquad (3.74\text{--}3.78)$$
由此得到:
$$\boldsymbol{w}=\sum_{i=1}^{N}\lambda_i y_i\boldsymbol{x}_i,\qquad
\sum_{i=1}^{N}\lambda_i y_i=0 \qquad (3.79\text{--}3.80)$$
$$\boldsymbol{w}=\sum_{i=1}^{N_s}\lambda_i y_i\boldsymbol{x}_i \qquad (3.81)$$
若 $\lambda_i=0$,那個點對最後的 $\boldsymbol{w}$ 沒貢獻;若 $\lambda_i>0$,互補鬆弛迫使它落在 $\boldsymbol{w}^T\boldsymbol{x}+w_0=\pm1$ 上。這些離邊界最近的點就是 support vectors。
圖3.12 Example 3.5:四點皆為支持向量、最優線 x1=0
4. Dual:資料只透過內積出現
$$\operatorname*{maximize}_{\boldsymbol{\lambda}}
\left(\sum_i\lambda_i-\frac12\sum_{i,j}\lambda_i\lambda_jy_iy_j\boldsymbol{x}_i^T\boldsymbol{x}_j\right)$$
$$\text{subject to}\quad \sum_i\lambda_iy_i=0,\qquad \lambda_i\geq0 \qquad (3.87\text{--}3.89)$$
這個對偶形式有兩個大禮物:第一,限制變成好處理的等式+非負條件;第二,輸入只以 pairwise inner product 出現,公式不直接依賴輸入維度。這正是下一章 kernel trick 能接手的入口。注意:最終 $\boldsymbol{w}$ 唯一,但能產生它的 $\lambda_i$ 組合不一定唯一。
5. Example 3.5:最佳線 $x_1=0$,但 multipliers 不唯一
正類是 $[1,1]^T,[1,-1]^T$;負類是 $[-1,1]^T,[-1,-1]^T$。正方形的左右兩邊最近,所以最佳線:
$$g(\boldsymbol{x})=x_1=0,\qquad w_1=1,\quad w_2=w_0=0,\quad\text{margin}=1$$
四個點都剛好在兩條 margin 線上,因此四個都是 support vectors。把已知 $w_1=1,w_2=w_0=0$ 放回 KKT,只剩三條線性方程配四個 $\lambda$,所以 multipliers 可有多組,但最後的線一樣。
圖3.11 不可分:點掉進邊距帶內(方格=帶內對、圓圈=誤判)
6. 不可分:slack variables 與 soft margin
不可分時,點有三類:在 margin 外且分對、落在 margin 內但仍分對、跑到錯側。用 $\xi_i$ 把三種情況放進同一條限制:
圖3.13 Example 3.6:左 C=0.2 邊距寬、右 C=1000 邊距窄
$$y_i(\boldsymbol{w}^T\boldsymbol{x}_i+w_0)\geq1-\xi_i,\qquad \xi_i\geq0 \qquad (3.90)$$
$$\min\ \frac12\|\boldsymbol{w}\|^2+C\sum_i\xi_i
\quad\text{subject to the constraints above} \qquad (3.95)$$
$\xi_i=0$ 表示在 margin 外;$0<\xi_i\leq1$ 表示帶內但可能仍分對;$\xi_i>1$ 表示錯側。原文先提出「是否有 slack」的 indicator cost,再用連續的 $\sum_i\xi_i$ 近似,讓問題保持凸且可解。
對偶的差異變成:
$$0\leq\lambda_i\leq C,\qquad \sum_i\lambda_iy_i=0 \qquad (3.103\text{--}3.105)$$
若 $\xi_i>0$,KKT 會把對應 $\lambda_i$ 推到 $C$。$C$ 越大,錯誤懲罰越重,模型會犧牲 margin 去少犯錯;$C$ 越小,容許較多點進 margin,換取較寬的車道。
圖3.13 Example 3.6:左 C=0.2 邊距寬、右 C=1000 邊距窄
7. Example 3.6:$C=0.2$ 和 $C=1000$ 的取捨
同一批不可分資料,$C=0.2$ 時讓較多點進 margin,車道較寬;$C=1000$ 時更重視每個 slack,線會移動、方向改變,margin 變窄,但錯誤/帶內點較少。這不是「哪個 $C$ 永遠正確」,而是工程上的正則化旋鈕。
8. 多類 SVM:三條路
方法 做法 代價/風險
One-against-all 每類對其餘類訓練一個 $g_i$,最後取 $\operatorname*{arg\,max}_i g_i(\boldsymbol{x})$ 可能出現多個正值或全部負值;類別不平衡
One-against-one 訓練 $M(M-1)/2$ 個兩類 SVM,多數投票 模型數多,但每個子問題較小
ECOC 每類分配長度 $L$ 的 ±1 codeword,分類看 Hamming distance 若最小碼距為 $d$,可容忍最多 $\left\lfloor(d-1)/2\right\rfloor$ 個二類分類器犯錯
$$\text{Example code matrix:}\quad
\begin{bmatrix}-1&-1&-1&+1&-1&+1\\+1&-1&+1&+1&-1&-1\\+1&+1&-1&-1&-1&+1\\-1&-1&+1&-1&+1&+1\end{bmatrix}$$
原文也提醒計算限制:天真的 QP solver 訓練成本約 $O(N^3)$、記憶體約 $O(N^2)$;大型資料會用 decomposition/working set,SMO 更把 working set 壓到兩個點。
互動 Demo 6|轉方向,找到「車道最寬」的那條線 資料固定,只換方向;橙圈 = 兩側「守門員」(支持向量候補)
方向 = 0°
起始邊距 —
目前邊距 —
最佳方向 —
灰紫帶 = 該方向下的邊距帶;邊距的算法就是課本「最近點定成 ±1」那一套。
你應該能回答 ① 最大化 margin 為何等價於最小化 $\|\boldsymbol{w}\|^2$? ② KKT 如何挑出 support vectors? ③ $C$ 變大會怎麼改變 margin? ④ ECOC 的碼距如何提供容錯?
07
深入 SVM:ν 旋鈕與幾何之眼 ν-SVM, convex hulls & reduced convex hulls (3.7.4–3.7.6)
$C$ 是間接控制 margin;ν-SVM 直接把 margin 寬度放進最佳化,接著還能用凸幾何重新看懂整件事。
1. ν-SVM:把 margin 寬度本身拿來調
用兩條平行線 $\boldsymbol{w}^T\boldsymbol{x}+w_0=\pm\rho$,$\rho\geq0$ 也是要學的變數。原文的 primal 問題:
$$\min_{\boldsymbol{w},w_0,\boldsymbol{\xi},\rho}
\frac12\|\boldsymbol{w}\|^2-\nu\rho+\frac1N\sum_i\xi_i$$
$$\text{subject to}\quad y_i(\boldsymbol{w}^T\boldsymbol{x}_i+w_0)\geq\rho-\xi_i,\quad
\xi_i\geq0,\quad\rho\geq0 \qquad (3.118\text{--}3.122)$$
若 $\xi_i=0$,兩條 margin 線的距離是 $2\rho/\|\boldsymbol{w}\|$。$\nu\in[0,1]$ 控制擴大 margin 與容許 slack 的拉扯。
2. ν 的兩個可讀保證
對偶限制可寫成:
$$0\leq\lambda_i\leq\frac1N,\qquad \sum_i\lambda_iy_i=0,
\qquad \sum_i\lambda_i\geq\nu \qquad (3.138\text{--}3.141)$$
在非平凡解 $\rho>0$ 下,原文推得:
$$P_e\leq\nu \qquad (3.142),\qquad N\nu\leq N_s \qquad (3.143\text{--}3.144)$$
白話:$\nu$ 給訓練錯誤率一個上界,也給 support vector 數量一個下界。這不是測試集保證;它是設計者對訓練解的可讀控制訊號。
3. Convex hull:最大邊距其實是在找兩個最近點
一組點的 convex hull 是所有 convex combinations 的集合:
$$\operatorname{conv}(X)=\left\{\boldsymbol{y}:\boldsymbol{y}=\sum_i\lambda_i\boldsymbol{x}_i,
\ \sum_i\lambda_i=1,\ 0\leq\lambda_i\leq1\right\} \qquad (3.145)$$
對可分兩類,分別在正類與負類 convex hull 找兩個最近點;連接它們的線段,其垂直平分線就是最大 margin 分類器。也就是「解析的 SVM dual」和「幾何最近點」是同一件事的兩種語言。
圖3.14 可分兩類的凸包與最近點
$$\min_{\boldsymbol{\lambda}}\left\|\sum_{y_i=1}\lambda_i\boldsymbol{x}_i-\sum_{y_i=-1}\lambda_i\boldsymbol{x}_i\right\|^2
\quad\text{subject to each class's weights sum to 1} \qquad (3.148\text{--}3.151)$$
4. RCH:資料不可分時,把兩塊凸包縮小
普通 convex hull 可能相交,最近距離是 0;RCH 對每個係數加上上限 $\mu$:
$$R(X,\mu)=\left\{\boldsymbol{y}:\boldsymbol{y}=\sum_i\lambda_i\boldsymbol{x}_i,
\ \sum_i\lambda_i=1,\ 0\leq\lambda_i\leq\mu\right\} \qquad (3.159)$$
$$R(X,1)=\operatorname{conv}(X),\qquad R(X,\mu)\subseteq\operatorname{conv}(X) \qquad (3.160)$$
$\mu$ 越小,每個原始點能分到的權重越少,RCH 越縮;兩個 RCH 若終於分開,就可以取兩個最近點的垂直平分線作分類器。縮放關係是 $\nu=2/(\mu N)$。若兩類各有 $N/2$ 個點,最小可行 $\mu$ 時每個 RCH 會縮到各自類別的 centroid;兩個 centroid 不同才有非平凡方向。
圖3.15 兩類相交時的凸包與縮減凸包(RCH)
圖3.16 最近點連線的垂直平分線 = 最優分類器(縮減後)
互動 Demo 7|把凸包「縮到剛好分開」,最近兩點就是答案 滑桿:每點往質心縮(RCH);紅線 = 垂直平分線
虛線 = 原始凸包;實線 = 縮減凸包;兩包剛分開那一刻,中線 ≈ SVM 解。
5. 原文的可行性與工程提醒
若 $\mu<1/N_{\min}$,某一類的係數總和連 1 都湊不出來;因此需要 $\mu\geq1/N_{\min}$。
若兩個 RCH 仍相交,最近距離為 0,可能得到 $\boldsymbol{w}=\boldsymbol{0}$ 的 trivial solution;所以 $\nu$ 不能任意小。
幾何法得到的方向和 KKT 解一致,但不可分時 $w_0$ 的幾何中點公式與 KKT 的 $w_0$ 可能需再校正。
RCH 的極點不一定是原始樣本,而是樣本的組合;$\mu$ 越小,參與一個極點的樣本可能越多,因此最近點演算法不只是把 convex-hull 演算法照搬。
6. 原文 Problems、MATLAB 與 computer experiments:把理論落地
原文最後不是只留公式,而是要求實作與比較:
原文任務 本套件對應
3.1–3.4:感知機 cost、固定步幅、獎懲式與簡單資料 nb2:逐步更新、收斂與不可分 Pocket 思考題
3.5–3.6:Gaussian 資料、感知機與 LMS nb2/nb3:合成資料與決策線比較
3.8–3.10:LS 與多類 MSE nb3:正規方程、偽逆、one-hot 輸出
3.11–3.14:條件平均、ML 與 Gaussian 特例 nb4:Logistic/posterior/bias–variance
3.15–3.20:多類 SVM、KKT、凸包與 ν nb4/nb5:margin、support vectors、RCH 幾何
MATLAB 3.1–3.3:Perceptron、SSErr、LMS 以 NumPy 手寫演算法,另附 sklearn 對照
課本 computer experiments 使用固定亂數種子,並比較類別平均差距 $5$、$2$、$1$ 的資料;這正好展示類別越靠近,線性方法的錯誤與模型差異越值得觀察。
你應該能回答 ① ν 同時控制哪兩個量? ② 為什麼 convex hull 最近點會產生最大 margin? ③ RCH 的 $\mu$ 為何能處理原本相交的類別? ④ 大型 SVM 為何需要 SMO/decomposition?