Skip to content

過擬合:雜訊、資料量與模型複雜度怎麼聯手|台大林軒田 機器學習基石 第 13 堂

2026年9月30日1 分鐘
TL;DR過擬合指的是換到更強的模型時 E_in 下降、E_out 卻上升的過程。這堂課用只會 2 次與會 10 次多項式的兩位學習者做實驗,得到四個成因:資料太少、隨機雜訊太大、確定性雜訊太大(目標太複雜)、模型能力過剩,並解釋為什麼完全沒有雜訊的資料也會過擬合。對策先講資料清理、修剪與 virtual examples,正則化與驗證留給後兩堂。

查詞與收藏

正在載入查詞工具…

🌏 English version

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

這是台大林軒田 機器學習基石與技法 導讀裡的基石第 13 堂。講義第 1 頁的 Roadmap 把基石分成四個問題,前三個(機器什麼時候能學、為什麼能學、怎麼學)到上一堂結束,這堂開始回答第四個:How Can Machines Learn Better? 上一堂基石第 12 堂:非線性轉換在同一頁上的摘要是:非線性的特徵轉換加上線性模型就能做出非線性的模型,代價是模型複雜度。這堂從那個代價出發,看它會造成什麼麻煩。

先備有三樣:基石第 7 堂:VC 維度那張「EinE_{\text{in}} 隨 VC 維度下降、EoutE_{\text{out}} 先降後升」的圖,基石第 9 堂:線性迴歸的最小平方解與學習曲線,以及上一堂的多項式轉換與巢狀假說集合 H0⊂H1⊂H2⊂⋯\mathcal{H}_0 \subset \mathcal{H}_1 \subset \mathcal{H}_2 \subset \cdots。期望值與變異數的基本運算也會用到。

讀完之後,你應該能分清楚「壞的泛化」與「過擬合」,說出過擬合的四個成因各自在講義的哪張圖上看得到,對一個簡單的目標函數算出確定性雜訊(deterministic noise)有多大,並且判斷一筆 virtual example 加得對不對。這堂課公式少、實驗多,所以本文另外擬了三個手算得動的小例子,把講義用圖呈現的現象各算一遍。

過擬合是什麼:E_in 降了、E_out 卻升了

YouTube:Hazard of Overfitting :: What is Overfitting? @ Machine Learning Foundations (機器學習基石)

(影片 00:19–01:10 複習上一堂,01:10–03:18 是五個點的例子,03:18–06:38 區分壞的泛化、過擬合與欠擬合,06:38–10:01 是開車的比喻,之後是 Fun Time。)

五個點配四次多項式

講義第 2 頁的例子很小。一維的迴歸問題,x∈Rx \in \mathbb{R},只有 N=5N = 5 筆資料。目標函數 ff 是一個 2 次多項式,標籤是 yn=f(xn)y_n = f(x_n) 加上很小的雜訊。學習的一方不知道目標是 2 次的,選了 4 次多項式:用上一堂的做法,先做 4 次的特徵轉換 Φ(x)=(1,x,x2,x3,x4)\boldsymbol{\Phi}(x) = (1, x, x^2, x^3, x^4),再在 Z\mathcal{Z} 空間跑線性迴歸。

講義說這樣會得到唯一解,而且它穿過全部 5 個點,所以 Ein(g)=0E_{\text{in}}(g) = 0。本文把理由補上。4 次多項式有 5 個係數 w0,…,w4w_0, \dots, w_4,「穿過 5 個點」是 5 條方程式:

w0+w1xn+w2xn2+w3xn3+w4xn4=yn,n=1,…,5w_0 + w_1 x_n + w_2 x_n^2 + w_3 x_n^3 + w_4 x_n^4 = y_n, \qquad n = 1, \dots, 5

5 個未知數、5 條線性方程式。只要 5 個 xnx_n 兩兩不同,這組方程式的係數矩陣(每一列是 Φ(xn)⊤\boldsymbol{\Phi}(x_n)^\top,就是線性迴歸裡的資料矩陣)可逆,解剛好一組。這一組解讓每個殘差都是 0,平方誤差不可能比 0 更低,線性迴歸找到的就是它。

問題在圖上:投影片右邊畫了藍色的目標曲線與紅色的 gg。5 個點是左邊 1 個、其餘 4 個在右半邊,紅線為了穿過每個點,在中間沒有資料的地方高高拱起,在右端又急速往下掉,和藍線差得很遠。Ein=0E_{\text{in}} = 0,EoutE_{\text{out}} 卻非常大。課堂上的說法是,紅線跟我們最想要的藍線一點都不像。

講義把這種狀況叫壞的泛化(bad generalization):EinE_{\text{in}} 低、EoutE_{\text{out}} 高。課堂上說這是沒有辦法舉一反三:看過的 5 個點做得很好,推到這 5 個點以外就不行了。這跟 VC bound 的說法一致,VC 維度太大時,EinE_{\text{in}} 與 EoutE_{\text{out}} 可以差很遠。

壞的泛化是狀態,過擬合是過程

第 3 頁把基石第 7 堂的圖搬回來。橫軸是 VC 維度 dVCd_{\text{VC}},三條線分別是:一路下降的 in-sample error、一路上升的 model complexity,以及先降後升的 out-of-sample error。EoutE_{\text{out}} 最低的那一點記成 dVC∗d_{\text{VC}}^*。講義在這張圖上定義了三件事:

名稱講義的定義描述的對象
壞的泛化取 dVC=1126d_{\text{VC}} = 1126 來學,Eout−EinE_{\text{out}} - E_{\text{in}} 很大某一個點的狀態
過擬合(overfitting)從 dVC∗d_{\text{VC}}^* 換到 dVC=1126d_{\text{VC}} = 1126:EinE_{\text{in}} ↓、EoutE_{\text{out}} ↑往右移的過程
欠擬合(underfitting)從 dVC∗d_{\text{VC}}^* 換到 dVC=1d_{\text{VC}} = 1:EinE_{\text{in}} ↑、EoutE_{\text{out}} ↑往左移的過程

1126 只是課堂上慣用的「一個很大的數字」。頁尾的一句話把差別收起來:bad generalization 是 low EinE_{\text{in}}、high EoutE_{\text{out}};overfitting 是 lower EinE_{\text{in}}、higher EoutE_{\text{out}}。多出來的 er 表示它在比較兩個模型。

課堂上對名稱的解釋是:fitting 指的就是把 EinE_{\text{in}} 做好。overfitting 是 fitting 做好了,但做過頭,EoutE_{\text{out}} 反而變差;投影片把這個字的 over 和 fitting 標成兩種顏色,就是這個意思。underfitting 是 fit 得不夠好。課堂上還補了一句評價:欠擬合比較好處理,通常把 VC 維度加大就行,上一堂的非線性轉換就是工具;過擬合很常見,而且不容易解決,所以這堂專門講它。

開車的比喻:三個原因

第 4 頁把兩張圖並排:左邊是 good fit(紅線和藍線幾乎重合),右邊是 overfit(第 2 頁那條亂跳的紅線)。課堂上說,過擬合是從左邊走到右邊的過程,結果是右邊那個壞的泛化的狀態。接著講義用開車出車禍來比喻過擬合的原因:

學習開車
overfit出車禍
用了過大的 dVCd_{\text{VC}}開太快
雜訊(noise)路面顛簸
資料量 NN 有限對路況的觀察有限

課堂上先聲明這只是幫助理解的比喻,不是每個細節都對得上,然後逐列解釋:

  • 開太快。 油門踩太重,等於用了太多模型複雜度的 power。例子裡目標明明是 2 次,卻用了 4 次。
  • 路不平。 資料裡加了一點雜訊。路不平又開得快,就容易出事。
  • 路況不熟。 如果資料點密密麻麻,紅線想在某個地方拱起來,那裡的資料會告訴它不可以,就不會有第 2 頁那種亂跳的線。課堂上舉的例子是:路很熟的人知道哪裡有坑洞,繞過去就好,車還是可以開很快。

三件事湊在一起才危險:路況知道得有限、路又不平、還堅持開快車。頁尾預告下一節要細看其中兩項,雜訊與資料量。

數值例子:三個點,三種模型

以下是本文自擬的例子,不在講義上。它把第 2 頁的設定縮小到手算得動的大小:目標是 1 次函數,資料 3 筆,候選模型是 H0\mathcal{H}_0(常數)、H1\mathcal{H}_1(直線)、H2\mathcal{H}_2(拋物線)。

設定。 目標 f(x)=xf(x) = x。xx 在 [−1,1][-1, 1] 上均勻分布,但抽到的 3 筆剛好都落在右半邊:

nnxnx_nf(xn)f(x_n)雜訊yny_n
10000+0.1+0.10.10.1
20.50.50.50.5−0.1-0.10.40.4
31111+0.1+0.11.11.1

EinE_{\text{in}} 是 3 筆資料上的平均平方誤差。為了能手算,EoutE_{\text{out}} 定成 gg 與目標 ff 的平方差在 [−1,1][-1,1] 上的平均,Eout(g)=Ex[(g(x)−f(x))2]E_{\text{out}}(g) = \mathbb{E}_x\big[(g(x) - f(x))^2\big];如果改成對含雜訊的 yy 算,三個模型都會多同一個常數,比較的結果不變。均勻分布在 [−1,1][-1,1] 上的幾個動差後面一直會用到:E[x]=E[x3]=0\mathbb{E}[x] = \mathbb{E}[x^3] = 0,E[x2]=13\mathbb{E}[x^2] = \frac{1}{3},E[x4]=15\mathbb{E}[x^4] = \frac{1}{5}。

H0\mathcal{H}_0:常數。 最小平方的常數是 yy 的平均,g0(x)=0.1+0.4+1.13=815≈0.533g_0(x) = \frac{0.1 + 0.4 + 1.1}{3} = \frac{8}{15} \approx 0.533。

Ein(g0)=(0.1−0.533)2+(0.4−0.533)2+(1.1−0.533)23=79450≈0.176E_{\text{in}}(g_0) = \frac{(0.1 - 0.533)^2 + (0.4 - 0.533)^2 + (1.1 - 0.533)^2}{3} = \frac{79}{450} \approx 0.176 Eout(g0)=E[(815−x)2]=64225+13=139225≈0.618E_{\text{out}}(g_0) = \mathbb{E}\Big[\Big(\frac{8}{15} - x\Big)^2\Big] = \frac{64}{225} + \frac{1}{3} = \frac{139}{225} \approx 0.618

H1\mathcal{H}_1:直線。 xˉ=0.5\bar{x} = 0.5、yˉ=815\bar{y} = \frac{8}{15}。斜率是 ∑(xn−xˉ)(yn−yˉ)/∑(xn−xˉ)2\sum (x_n - \bar{x})(y_n - \bar{y}) \big/ \sum (x_n - \bar{x})^2。分母是 0.25+0+0.25=0.50.25 + 0 + 0.25 = 0.5;分子裡中間那筆的 xn−xˉ=0x_n - \bar{x} = 0,剩下 (−0.5)(0.1−yˉ)+(0.5)(1.1−yˉ)=0.5×(1.1−0.1)=0.5(-0.5)(0.1 - \bar{y}) + (0.5)(1.1 - \bar{y}) = 0.5 \times (1.1 - 0.1) = 0.5。斜率是 1,截距是 yˉ−1×xˉ=130\bar{y} - 1 \times \bar{x} = \frac{1}{30}:

g1(x)=130+xg_1(x) = \frac{1}{30} + x

三個殘差是 0.1−130=1150.1 - \frac{1}{30} = \frac{1}{15}、0.4−815=−2150.4 - \frac{8}{15} = -\frac{2}{15}、1.1−3130=1151.1 - \frac{31}{30} = \frac{1}{15},所以

Ein(g1)=13⋅1+4+1225=2225≈0.0089,Eout(g1)=E[(130)2]=1900≈0.0011E_{\text{in}}(g_1) = \frac{1}{3} \cdot \frac{1 + 4 + 1}{225} = \frac{2}{225} \approx 0.0089, \qquad E_{\text{out}}(g_1) = \mathbb{E}\Big[\Big(\frac{1}{30}\Big)^2\Big] = \frac{1}{900} \approx 0.0011

H2\mathcal{H}_2:拋物線。 3 個係數、3 個點,和講義的例子一樣只有唯一解,而且穿過每個點。設 g2(x)=a+bx+cx2g_2(x) = a + bx + cx^2。代 x=0x = 0 得 a=0.1a = 0.1;代 x=0.5x = 0.5 得 b2+c4=0.3\frac{b}{2} + \frac{c}{4} = 0.3;代 x=1x = 1 得 b+c=1b + c = 1。後兩式解出 b=0.2b = 0.2、c=0.8c = 0.8:

g2(x)=0.1+0.2x+0.8x2,Ein(g2)=0g_2(x) = 0.1 + 0.2x + 0.8x^2, \qquad E_{\text{in}}(g_2) = 0

它和目標的差是 g2(x)−f(x)=0.1−0.8x+0.8x2g_2(x) - f(x) = 0.1 - 0.8x + 0.8x^2。平方後展開,奇數次項的期望值是 0,只留下偶數次項:

Eout(g2)=0.01+(0.64+0.16) E[x2]+0.64 E[x4]=0.01+0.83+0.645=6071500≈0.405E_{\text{out}}(g_2) = 0.01 + (0.64 + 0.16)\,\mathbb{E}[x^2] + 0.64\,\mathbb{E}[x^4] = 0.01 + \frac{0.8}{3} + \frac{0.64}{5} = \frac{607}{1500} \approx 0.405

其中 0.64x20.64x^2 來自 (−0.8x)2(-0.8x)^2,0.16x20.16x^2 來自 2×0.1×0.8x22 \times 0.1 \times 0.8x^2。

結果。

模型ggEinE_{\text{in}}EoutE_{\text{out}}
H0\mathcal{H}_00.5330.5330.1760.1760.6180.618
H1\mathcal{H}_10.033+x0.033 + x0.00890.00890.00110.0011
H2\mathcal{H}_20.1+0.2x+0.8x20.1 + 0.2x + 0.8x^2000.4050.405

這代表什麼。 三個名詞在這張表上各有位置。EoutE_{\text{out}} 最低的是 H1\mathcal{H}_1,它的位置相當於第 3 頁圖上的 dVC∗d_{\text{VC}}^*。從 H1\mathcal{H}_1 換到 H2\mathcal{H}_2,EinE_{\text{in}} 從 0.0089 降到 0,EoutE_{\text{out}} 從 0.0011 升到 0.405,大了三百多倍,這是過擬合。從 H1\mathcal{H}_1 換到 H0\mathcal{H}_0,兩個誤差一起上升,這是欠擬合。只看 g2g_2 這一個假說,Ein=0E_{\text{in}} = 0、Eout=0.405E_{\text{out}} = 0.405,這是壞的泛化。

三個成因也都在。雜訊只有 ±0.1\pm 0.1,但拋物線為了穿過每個點把它當真,學到一個其實不存在的彎度 0.8x20.8x^2。資料只有 3 筆而且都在右半邊,沒有任何一筆能告訴拋物線左半邊不可以翹起來:在 x=−1x = -1,g2(−1)=0.1−0.2+0.8=0.7g_2(-1) = 0.1 - 0.2 + 0.8 = 0.7,目標是 −1-1,差了 1.7。直線也沒看過左半邊,但它只有兩個係數,±0.1\pm 0.1 的雜訊只讓它整條平移了 130\frac{1}{30}。

Fun Time:哪一種情況最不容易過擬合

題目(第 5 頁): 根據前面的討論,資料量固定時,下面哪一種情況過擬合的風險相對最低?

  1. 雜訊小,從小的 dVCd_{\text{VC}} 換到中等的 dVCd_{\text{VC}}
  2. 雜訊小,從小的 dVCd_{\text{VC}} 換到大的 dVCd_{\text{VC}}
  3. 雜訊大,從小的 dVCd_{\text{VC}} 換到中等的 dVCd_{\text{VC}}
  4. 雜訊大,從小的 dVCd_{\text{VC}} 換到大的 dVCd_{\text{VC}}

答案:1。 講義的解答是:過擬合的兩個原因是雜訊與過大的 dVCd_{\text{VC}},兩者都相對受控時,風險就比較小。題目先固定了資料量,三個原因剩下兩個可以比。選項 1 和 2 雜訊一樣,2 的 dVCd_{\text{VC}} 加得更多;選項 1 和 3 的 dVCd_{\text{VC}} 一樣,3 的雜訊更大;選項 4 兩樣都比 1 差。用開車來講,1 是路比較平、車速只加一點。

題目問的是「相對」風險。選項 1 也可能過擬合,上面三個點的例子雜訊就很小、也只從 1 次加到 2 次。

雜訊與資料量:會十次多項式的人為什麼輸給只會二次的

YouTube:Hazard of Overfitting :: The Role of Noise and Data Size @ Machine Learning Foundations (機器學習基石)

(影片 00:00–02:22 是兩組實驗的設定,02:22–05:29 看結果,05:29–07:50 談兩個學習者的反諷,07:50–11:02 用學習曲線解釋,11:02–12:47 是沒有雜訊的那一組,之後是 Fun Time。)

兩組資料,兩位學習者

第 6 頁做了兩組人工資料,都是一維的迴歸問題:

  • 左邊: 目標是 10 次多項式,資料加了雜訊。圖上的黑點和藍色的目標曲線有一點距離。
  • 右邊: 目標是 50 次多項式,完全不加雜訊。藍線比左邊彎得多,黑點都剛好落在線上。

兩張圖上的資料都只有十幾筆。

再找兩位學習者。課堂上把他們講成兩個學生:一個只會 2 次以下的多項式,看到資料後從 H2\mathcal{H}_2 裡挑一個最好的 g2g_2(圖上的綠線);另一個會 10 次以下的所有多項式,從 H10\mathcal{H}_{10} 裡挑最好的 g10g_{10}(紅線)。頁尾的問題是:從 g2g_2 換到 g10g_{10},會不會過擬合?

結果:兩組都過擬合

第 7 頁的數字:

目標g2∈H2g_2 \in \mathcal{H}_2g10∈H10g_{10} \in \mathcal{H}_{10}
10 次+雜訊EinE_{\text{in}}0.0500.0500.0340.034
EoutE_{\text{out}}0.1270.1279.009.00
50 次、無雜訊EinE_{\text{in}}0.0290.0290.000010.00001
EoutE_{\text{out}}0.1200.12076807680

兩組的 EinE_{\text{in}} 都是 g10g_{10} 比較低。這一定會發生,因為 H2⊂H10\mathcal{H}_2 \subset \mathcal{H}_{10},H10\mathcal{H}_{10} 裡包含 g2g_2,在更大的集合裡挑最好的,不會比 g2g_2 差。課堂上的講法是紅色的學生會的多項式比較多,選擇多,EinE_{\text{in}} 自然能做得比較低。

EoutE_{\text{out}} 完全倒過來。左邊 g2g_2 是 0.127,g10g_{10} 是 9.00,差了約 71 倍;右邊 g2g_2 是 0.120,g10g_{10} 是 7680,差了 64,000 倍。圖上的紅線在資料點之間大幅擺盪;右邊那張,課堂上形容目標高的地方紅線低、目標低的地方紅線高,和 50 次的目標一點都不像。EinE_{\text{in}} 降、EoutE_{\text{out}} 升,照定義兩組都是過擬合,頁尾寫的是 both yes!

第一組的反諷:以退為進

第 8 頁給兩位學習者取了名字:O(Overfit)選 g10g_{10},R(Restrict)選 g2g_2。然後假設兩人都知道目標是 10 次多項式。

直覺上 O 應該占優勢:目標是 10 次,他會 10 次。R 連 10 次都不會,講義說他等於放棄了擬合的能力。課堂上講得更直接:去問一個只會 2 次的學生,等於一開始就放棄做到完美,因為用 2 次多項式不可能把 10 次的目標做到完美。結果 R 在 EoutE_{\text{out}} 上大贏。

講義在頁尾寫 philosophy: concession for advantage?,課堂上說這就是「以退為進」。他還舉了老闆的例子:如果老闆告訴你這個問題大概用 10 次多項式能解決,你多半會直接拿 10 次的模型去做,根本不會想到用 2 次的反而可能比較好。知道目標是 10 次,真的用 10 次去學,不見得做得比較好。

用學習曲線解釋

第 9 頁把基石第 9 堂的學習曲線拿回來。橫軸是資料量 NN,縱軸是期望的誤差,H2\mathcal{H}_2 和 H10\mathcal{H}_{10} 各一張。講義在這裡用 Ein‾\overline{E_{\text{in}}}、Eout‾\overline{E_{\text{out}}} 表示對很多組資料取的平均。

兩張圖的共同點,課堂上重講了一次:

  • N→∞N \to \infty 時,EinE_{\text{in}} 與 EoutE_{\text{out}} 收斂到同一個值。
  • NN 有限時,EinE_{\text{in}} 比那個值低一點。因為看得到資料,最佳化會讓線往資料點靠過去。
  • EoutE_{\text{out}} 比那個值高一點。線往看過的點靠,在沒看過的點上就偏離了;課堂上說如果那邊有雜訊,等於差了兩倍的距離。

基石第 9 堂對線性迴歸算過這個「一點」有多大:有雜訊、雜訊強度 σ2\sigma^2 時,平均的 Ein=σ2(1−d+1N)E_{\text{in}} = \sigma^2\big(1 - \frac{d+1}{N}\big),平均的 Eout=σ2(1+d+1N)E_{\text{out}} = \sigma^2\big(1 + \frac{d+1}{N}\big),兩者相差 2(d+1)Nσ2\frac{2(d+1)}{N}\sigma^2。d+1d + 1 是參數個數,H2\mathcal{H}_2 是 3,H10\mathcal{H}_{10} 是 11。

兩張圖的差別有兩個。第一,收斂到的值不同:H10\mathcal{H}_{10} 包含 10 次的目標,極限只剩雜訊;H2\mathcal{H}_2 表示不了目標,極限比較高。講義的第一點就是這個:N→∞N \to \infty 時 H10\mathcal{H}_{10} 的 Eout‾\overline{E_{\text{out}}} 比較低。第二,EinE_{\text{in}} 與 EoutE_{\text{out}} 的距離不同:H10\mathcal{H}_{10} 的模型複雜度大,距離拉得很開。投影片上 H10\mathcal{H}_{10} 那張圖的 EoutE_{\text{out}} 在 NN 小的地方直接衝出圖的上緣。

兩張圖左邊都有一塊灰色區域,是 NN 小的範圍。在這個範圍裡比較兩張圖:H10\mathcal{H}_{10} 的 Ein‾\overline{E_{\text{in}}} 比較低,Eout‾\overline{E_{\text{out}}} 比較高。講義寫 gray area: O overfits!,結論是 R always wins in Eout‾\overline{E_{\text{out}}} if NN small。

課堂上的評語是「聰明反被聰明誤」:會的假說太多,EinE_{\text{in}} 做得很好,考試(EoutE_{\text{out}})卻考不好。他的建議是資料量不夠多的時候不要鑽牛角尖,用簡單的假說來解釋資料,雖然不完美,反而可能做得比較好。

數值例子:把灰色區域算出來

以下是本文自擬的例子,不在講義上。它是第一組實驗的縮小版:目標就在 O 的假說集合裡,資料有雜訊,R 連目標都表示不了。

設定。 目標 f(x)=xf(x) = x,yn=xn+ϵny_n = x_n + \epsilon_n,ϵn\epsilon_n 是互相獨立、平均 0、變異數 σ2\sigma^2 的雜訊。R 用 H0\mathcal{H}_0(常數),O 用 H1\mathcal{H}_1(直線),都用最小平方法。為了讓期望值手算得出來,xnx_n 固定取 [−1,1][-1, 1] 上等距的 NN 個點(講義的實驗裡 xx 是隨機抽的),所以 ∑nxn=0\sum_n x_n = 0;記 S=∑nxn2S = \sum_n x_n^2。測試時 xx 在 [−1,1][-1, 1] 上均勻分布,y=x+ϵy = x + \epsilon。這個例子的 EoutE_{\text{out}} 對含雜訊的 yy 算,和基石第 9 堂的學習曲線一致。期望值是對訓練資料的雜訊取的。

R 的 EoutE_{\text{out}}。 gR(x)=yˉg_R(x) = \bar{y}。因為 ∑nxn=0\sum_n x_n = 0,yˉ=ϵˉ\bar{y} = \bar{\epsilon},就是訓練雜訊的平均,它的變異數是 σ2N\frac{\sigma^2}{N}。測試點上的誤差是 y−gR=x+ϵ−ϵˉy - g_R = x + \epsilon - \bar{\epsilon},三項互相獨立、平均都是 0,平方的期望值就是三個變異數相加:

Eout‾(R)=13+σ2+σ2N\overline{E_{\text{out}}}(R) = \frac{1}{3} + \sigma^2 + \frac{\sigma^2}{N}

13\frac{1}{3} 是 E[x2]\mathbb{E}[x^2],是 R 表示不了斜率的代價,資料再多也不會消失。

O 的 EoutE_{\text{out}}。 ∑nxn=0\sum_n x_n = 0 時,最小平方直線的截距是 yˉ=ϵˉ\bar{y} = \bar{\epsilon},斜率是

∑nxnynS=∑nxn(xn+ϵn)S=1+∑nxnϵnS\frac{\sum_n x_n y_n}{S} = \frac{\sum_n x_n (x_n + \epsilon_n)}{S} = 1 + \frac{\sum_n x_n \epsilon_n}{S}

記 u=∑nxnϵn/Su = \sum_n x_n \epsilon_n / S,它的平均是 0,變異數是 ∑nxn2σ2/S2=σ2/S\sum_n x_n^2 \sigma^2 / S^2 = \sigma^2 / S。測試點上的誤差是 y−gO=ϵ−ϵˉ−uxy - g_O = \epsilon - \bar{\epsilon} - ux。ϵˉ\bar{\epsilon} 與 uu 的共變異數正比於 ∑nxn=0\sum_n x_n = 0,交叉項消失:

Eout‾(O)=σ2+σ2N+σ2S E[x2]=σ2(1+1N+13S)\overline{E_{\text{out}}}(O) = \sigma^2 + \frac{\sigma^2}{N} + \frac{\sigma^2}{S}\,\mathbb{E}[x^2] = \sigma^2\Big(1 + \frac{1}{N} + \frac{1}{3S}\Big)

等距的點 xn=−1+2(n−1)N−1x_n = -1 + \frac{2(n-1)}{N-1} 有 S=N(N+1)3(N−1)S = \frac{N(N+1)}{3(N-1)}(N=2N = 2 時兩點是 ±1\pm 1,S=2S = 2;N=3N = 3 時是 −1,0,1-1, 0, 1,S=2S = 2,都符合)。代進去,1N+N−1N(N+1)=2N+1\frac{1}{N} + \frac{N-1}{N(N+1)} = \frac{2}{N+1}:

Eout‾(O)=σ2(1+2N+1)\overline{E_{\text{out}}}(O) = \sigma^2\Big(1 + \frac{2}{N+1}\Big)

長相和基石第 9 堂的 σ2(1+d+1N)\sigma^2\big(1 + \frac{d+1}{N}\big)(這裡 d+1=2d + 1 = 2)幾乎一樣。

EinE_{\text{in}}。 O 的平均 EinE_{\text{in}} 是 σ2(1−2N)\sigma^2\big(1 - \frac{2}{N}\big),就是第 9 堂的公式。R 的殘差是 xn+ϵn−ϵˉx_n + \epsilon_n - \bar{\epsilon},平均 EinE_{\text{in}} 是 SN+σ2(1−1N)\frac{S}{N} + \sigma^2\big(1 - \frac{1}{N}\big)。

代數字。 取 σ2=4\sigma^2 = 4,雜訊比訊號大很多:

NNR 的 Ein‾\overline{E_{\text{in}}}R 的 Eout‾\overline{E_{\text{out}}}O 的 Ein‾\overline{E_{\text{in}}}O 的 Eout‾\overline{E_{\text{out}}}EoutE_{\text{out}} 誰低
23.0006.3330.0006.667R
33.3335.6671.3336.000R
53.7005.1332.4005.333R
93.9724.7783.1114.800R
104.0074.7333.2004.727O
204.1684.5333.6004.381O
1004.3004.3733.9204.079O
∞\infty4.3334.33344O

這代表什麼。 每一列 O 的 EinE_{\text{in}} 都比 R 低。N≤9N \le 9 時 O 的 EoutE_{\text{out}} 比較高,這幾列就是講義圖上的灰色區域:從 R 換到 O,EinE_{\text{in}} 降、EoutE_{\text{out}} 升。N≥10N \ge 10 之後 O 才贏,而且愈贏愈多,極限是 4 對 4.333,對應講義說的「N→∞N \to \infty 時 H10\mathcal{H}_{10} 的 EoutE_{\text{out}} 比較低」。

兩條 EoutE_{\text{out}} 相減是 σ2(2N+1−1N)−13=σ2N−1N(N+1)−13\sigma^2\big(\frac{2}{N+1} - \frac{1}{N}\big) - \frac{1}{3} = \sigma^2 \frac{N-1}{N(N+1)} - \frac{1}{3}。前一項是 O 多學一個斜率、多吃進來的雜訊,後一項是 R 表示不了目標的固定代價。雜訊愈大或資料愈少,前一項愈大,R 贏的範圍就愈寬;自我檢查第 3 題會算雜訊小的情況。

第二組:沒有雜訊,R 還是贏

第 10 頁回到 50 次目標、沒有雜訊的那一組。這次假設兩人都知道沒有雜訊,R 仍然贏。

課堂上先把疑問講出來:有雜訊的時候,可以說 g10g_{10} 是去靠近那些雜訊所以做壞了;現在沒有雜訊,g10g_{10} 為什麼還是做不好?然後反問一句,也是講義上的問句:is there really no noise? 他的回答是,其實有,只是另一種。要學的東西很複雜,那條彎彎曲曲的 50 次曲線,10 次的做不到,2 次的也做不到,做不到的那些差距,作用起來就像雜訊。講義的寫法是 'target complexity' acts like noise。「確定性雜訊」那一節會把這件事做成實驗。

Fun Time:R 什麼時候贏

題目(第 11 頁): 資料量有限時,下列哪種情況學習者 R 會表現得比學習者 O 好?

  1. 資料來自 10 次的目標函數,有一些雜訊
  2. 資料來自 1126 次的目標函數,沒有雜訊
  3. 資料來自 1126 次的目標函數,有一些雜訊
  4. 以上皆是

答案:4。 講義的解答說,1 和 2 是剛才討論過的兩組實驗,3 更困難,你應該能「generalize」出 R 也會贏。選項 1 就是第一組。選項 2 把 50 次換成 1126 次,目標更複雜,10 次多項式做不到的部分更多,那種「像雜訊的東西」只會更大。選項 3 是兩種一起來:目標複雜,又加了隨機的雜訊;1 和 2 單獨一種 O 都輸了,兩種疊在一起更不會翻盤。

題目開頭的「資料量有限」不能漏掉。上面的數值例子裡,N≥10N \ge 10 之後就是 O 贏。

確定性雜訊:目標太複雜時,沒有雜訊也會過擬合

YouTube:Hazard of Overfitting :: Deterministic Noise @ Machine Learning Foundations (機器學習基石)

(影片 00:00–03:41 是實驗設計與過擬合的量法,03:41–06:18 看兩張結果圖,06:18–09:43 是兩種雜訊與四個成因,09:43–12:56 定義確定性雜訊,之後是 Fun Time。)

一個更細的實驗

第 12 頁把資料的產生方式寫成式子,有三個可以調的量:

y=f(x)+ϵ,f(x)=∑q=0Qfαqxq,ϵ∼Gaussian(0,σ2)y = f(x) + \epsilon, \qquad f(x) = \sum_{q=0}^{Q_f} \alpha_q x^q, \qquad \epsilon \sim \text{Gaussian}(0, \sigma^2)
  • 雜訊強度 σ2\sigma^2: ϵ\epsilon 是獨立同分布的高斯雜訊。
  • 目標複雜度 QfQ_f: 目標是 QfQ_f 次多項式。先前那兩組實驗分別是 Qf=10Q_f = 10 和 Qf=50Q_f = 50。
  • 資料量 NN。

講義說 ff 是從 QfQ_f 次多項式裡用某種「均勻」的方式抽的,uniform 加了引號。課堂上解釋了為什麼不容易:如果直接隨機產生 Qf+1Q_f + 1 個係數,最高次項的係數常常很小,產生出來的多項式實際上彎曲的程度沒有那麼高,只是偽裝成 50 次的、次數比較低的多項式。所以產生的過程要先做一些正規化,確保抽到的大多是「真正的」QfQ_f 次多項式。細節課堂上沒有講,本文也不展開。

第 13 頁定義過擬合的量法。一樣是兩位學習者,g2∈H2g_2 \in \mathcal{H}_2 與 g10∈H10g_{10} \in \mathcal{H}_{10}。Ein(g10)≤Ein(g2)E_{\text{in}}(g_{10}) \le E_{\text{in}}(g_2) 一定成立,所以只需要看 EoutE_{\text{out}}:

overfit measure=Eout(g10)−Eout(g2)\text{overfit measure} = E_{\text{out}}(g_{10}) - E_{\text{out}}(g_2)

正的而且很大,表示過擬合得很嚴重;負的表示 10 次的那位真的做得比較好。

兩張結果圖

第 14 頁是兩張用顏色表示 overfit measure 的圖,色階從 −0.2-0.2(深藍)到 0.20.2(深紅),中間的 0 是綠色。兩張的橫軸都是資料量 NN,刻度標了 80、100、120。

左圖右圖
縱軸雜訊強度 σ2\sigma^2(刻度標 0、1、2)目標複雜度 QfQ_f(刻度標 0 到 100)
固定的量Qf=20Q_f = 20σ2=0.1\sigma^2 = 0.1
紅色(嚴重過擬合)左上:雜訊大、資料少左上:目標複雜、資料少
藍色(g10g_{10} 比較好)右下:雜訊小、資料多右下:目標不太複雜、資料多

左圖的紅藍交界是一條從左下往右上的斜帶:資料愈多,要愈大的雜訊才會過擬合。課堂上說這不意外,前面已經講過雜訊多、資料少會過擬合。

右圖比較有意思。它的大趨勢和左圖很像,課堂上的解讀是:目標愈複雜而資料不夠,這跟雜訊沒什麼兩樣。細看圖,兩張的交界形狀不同:右圖在 QfQ_f 大約 25 以上,紅藍交界幾乎是直的,整個左半邊都是深紅,右上角是淺藍,最深的藍在右下 QfQ_f 十幾到二十幾的地方。右圖還多了一個左圖沒有的特徵:QfQ_f 大約 10 的地方有一道水平的分界,分界以下,左端資料少的地方是紅色,往右很快轉成深藍;最貼近橫軸的那條細帶則整條是黃綠色(overfit measure 在 0 附近到略大於 0)。也就是目標很簡單時,圖上還是有過擬合的區域。這條帶子在說明四個成因時會解釋。

兩張圖底下,講義寫 ring a bell? 並放上課程的 logo。這兩張圖就是每堂講義封面上那個 logo 裡最大的兩塊(左上與右下,在中間相接)。課堂上順便講完另外兩小格:左下代表非線性轉換,右上代表線性的學習。

兩種雜訊,四個成因

第 15 頁給兩張圖各一個名字。左圖是 σ2\sigma^2 的影響,叫隨機雜訊(stochastic noise)。右圖是 QfQ_f 的影響,叫確定性雜訊(deterministic noise)。課堂上解釋命名:兩者都有雜訊的效果,一個是隨機產生的,另一個是固定的、算得出來的。

接著講義列出嚴重過擬合的四個原因:

原因方向在圖上的位置
資料量 NN↓兩張圖的左側
隨機雜訊↑左圖的上方
確定性雜訊↑右圖的上方
能力過剩(excessive power)↑右圖最底下那條帶子

第四個原因解釋了右圖底部。這個實驗比的是 2 次與 10 次。目標在 10 次以下時,會 10 次的那位就太強了;課堂上說拿他去解簡單題,資料裡又有雜訊(右圖固定 σ2=0.1\sigma^2 = 0.1),他會去擬合那些雜訊。這就是開車的比喻裡「開太快」那一列,用了過大的 dVCd_{\text{VC}},是原本就知道的原因。

課堂上強調的是另外三個:只要有雜訊,或者目標比你以為的複雜,換成更複雜的模型就可能過擬合,資料不夠多時尤其如此。講義的結論是 overfitting 'easily' happens。課堂上補了一個比喻:不熟機器學習就拿來用,像小孩開大車,很容易出車禍。

確定性雜訊的定義

第 16 頁給出定義。如果 f∉Hf \notin \mathcal{H},ff 就有某些部分是 H\mathcal{H} 裡任何假說都抓不到的。設 h∗h^* 是 H\mathcal{H} 裡最好的假說,確定性雜訊就是 h∗h^* 與 ff 之間的差。投影片的圖上,藍線是 ff,紅線是 h∗h^*,兩條線之間的灰色區域就是確定性雜訊。

講義說它 acts like 'stochastic noise',並說這件事對學電腦科學的人不新:pseudo-random generator。課堂上的說明是,電腦裡的亂數不是真的亂數,是一個很複雜的函數算出來的,我們一直在用一個確定的函數做出隨機的效果。

它和隨機雜訊有兩點不同:

  • 取決於 H\mathcal{H}。 課堂上說,假說集合更複雜時,理論上確定性雜訊會變小;只是 power 也變大了,所以還是變危險。
  • 對同一個 xx 是固定的。 課堂上的說法是:對同一個 xx 取很多次 yy,每次的確定性雜訊都一樣,隨機雜訊則每次不同。

頁尾是一句教育哲學:教小孩的時候,也許不要用來自複雜目標函數的例子比較好。課堂上拿教女兒數數字來講:小朋友的假說集合很簡單,教她數一二三四的時候,不會去講數論或實數的完備性,也不會講有理數以外還有無理數;整數都還沒學會,不必學那麼複雜的東西。教一個簡單的假說集合時不舉太複雜的例子,確定性雜訊會小一些。

數值例子:零雜訊的資料,算出過擬合

以下是本文自擬的例子,不在講義上。它對應第二組實驗:資料完全沒有雜訊,目標不在兩位學習者的假說集合裡。

設定。 目標 f(x)=x2f(x) = x^2,xx 在 [−1,1][-1, 1] 上均勻分布,y=x2y = x^2,沒有雜訊。資料只有 N=2N = 2 筆,x1x_1、x2x_2 獨立抽出。R 用 H0\mathcal{H}_0(常數),O 用 H1\mathcal{H}_1(直線)。Eout(g)=Ex[(g(x)−x2)2]E_{\text{out}}(g) = \mathbb{E}_x[(g(x) - x^2)^2]。除了先前的動差,還會用到 Var(x2)=E[x4]−(E[x2])2=15−19=445\text{Var}(x^2) = \mathbb{E}[x^4] - (\mathbb{E}[x^2])^2 = \frac{1}{5} - \frac{1}{9} = \frac{4}{45}。

第一步:確定性雜訊。 在 H1\mathcal{H}_1 裡找最好的 h(x)=w0+w1xh(x) = w_0 + w_1 x,也就是最小化 E[(x2−w0−w1x)2]\mathbb{E}[(x^2 - w_0 - w_1 x)^2]。對 w1w_1 微分得 −2 E[x(x2−w0−w1x)]=0-2\,\mathbb{E}[x(x^2 - w_0 - w_1 x)] = 0,即 E[x3]−w0E[x]−w1E[x2]=0\mathbb{E}[x^3] - w_0\mathbb{E}[x] - w_1\mathbb{E}[x^2] = 0;奇數次動差都是 0,所以 w1=0w_1 = 0。對 w0w_0 微分得 w0=E[x2]−w1E[x]=13w_0 = \mathbb{E}[x^2] - w_1\mathbb{E}[x] = \frac{1}{3}。最好的直線是一條水平線:

h∗(x)=13,deterministic noise=f(x)−h∗(x)=x2−13h^*(x) = \frac{1}{3}, \qquad \text{deterministic noise} = f(x) - h^*(x) = x^2 - \frac{1}{3}

它的平均平方是 Var(x2)=445≈0.089\text{Var}(x^2) = \frac{4}{45} \approx 0.089。H0\mathcal{H}_0 裡最好的常數也是 13\frac{1}{3},所以兩個假說集合的確定性雜訊在這個例子裡一樣大。它在每個 xx 上是固定的值:在 x=0x = 0 是 −13-\frac{1}{3},在 x=±1x = \pm 1 是 23\frac{2}{3}。

第二步:R 的表現。 gR=b=x12+x222g_R = b = \frac{x_1^2 + x_2^2}{2}。bb 是兩個獨立的 x2x^2 的平均,E[b]=13\mathbb{E}[b] = \frac{1}{3},Var(b)=12⋅445=245\text{Var}(b) = \frac{1}{2} \cdot \frac{4}{45} = \frac{2}{45}。把 x2−bx^2 - b 拆成 (x2−13)−(b−13)(x^2 - \frac{1}{3}) - (b - \frac{1}{3}),兩部分獨立、平均都是 0:

Eout‾(R)=445+245=215≈0.133\overline{E_{\text{out}}}(R) = \frac{4}{45} + \frac{2}{45} = \frac{2}{15} \approx 0.133

EinE_{\text{in}} 是 (x12−b)2+(x22−b)22=(x12−x22)24\frac{(x_1^2 - b)^2 + (x_2^2 - b)^2}{2} = \frac{(x_1^2 - x_2^2)^2}{4},期望值是 2 Var(x2)4=245≈0.044\frac{2\,\text{Var}(x^2)}{4} = \frac{2}{45} \approx 0.044。

第三步:O 的表現。 穿過 (x1,x12)(x_1, x_1^2) 與 (x2,x22)(x_2, x_2^2) 的直線,斜率是 x12−x22x1−x2=x1+x2\frac{x_1^2 - x_2^2}{x_1 - x_2} = x_1 + x_2,所以

gO(x)=(x1+x2) x−x1x2,Ein(gO)=0g_O(x) = (x_1 + x_2)\,x - x_1 x_2, \qquad E_{\text{in}}(g_O) = 0

記 s=x1+x2s = x_1 + x_2、p=x1x2p = x_1 x_2。Eout(gO)=Ex[(x2−sx+p)2]E_{\text{out}}(g_O) = \mathbb{E}_x[(x^2 - sx + p)^2],展開後奇數次項消失:

Eout(gO)=E[x4]+s2 E[x2]+p2+2p E[x2]=15+s23+p2+2p3E_{\text{out}}(g_O) = \mathbb{E}[x^4] + s^2\,\mathbb{E}[x^2] + p^2 + 2p\,\mathbb{E}[x^2] = \frac{1}{5} + \frac{s^2}{3} + p^2 + \frac{2p}{3}

再對資料取期望值:E[s2]=E[x12]+E[x22]=23\mathbb{E}[s^2] = \mathbb{E}[x_1^2] + \mathbb{E}[x_2^2] = \frac{2}{3}(交叉項 2 E[x1]E[x2]=02\,\mathbb{E}[x_1]\mathbb{E}[x_2] = 0),E[p2]=E[x12] E[x22]=19\mathbb{E}[p^2] = \mathbb{E}[x_1^2]\,\mathbb{E}[x_2^2] = \frac{1}{9},E[p]=0\mathbb{E}[p] = 0:

Eout‾(O)=15+29+19=815≈0.533\overline{E_{\text{out}}}(O) = \frac{1}{5} + \frac{2}{9} + \frac{1}{9} = \frac{8}{15} \approx 0.533

結果。

學習者平均 EinE_{\text{in}}平均 EoutE_{\text{out}}其中確定性雜訊其餘
R(H0\mathcal{H}_0)0.0440.044215≈0.133\frac{2}{15} \approx 0.133445\frac{4}{45}245≈0.044\frac{2}{45} \approx 0.044
O(H1\mathcal{H}_1)00815≈0.533\frac{8}{15} \approx 0.533445\frac{4}{45}49≈0.444\frac{4}{9} \approx 0.444

overfit measure 是 815−215=0.4\frac{8}{15} - \frac{2}{15} = 0.4,是正的。用 200 萬組隨機資料模擬,O 的平均 EoutE_{\text{out}} 是 0.5332、R 是 0.1333,和手算一致;其中約 97% 的資料組是 O 比較差。

這代表什麼。 資料裡一點隨機雜訊都沒有,從 R 換到 O 仍然是 EinE_{\text{in}} 降(0.044 → 0)、EoutE_{\text{out}} 升(0.133 → 0.533)。O 的直線每次都完美穿過兩個點,那兩個點的 yy 值裡含有直線表示不了的成分 x2−13x^2 - \frac{1}{3},O 把它當成斜率與截距學了進去,換一組資料就學到另一條線。「其餘」那一欄就是這種跟著資料晃動造成的誤差,O 是 R 的十倍。確定性雜訊在這裡的作用,和「三個點,三種模型」那個例子裡的 ±0.1\pm 0.1 一樣,都是模型不該照單全收的東西。

這個設定和 Fall 2024 HW4 Q8 很接近(那一題的目標是 1−2x21 - 2x^2,同樣用兩筆資料配一條直線)。本文換了目標函數,算的量也不同,不是那一題的解答。

Fun Time:sin(1126x) 的確定性雜訊

題目(第 17 頁): 目標函數是 sin⁡(1126x)\sin(1126x),x∈[0,2π]x \in [0, 2\pi],xx 在這個範圍內均勻抽樣。用所有的線性假說 h(x)=w⋅xh(x) = w \cdot x,以平方誤差去逼近目標。每個 xx 上的確定性雜訊大小是多少?

  1. ∣sin⁡(1126x)∣\lvert \sin(1126x) \rvert
  2. ∣sin⁡(1126x)−x∣\lvert \sin(1126x) - x \rvert
  3. ∣sin⁡(1126x)+x∣\lvert \sin(1126x) + x \rvert
  4. ∣sin⁡(1126x)−1126x∣\lvert \sin(1126x) - 1126x \rvert

答案:1。 講義的解答說,試幾個不同的 ww 就能說服自己最好的假說是 h∗(x)=0h^*(x) = 0,確定性雜訊是 ff 與 h∗h^* 的差。課堂上的理由是:最好的是平平的那條線,往上翹或往下翹都沒辦法配合 sin 函數;平的線是 0,所以確定性雜訊就是目標函數本身,取大小就加絕對值。

本文把 ww 算出來。最小化 E[(sin⁡(1126x)−wx)2]\mathbb{E}[(\sin(1126x) - wx)^2],對 ww 微分得 w∗=E[xsin⁡(1126x)]/E[x2]w^* = \mathbb{E}[x\sin(1126x)] \big/ \mathbb{E}[x^2]。分母是 12π∫02πx2 dx=4π23\frac{1}{2\pi}\int_0^{2\pi} x^2\,dx = \frac{4\pi^2}{3}。分子用分部積分,對整數 kk:

∫02πxsin⁡(kx) dx=[−xcos⁡(kx)k+sin⁡(kx)k2]02π=−2πk\int_0^{2\pi} x \sin(kx)\,dx = \Big[-\frac{x\cos(kx)}{k} + \frac{\sin(kx)}{k^2}\Big]_0^{2\pi} = -\frac{2\pi}{k}

除以 2π2\pi 得 E[xsin⁡(1126x)]=−11126\mathbb{E}[x\sin(1126x)] = -\frac{1}{1126}。所以

w∗=−34π2×1126≈−6.7×10−5w^* = -\frac{3}{4\pi^2 \times 1126} \approx -6.7 \times 10^{-5}

這個數字和 0 的差別只在計算上看得出來:在整個 [0,2π][0, 2\pi] 上,∣w∗x∣\lvert w^* x \rvert 最大也只有 4.2×10−44.2 \times 10^{-4},h∗h^* 的平均平方誤差是 0.499999940.49999994,w=0w = 0 是 0.50.5。講義說 h∗(x)=0h^*(x) = 0、確定性雜訊是 ∣sin⁡(1126x)∣\lvert \sin(1126x) \rvert,就是這個意思;四個選項裡也只有選項 1 對應到這條幾乎平的線,答案是 1 沒有疑問。直觀上,sin⁡(1126x)\sin(1126x) 在 [0,2π][0, 2\pi] 裡來回 1126 個週期,正的半邊和負的半邊幾乎完全抵銷,任何斜率都對不上它。

其他選項各對應一個特定的 ww:選項 2 是 w=1w = 1,選項 3 是 w=−1w = -1,選項 4 是 w=1126w = 1126。數值積分算出的平均平方誤差是:w=0w = 0 時 0.5,w=±1w = \pm 1 時約 13.66,w=1126w = 1126 時約 1.67×1071.67 \times 10^7。它們都離最好的假說很遠,和 ff 的差就不是確定性雜訊。

這題和上面的例子一樣,最好的線性假說是(幾乎)什麼都不做,目標的全部變化都成了確定性雜訊。

怎麼對付過擬合:先從資料下手

YouTube:Hazard of Overfitting :: Dealing with Overfitting @ Machine Learning Foundations (機器學習基石)

(影片 00:00–03:18 回到開車的比喻並列出五種對策,03:18–06:28 是資料清理與修剪,06:28–08:37 是 data hinting,08:37–09:40 是 Fun Time,之後是整堂的總結。)

五種對策

第 18 頁把第 4 頁那張開車的比喻表往下加了五列:

學習開車課堂上的說明
從簡單的模型開始開慢一點開快車會撞,就開慢一點
資料清理/修剪(data cleaning/pruning)用更準確的路況資訊路況資料可能有雜訊,把它弄準一點
data hinting利用更多路況資訊收集不到更多資料時,從現有資料或對問題的了解產生新的
正則化(regularization)踩煞車可以開快車,但適時踩煞車
驗證(validation)看儀表板隨時看自己開得好不好

第一列上一堂已經講過,上一堂的建議是先試 H1\mathcal{H}_1。正則化留給基石第 14 堂:正則化,驗證留給基石第 15 堂:驗證。這堂只簡單講中間兩列。

講義的評語是 all very practical techniques to combat overfitting。課堂上講得更重:這些是把機器學習做好的實務工具,有時要綜合使用,一個不行就換另一個;這些人類幫助機器學得更好的方式,有時候比演算法本身還重要。

把這張表和四個成因對起來看(本文整理):資料清理與修剪處理的是隨機雜訊,data hinting 處理的是資料量,從簡單的模型開始與正則化處理的是能力過剩。確定性雜訊取決於目標和假說集合的差距,沒有直接對應的一列。

資料清理與修剪

第 19 頁用基石第 3 堂:學習的種類出現過的手寫數字例子:分辨 1 和 5,每張圖轉成兩個具體的特徵,畫在平面上。藍色圓圈是 1,聚在上方;紅色叉叉是 5,分布在下方。有一個被標成 5 的點落在左上角,緊貼著那群圓圈。投影片把它的原圖拉出來,看起來只是一筆橫線。課堂上說怎麼看都看不出它為什麼是 5,說它比較像 1 還比較有可能。

怎麼「偵測」出這種點,講義列了幾個線索,最後加了刪節號表示還有別的:

  • 它離其他的 ○ 太近,或離其他的 × 太遠。
  • 先學出一個分類器,它被這個分類器分錯,而且錯得很離譜。

偵測到之後有兩種處理:

  • 資料清理(data cleaning): 把標籤改正。課堂上說也可以找人重新標一次。
  • 資料修剪(data pruning): 把這筆資料拿掉,用少一點但乾淨的資料訓練。

講義的評語是 possibly helps, but effect varies。課堂上解釋了兩個原因。第一,難的是偵測:哪一筆是壞的點沒有保證有效的辦法,各種做法各有取捨。第二,就算找到了,影響也可能很小:這個例子裡藍點、紅點都非常多,那一個標錯的叉叉改不改、丟不丟,對整體的學習結果可能差不了多少。有些問題上則會看到明顯的好處。

Data hinting:用 virtual examples 補資料

第 20 頁還是手寫數字。投影片上排了幾十個數字的圖,它們都有一點歪斜或位移。講義的觀察是:稍微平移或旋轉過的數字,意思不變。課堂上的例子是寫一個 3,稍微轉一下還是 3。

所以手上沒有更多資料、又想把這個知識告訴電腦時,可以拿現有的數字去平移、旋轉,產生新的資料加進去重新訓練。這些新資料叫 virtual examples,這個做法叫 data hinting:給演算法多一點提示。

講義的評語是 possibly helps, but watch out,並給了具體的理由:virtual examples 不是從 P(x,y)P(\mathbf{x}, y) 獨立同分布抽出來的。課堂上的解釋是,前面的理論都假設 (xn,yn)(\mathbf{x}_n, y_n) 獨立同分布地來自某個分布,新造的這些絕對不是從那裡來的。他說這種做法在特定的應用上、把對問題領域的知識放進去時可能有用,但加進去的資料要有道理,也不要和原本的差太遠;偏離原本的分布太多,可能學到把轉來轉去的都分對了,原本的反而沒分對。他順口舉了一個轉過頭的例子:6 轉 180 度會變成 9。

Fun Time:對稱的目標該加哪種 virtual examples

題目(第 21 頁): 某個一維迴歸問題,已知 f(x)f(x) 是對稱的,也就是 f(x)=f(−x)f(x) = f(-x)。運用這個知識的一種方式是只考慮對稱的假說。另一種方式是從原始資料 {(xn,yn)}\{(x_n, y_n)\} 產生 virtual examples 當提示。哪一種 virtual examples 最合適?

  1. {(xn,−yn)}\{(x_n, -y_n)\}
  2. {(−xn,−yn)}\{(-x_n, -y_n)\}
  3. {(−xn,yn)}\{(-x_n, y_n)\}
  4. {(2xn,2yn)}\{(2x_n, 2y_n)\}

答案:3。 講義的解答是:我們希望 virtual examples 能表達 x→−xx \to -x 時的不變性。yn≈f(xn)y_n \approx f(x_n),而 f(−xn)=f(xn)f(-x_n) = f(x_n),所以在 −xn-x_n 這個位置,合理的標籤就是 yny_n。

其他選項各表達了另一種性質,都不是題目給的。選項 1 在同一個 xnx_n 上放兩個相反的標籤,等於告訴演算法 f(xn)f(x_n) 大約是 0。選項 2 表達的是 f(−x)=−f(x)f(-x) = -f(x),奇函數。選項 4 表達的是 f(2x)=2f(x)f(2x) = 2f(x),像通過原點的直線那種性質。

本文補充,看這些提示實際上做了什麼。把 (xn,yn)(x_n, y_n) 和 (−xn,yn)(-x_n, y_n) 一起拿去配最小平方直線 w0+w1xw_0 + w_1 x。合併後的資料 xx 的平均是 0,而

∑x y=∑nxnyn+∑n(−xn) yn=0\sum x\,y = \sum_n x_n y_n + \sum_n (-x_n)\,y_n = 0

斜率的分子是 0,所以 w1=0w_1 = 0。加了提示之後,直線自動變成對稱的水平線,和「只考慮對稱的假說」得到一樣的結果。

套回確定性雜訊那個例子:目標 x2x^2 正好是對稱的。O 拿到兩筆資料後補上 (−x1,x12)(-x_1, x_1^2) 與 (−x2,x22)(-x_2, x_2^2),四個點配出來的直線是 g(x)=x12+x222g(x) = \frac{x_1^2 + x_2^2}{2},和 R 的答案一模一樣,平均 EoutE_{\text{out}} 從 815\frac{8}{15} 降到 215\frac{2}{15}。這個例子裡鏡射出來的點沒有偏離原本的分布(雖然它和原來那一筆不獨立),因為 xx 的分布本身對稱、目標也真的對稱;題目若換成不對稱的分布,鏡射過去的點就會落在原本很少出現資料的地方,那就是講義要你小心的情況。

這堂課的總結

第 22 頁把四節各收成一句:過擬合是 lower EinE_{\text{in}} but higher EoutE_{\text{out}};它很容易發生;H\mathcal{H} 抓不到的部分作用起來像雜訊;對策有資料清理、修剪、hinting 與其他。課堂上的收尾是:原因是雜訊、資料不夠、power 太多,而目標太複雜也可以看成一種雜訊;今天講的是從資料下手的簡單做法,可能有用,也可能沒用。下一堂的預告是 putting the brakes with regularization,學怎麼踩煞車。

自我檢查

1. 三個模型在同一份資料上的結果是:A(Ein=0.20E_{\text{in}} = 0.20、Eout=0.25E_{\text{out}} = 0.25),B(0.100.10、0.150.15),C(0.010.01、0.900.90),複雜度 A < B < C。哪些說法可以用「壞的泛化」「過擬合」「欠擬合」來描述?

答案:C 本身是壞的泛化(EinE_{\text{in}} 低、EoutE_{\text{out}} 高,差了 0.89)。從 B 換到 C 是過擬合(EinE_{\text{in}} 0.10 → 0.01,EoutE_{\text{out}} 0.15 → 0.90)。從 B 換到 A 是欠擬合(兩者都上升)。判準:過擬合與欠擬合一定要講出「從哪個模型換到哪個模型」;只說「C 過擬合了」是把狀態和過程混在一起。

2. 目標 f(x)=x3f(x) = x^3,xx 在 [−1,1][-1, 1] 上均勻分布,假說集合是 h(x)=wxh(x) = wx,用平方誤差。最好的 ww 是多少?確定性雜訊的平均平方是多少?

答案:w∗=E[x⋅x3]/E[x2]=1/51/3=35w^* = \mathbb{E}[x \cdot x^3] / \mathbb{E}[x^2] = \frac{1/5}{1/3} = \frac{3}{5}。確定性雜訊是 x3−35xx^3 - \frac{3}{5}x,平均平方是 E[x6]−2⋅35E[x4]+925E[x2]=17−625+325=4175≈0.023\mathbb{E}[x^6] - 2 \cdot \frac{3}{5}\mathbb{E}[x^4] + \frac{9}{25}\mathbb{E}[x^2] = \frac{1}{7} - \frac{6}{25} + \frac{3}{25} = \frac{4}{175} \approx 0.023。這題的 h∗h^* 不是 0,和 Fun Time 的 sin⁡(1126x)\sin(1126x) 不同:x3x^3 有一部分是直線抓得到的,抓不到的才是確定性雜訊。

3. 在「把灰色區域算出來」那個例子裡,把雜訊改成 σ2=1\sigma^2 = 1。R 在哪些 NN 會贏?一般來說 σ2\sigma^2 要多大,R 才有機會贏?

答案:兩條 EoutE_{\text{out}} 的差是 σ2N−1N(N+1)−13\sigma^2\frac{N-1}{N(N+1)} - \frac{1}{3}。N−1N(N+1)\frac{N-1}{N(N+1)} 在 N=2N = 2 與 N=3N = 3 時都是 16\frac{1}{6},N=4N = 4 時是 320\frac{3}{20},之後繼續變小,所以最大值是 16\frac{1}{6}。σ2=1\sigma^2 = 1 時差最多是 16−13<0\frac{1}{6} - \frac{1}{3} < 0,O 在每個 N≥2N \ge 2 都贏,沒有灰色區域。要讓 R 在某個 NN 贏,需要 σ26>13\frac{\sigma^2}{6} > \frac{1}{3},也就是 σ2>2\sigma^2 > 2。雜訊小的時候,資料再少也不會過擬合,這是四個成因裡「隨機雜訊 ↑」那一列。

4. 講義說確定性雜訊取決於 H\mathcal{H}:H\mathcal{H} 愈大,確定性雜訊愈小。那為什麼從 H2\mathcal{H}_2 換到 H10\mathcal{H}_{10} 反而過擬合?

判準:答案要把兩件事分開。確定性雜訊是 h∗h^* 與 ff 的差,H\mathcal{H} 變大時最好的 h∗h^* 更接近 ff,這個差確實變小。但資料有限時學到的不是 h∗h^*,更大的 H\mathcal{H} 有更多自由度去配合手上那幾筆資料裡的雜訊(兩種雜訊都算),這是「能力過剩」那個成因。50 次目標的實驗裡,10 次多項式的確定性雜訊比 2 次的小,EoutE_{\text{out}} 卻是 7680 對 0.120。能舉出學習曲線或上面零雜訊例子的「其餘」那一欄更好。

5. 做手寫數字辨識時,有人把每張圖旋轉 180 度、標籤不變,當成 virtual examples 加進訓練資料。哪裡有問題?

答案:標籤不變的前提是「這個變換不改變意思」。小角度的旋轉成立,180 度不成立:6 會變成 9。這批 virtual examples 等於塞進一批標錯的資料,也就是自己製造隨機雜訊。就算挑不受影響的數字(例如 0、8),正常的資料裡幾乎不會出現倒過來寫的數字,這些點離 P(x,y)P(\mathbf{x}, y) 很遠,是講義 watch out 那一句說的情況。

練習與對應閱讀

兩個學期的對應週次。 Fall 2024 課程頁把這堂和下一堂排在同一週(W7,10/14),這堂的投影片是 13u_handout.pdf。Fall 2026 課程頁排在 W7(10/21),2026-09-30 查核時那一週的投影片連結還是 404,所以本文只用 MOOC 版講義。

教科書。 兩份課程頁都把這堂標在 Learning from Data(LFD)的 4.0 與 4.1 節。

作業。 相關的題目在 Fall 2024 的 HW4(2024-10-21 發布、11-04 截止)與 HW5(11-04 發布、11-18 截止),都沒有官方解答:

  • HW4 Q8:目標 f(x)=1−2x2f(x) = 1 - 2x^2,用直線 h(x)=w0+w1xh(x) = w_0 + w_1 x 去近似,只取兩筆資料做線性迴歸,求 ED(∣Ein(g)−Eout(g)∣)\mathbb{E}_{\mathcal{D}}(\lvert E_{\text{in}}(g) - E_{\text{out}}(g) \rvert)。這是 ff 不在 H\mathcal{H} 裡的情形,可以先照本文零雜訊例子的做法,把 gg 用 x1x_1、x2x_2 寫出來再取期望值。
  • HW4 Q9:題目明寫「In Lecture 13」。對輸入加高斯雜訊來產生 virtual examples,推導 E(Xh⊤Xh)\mathbb{E}(X_h^\top X_h) 的形式;題目的附註指出它和正則化線性迴歸要反轉的矩陣有關。
  • HW5 Q5:證明加入特定 virtual examples 的線性迴歸,和加權的 L2 正則化有相同的解。這題把這堂的 data hinting 接到下一堂的正則化,讀完下一堂再做。

整份作業的導讀在基石作業導讀。

動手做。 看第二支影片之前,先自己猜兩組實驗誰贏,再對照第 7 頁的表。看第三支影片時,把四個成因抄下來,每個配一個你工作上見過的例子。想自己重現第 7 頁的話,用 numpy 產生一個 10 次多項式加雜訊的資料集,取十幾筆,分別用 numpy.polyfit 配 2 次與 10 次,再用另外抽的幾千筆算 EoutE_{\text{out}};數字不會和講義一樣(講義沒有公開那組資料),但 g10g_{10} 的 EoutE_{\text{out}} 大幅高於 g2g_2 的現象應該看得到。

延伸閱讀。 同一個主題的另一種講法是偏差與變異的分解,見 Stanford CS229 第 6 堂:偏差與變異、正規化與模型選擇。

下一堂。 基石第 14 堂:正則化處理比喻表裡的「踩煞車」:怎麼在 H10\mathcal{H}_{10} 裡學,又不讓它用盡全部的能力。

課程影片來源

原始影片:What is Overfitting?、The Role of Noise and Data Size、Deterministic Noise、Dealing with Overfitting

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

更新紀錄

  • 2026-10-13:原本與第 14 堂合為一篇,改為一堂一篇,依講義與影片逐字稿重寫。
  • 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
  • 2026-10-10:重查影片狀態。嵌入影片與官方播放清單的講次相符。

參考資料