影片狀態:已附影片。 這篇依 Stanford Online 公開的 Spring 2026 第 6 堂錄影的英文字幕寫成,公式記號對照 2026 主講義第 8 章與第 9 章;字幕看不到板書與投影片畫面,公式的寫法是依講者口述與講義還原的。
第 6 堂是 Stanford CS229 進入神經網路之前的最後一堂。前五堂(到上一堂的高斯判別分析為止)都假設手上有一份固定的訓練集,問題是怎麼把模型配適上去。這一堂換一個問題:訓練集本身是抽樣來的,換一份樣本,學出來的模型會差多少?這個問題的答案就是偏差與變異。
這一堂由 Chris Ré 主講。先備是線性迴歸的正規方程式(normal equation)、期望值與變異數的基本運算、特徵值分解。讀完之後,你應該能自己推出偏差–變異分解,能從 ridge regression 的閉式解說明正規化為什麼會降低變異,也知道超參數該用哪一份資料挑。
這堂課要回答的問題
(錄影 00:00–03:10)
講者開場就把整堂課收成一句話:手上只有一份有限、帶雜訊的樣本,要怎麼挑出一個在新資料上也表現好的模型。我們在訓練集上訓練,在測試集上使用,想要的是一套只看訓練集就能盡量保證未來表現的程序。
課程順序是:先用圖看過度配適(overfitting)與配適不足(underfitting),再把圖變成數學,也就是偏差–變異分解;接著用正規化(regularization)處理變異;然後是兩段講者自己說「忍不住要加」的近年研究,雙降(double descent)與 ImageNet-V2;最後是模型選擇。
影片標題是「Dataset Split, ML Advice」,但資料集切分只占最後五分鐘左右,整堂課的主體是偏差與變異和 ridge regression。講者也明講哪一半會考:
"what's likely to be on your test is the first part of what's going on, not the second part"(00:10:14)
用圖看配適不足與過度配適
(錄影 03:10–19:50)
設定:真實函數看不到,只看得到樣本
假設世界上有一個真實函數 ,課堂上的例子是一條二次曲線。我們永遠看不到 ,只看得到它產生的資料:
和前幾堂不同的地方在這裡:訓練集不再是固定的。講者要大家想像抽了三份訓練集 ,底下是同一條曲線,但每份抽到的點不同、每個點上的雜訊也不同。然後對三份資料各自配適同一種模型,看模型怎麼跟著變。理想的學習程序不管拿到哪一份,都該吐回同一個真實模型;實際上做不到,而做不到的方式有兩種。
直線:怎麼抽都彎不過去
先配適直線。三份資料得到三條略有不同的直線,但每一條都有明顯誤差。重點是這個誤差跟抽樣無關:真實函數是彎的,直線表示不了彎曲,你再抽多少次都一樣。講者把這種情況叫做高偏差(high bias),模型配適不足,解法是增加自由度。
九次多項式:每換一份資料就換一條曲線
再配適高次多項式。講者說投影片上的圖是九次,並提到講義裡寫的是五次(講義圖 8.5 確實用五次)。只要多項式的係數個數不少於資料點數,就能穿過每一個點,所以訓練誤差是零。可是三份資料得到的三條曲線看起來完全不像同一個函數:在同一個 上,一條預測極大,一條預測很小。講者的說法是模型在配適雜訊而不是訊號,這是高變異(high variance)、過度配適。把 學到的函數拿到 上測,誤差會非常大。
剛剛好的模型也不會零誤差
配適二次多項式時,三份資料得到的曲線彼此接近,也都貼近真實曲線。它還是會有誤差,但那是資料本身的誤差:拿到一份抽得很差的訓練集,不該怪模型類別。
所以測試時的誤差有三個來源:資料裡消不掉的雜訊、模型類別表示不了真相造成的偏差、以及模型隨訓練集跳動造成的變異。接下來的數學就是把這三項分開。講者在這裡說:
"Keep these pictures in your head. All the math is basically just these pictures."(00:11:15)
古典的 U 形曲線
把模型複雜度放橫軸(多項式次數、參數個數、假設類別的大小),偏差隨複雜度下降,變異在過了某一點之後上升,兩者相加的測試誤差呈 U 形。以多項式來說,令 是真實函數的次數:次數 時偏差消失,因為把多出來的高次係數設成零就能表示真相; 時有偏差; 遠大於 時變異變大。
實務上我們不知道 。這堂課後半的做法是:先用一個表達力很強的類別,再靠正規化把有效的複雜度壓下來。
講者順便定義了一個後面會用到的詞:
"Interpolation means the ability to fit the training set with zero loss."(00:14:20)
內插(interpolation)就是把訓練集配適到零損失。高次多項式內插之後會亂抖,可是很大的深度網路內插了訓練集卻還能泛化;講者說這出自一系列談「rethinking generalization」的論文,資深作者是他的朋友 Ben(字幕記成「Ben Rex」,應是 Ben Recht)。這是後面雙降那一段的伏筆。
兩個課堂提問
有學生問:訓練誤差是不是反映偏差、測試誤差反映變異?講者的回答是,這個直覺大致對,但測試誤差裡除了變異還有雜訊,偏差平方也會出現在測試誤差裡;訓練誤差高主要是偏差,實務上也可能是最佳化沒做好(錄影 16:24–17:24)。
分類問題也有同樣的現象。決策邊界如果出現很多細小的孤島,特徵稍微動一下就換類別,通常是過度配適的警訊。講者補充這只是警訊,真實的類別邊界確實可能長那樣,只是直覺上比較不可能(錄影 17:24–19:50)。
偏差–變異分解:把測試誤差拆成三項
(錄影 19:50–40:53)
思想實驗的四個步驟
- 固定一個測試點 。這個點是任意的,推論不能依賴它的特殊性質。
- 抽 筆訓練資料,組成訓練集 。
- 在 上訓練,得到假設 。講者特別說不必是線性迴歸,任何假設類別都行。
- 在測試點上抽一個新的觀測 ,計算平方誤差 。
我們要分析的量是這個平方誤差對所有隨機性取期望:
這裡有兩個隨機來源:訓練集 的抽樣,和測試點上的雜訊 。兩者獨立,因為測試點的雜訊是訓練完之後才另外抽的。
講者花了不少時間強調 是一個很複雜的隨機變數:它是「抽一整份訓練集、再跑一次訓練演算法」的結果,對神經網路來說根本寫不出分布。但推導只需要它的一個性質:對 取期望有定義。相對地, 很簡單,平均是零、變異數是 。
第一步:分出雜訊
把 代進去,再把平方展開:
三項分別處理:
- 。因為 平均為零,二階動差就是變異數。
- 中間的交叉項是零。 與 獨立,所以期望可以拆成乘積 ,而 。這一步同時用到「獨立」和「零平均」兩個條件,缺一個都不成立。
- 第三項留到下一步。
於是
是測試資料本身的量測誤差,模型再好也消不掉。有學生問為什麼測試點也要加雜訊,講者的回答是測試資料跟訓練資料用同一個過程產生,同樣不乾淨;想看沒有雜訊的情況,把 設成零就好,其餘推導不變(錄影 28:43–29:43)。
第二步:引入平均模型
定義「長期平均預測」:
意思是把所有可能抽到的、大小為 的訓練集都拿來訓練一次,把它們在 上的預測平均起來。這個量算不出來,只是分析用的工具。注意 是對 取完期望的結果,所以它是一個常數,不再跟 有關。
在第二項裡加一個 再減一個 :
平方後取期望:
交叉項裡 是常數,可以提出期望外;剩下的 ,這直接來自 的定義。最後一項正是 的變異數。合起來:
講義把這兩次「交叉項為零」收成一個引理(Claim 8.1.1):、 獨立且 時,。課堂上沒有寫成引理,直接展開兩次。
三項各自在說什麼
- 偏差平方:平均模型離真相多遠。式子裡沒有任何單一訓練集,它是模型類別與訓練程序的性質。直線配不出拋物線,就是這一項。
- 變異:單次訓練出來的模型離平均模型多遠。高次多項式換一份資料就亂跳,就是這一項。
- 雜訊:誰也沒辦法的部分。
這個分解不需要假設 落在我們的假設類別裡。有學生問了這件事,講者說類別選錯的代價會由偏差項付出,推導本身不受影響(錄影 23:34–25:37)。
還有三個容易誤會的地方,課堂上都有人問:
不是「把所有資料合起來訓練一次」。 它是很多個「用 筆資料訓練」的模型的平均。兩者有可能相等,但不保證;講者說相等的性質叫一致性(consistency)(錄影 37:52)。講義則說在很多情況下 近似於用無限多資料訓練出來的模型。
用直線配二次資料時, 是什麼? 講者的回答是:如果真相是 ,平均下來的直線大致是 再加上一個常數位移(錄影 38:52)。下一節的數值例子會看到這個常數。
這個推導只對平方損失的迴歸成立。 講者說分類等情況有類似的分解,但課堂上沒有證明(錄影 36:51)。講義的說法更保守:分類的偏差–變異分解有好幾種提案,目前沒有公認的形式。
算一次:三個訓練點、三種模型
以下是本文自擬的例子,不是課堂內容,用來把上面三項實際算出數字。為了能用手算,訓練點的 固定不抽樣,只有雜訊是隨機的;課堂上的設定則是連 也一起抽。
設定。 真實函數 。訓練集固定取三個點 ,觀測值 ,也就是 、、,三個雜訊獨立、變異數都是 。測試點取 ,真值 。
三種模型在 的預測。 最小平方解都是 的線性組合,所以預測可以寫成 。
- 常數模型:最小平方解是平均,預測 ,權重 。
- 直線:三個 對稱於零,截距是 ,斜率是 。在 的預測是截距加 倍斜率,權重 。
- 二次多項式:三個係數配三個點,剛好內插。用 Lagrange 內插公式,在 的權重是 。
平均模型與偏差。 對雜訊取期望,,所以 :
- 常數:,偏差平方 。
- 直線:,偏差平方同樣是 。平均下來的直線斜率是零、截距是 ,這就是講者說的「 加一個常數」:這裡 ,常數是 在三個訓練點上的平均。
- 二次:,偏差是零,因為真相就在類別裡。
變異。 預測的隨機部分是 ,變異數是 :
- 常數:
- 直線:
- 二次:
合計。
| 模型 | 偏差平方 | 變異(σ² = 0.25) | 測試誤差(σ² = 0.25) | 變異(σ² = 1) | 測試誤差(σ² = 1) |
|---|---|---|---|---|---|
| 常數 | 0.1736 | 0.0833 | 0.5069 | 0.3333 | 1.5069 |
| 直線 | 0.1736 | 0.1146 | 0.5382 | 0.4583 | 1.6319 |
| 二次 | 0 | 0.1797 | 0.4297 | 0.7188 | 1.7188 |
測試誤差是雜訊 、偏差平方與變異三項相加。我另外用四十萬次模擬驗算過,六個數字都在小數第二位以內吻合。
這個結果代表什麼。 雜訊小()時,二次模型最好:它沒有偏差,多出來的變異還付得起。雜訊大()時,排名整個反過來,最笨的常數模型贏了「正確」的二次模型,因為只有三個點,二次模型的變異 遠超過它省下的偏差 。直線在兩種情況都輸給常數:在這個測試點上它沒有降低任何偏差,卻多了變異。
所以「該用多複雜的模型」沒有脫離資料量與雜訊的答案,連模型類別包含真相都不保證它最好。這也是講者接下來要引進正規化的理由:與其在幾個離散的模型類別裡選,不如讓複雜度可以連續調。
開發集與正規化的想法
(錄影 40:53–43:55)
分解給了兩個後續方向。
第一,偏差與變異的合計效果可以用實驗量出來。從資料裡另外留一份隨機樣本,不拿來訓練,只用來調參數、比較做法,叫做開發集(dev set)或保留集(holdout set)。它讓你不必動到測試集就能估計測試誤差。
第二,變異通常靠正規化降低,代價是多一點偏差。因為測試誤差是三項相加,只要偏差平方上升的量小於變異下降的量,就划算。講者把通則講成一句話:
"You trade a little bit of bias for a big variance reduction."(00:40:53)
正規化也有貝氏的讀法:它是把事前知識寫進去,例如「我知道這條線不會太陡」,等於說 的各分量平均而言不該太大。
Ridge regression:在特徵值上看偏差換變異
(錄影 43:55–57:00)
目標函數與兩個極端
Ridge regression 是在最小平方的目標上加一個懲罰項。字幕看不到投影片上的常數,以下採用讓推導最乾淨的寫法:
懲罰項在資料求和的外面,只算一次。課堂用 當正規化強度,因為 要留給特徵值;講義第 9 章則用 當正規化參數,對照時要留意。
直覺是: 可以變大,但要值得,也就是它必須讓資料配適得好很多。 時退回普通最小平方; 極大時,目標只在乎懲罰項,最好的做法是預測零。兩者之間有一個最合適的值,而它取決於資料,事前很難知道,所以 要從資料裡挑。這種挑法叫超參數最佳化,最後一節會談。
有學生問為什麼懲罰係數的大小而不是別的。講者說懲罰的形式是建模選擇,可以要求稀疏、可以用別的範數,沒有對錯;選平方是因為數學最乾淨,而且實務常見:深度學習的 weight decay 和 dropout 都可以解讀成某種 正規化(錄影 43:55–45:57)。講義 9.1 節有 weight decay 的一行推導:對正規化後的損失做梯度下降,換成課堂的記號,更新式是 (這裡的 是沒加懲罰項的損失),每一步先把權重乘上一個小於 1 的係數,名字由此而來。
樣本比維度少:懲罰項挑出最小範數解
設 且 ,樣本數比維度少。這時 不是滿秩, 有非零的零空間(null space)。取零空間裡任一個向量 ,有 ,所以
和 在訓練資料上的預測完全一樣,損失也一樣。最佳解有無限多個,該挑哪一個?
把任何解拆成兩個互相垂直的部分:,其中 在零空間, 在與零空間垂直的方向。兩個向量垂直時,範數平方可以直接相加(把內積展開,交叉項 ):
對配適沒有任何貢獻,卻要付 的懲罰,所以最佳解會把 設成零。懲罰項不需要知道零空間在哪個方向,就自動把所有無用的分量壓掉:在預測完全相同的那一整族解裡,留下的是範數最小的那一個。講者的說法是懲罰項逼我們去選最小範數解(minimum norm solution),並提到 Moore–Penrose 虛反矩陣(pseudoinverse)挑的也是最小範數解,推導放在投影片附錄。
要補一個細節(本文補充): 時懲罰項也會把 往零拉一點,講者的原話是「shrink theta 0 a little bit」,所以 ridge 的解不會剛好等於零誤差解裡範數最小的那一個; 愈小兩者愈接近, 的極限才是它。下面的小例子看得到這件事。
一個本文自擬的小例子:只有一筆資料 、,兩個參數。所有滿足 的 都是零誤差,可以寫成 ,範數平方是 ,在 時最小,最小範數解是 。Ridge 的解是 : 時是 , 時是 , 時趨近 。它永遠不會沾到 方向。
閉式解與特徵值位移
對 求梯度並設為零:
懲罰項的梯度就是 ,移項後剛好變成 加在 上。所以
反矩陣一定存在嗎?設 的特徵值是 。加上 不改變特徵向量,只把每個特徵值平移成 。講者在這裡問全班用了什麼性質,答案是 半正定,所以 ;一個非負數加上嚴格正的 一定嚴格為正,矩陣因此滿秩、可逆。
變異付在小特徵值上
課堂上這一段用講的,沒有完整寫出式子(講者說變異裡的特徵值項從 變成 ridge 的版本)。下面的式子是我依課堂的設定補完的推導。
假設 ,雜訊各分量獨立、變異數 ,並把 當成固定。代入閉式解:
第一項是確定的,第二項是雜訊乘上一個固定矩陣 。固定矩陣乘上雜訊向量的共變異數矩陣是 ,這就是講者說的「一個隨機變數乘上一個矩陣,算出共變異數」那個計算。
接著換到特徵向量座標。把 寫成 , 的各行是互相垂直的單位特徵向量, 是對角線為 的對角矩陣。因為 ,有 ,反矩陣是 。代回去:
中間夾的都是對角矩陣,第 個對角元素分別是 與 。所以只要改用特徵向量座標,也就是看 與 的第 個分量(以下直接記成 與 ),各方向之間的共變異數是零,可以一個方向一個方向分開看:
令 就是普通最小平方:期望值等於 (無偏),變異數是 。
問題出在小特徵值。 很小代表沿那個特徵向量方向大幅移動 ,損失幾乎不變,資料對那個方向沒有約束力; 是最糟的情況,整個方向完全不影響損失。此時 很大。講者用的數字是: 時,求 要乘上 , 的微小變動在輸出端被放大一百億倍;加上 之後, 實質上就是 ,放大倍率變成 10(錄影 55:16–56:19)。
即使 滿秩,這個效果也在。講者問全班:特徵值全部相同和一大一小兩種情況,哪一種變異比較大?答案是差距大的那一種,也就是條件數差的情況(錄影 53:15)。
數值例子(本文自擬)。 兩個參數, 的特徵值是 、,,真實參數在特徵向量座標下是 。
普通最小平方的變異數:方向一 ,方向二 。沒有偏差,所以 離 的期望平方距離是 ,幾乎全部來自方向二。
取 :
- 方向一:收縮係數 ,偏差平方 ;變異數 。
- 方向二:收縮係數 ,偏差平方 ;變異數 。
合計偏差平方 、變異 ,期望平方距離 。
付出 的偏差,變異從 降到 ,總誤差變成原來的五十分之一左右。兩個方向受到的影響差很多:資料約束得好的方向一幾乎沒動,約束不了的方向二被壓到原值的 9%。Ridge 做的事就是在資料說不清楚的方向上放棄估計、往零靠。代價也看得到:方向二的真值是 1,估出來平均只有 0.09。如果那個方向的真值很大,這筆交易就不划算,所以 得靠資料挑。
其他正規化手法與怎麼挑 ρ
(錄影 57:00–1:02:23)
這一段是幾個提問串起來的實務討論。
常數怎麼來的。 有學生問 是不是像某些 之類的小常數。講者說很多這類數值是經驗上調出來的,並開玩笑提到「Karpathy constant」,隨即更正那其實是 Adam 的步長而不是正規化強度。他接著說這類小常數還有數值上的理由:線性系統條件數高時,輸入的小變動會被放大,而機器學習用的浮點精度愈來愈低,不穩定會累積,所以加一點常數既避開精度問題,也順便加了一點偏差。
統計與機器學習的態度差異。 講者說統計學家會很小心地設定正規化項,例如 Trevor Hastie 關於 Lasso path 的一系列論文把 正規化下模型的變化算得很清楚;機器學習這邊則是:
"Machine learning, we don't really care. If I'm honest, we're just like, yeah, that sounds good."(00:58:21)
其他正規化手法。 訓練時隨機把一些值設成零(dropout)、對資料做擾動(資料擴增)、數值太大就除掉(LayerNorm)。講者的統整是,凡是阻止模型過度相信單一資料點的做法,通常都能解讀成正規化,也都能放進同一套偏差–變異框架分析。他舉自己的資料擴增論文當例子:貓的照片轉一點角度、放大一點還是貓,做這些擴增能讓模型不去配適雜訊。
ρ 怎麼挑。 經驗法則大多不太有用,因為前提是各特徵尺度一致;資料標準化與白化(whitening)講者說留到他兩週後回來的課。實際上就是多試幾個值、看哪個泛化得好:
"The existence of the dev set is much more trusted by engineers than any amount of math in this space."(01:00:21)
範數小於 1 的懲罰? 傳統上用 1-範數,因為它是凸的;真正想要的是計算非零個數的 0-範數。講者說稀疏還原是十五年前的熱門題目,各種形式都被研究透了。
講者在這裡跳過了正規化的貝氏推導,說那部分在講義裡(講義 9.4 節)。
雙降:過了內插門檻,測試誤差又掉下來
(錄影 1:02:23–1:05:40)
古典的故事說,複雜度超過某一點之後測試誤差一定上升,一個內插 15 個點的高次多項式應該是災難。但近十年訓練的模型,參數常常比訓練資料多很多,把訓練集完全背下來,泛化卻比誰都好。講者的說法:
"this puzzle for practitioners was not, how do we avoid overfitting, like I told you, but why aren't we overfitting."(01:02:23)
講者介紹的是以 Misha Belkin 為第一作者的論文,結果是在 kernel 方法的設定下做出來的(講者說 kernel 之後會教,這裡不需要懂)。把模型容量放橫軸、測試誤差放縱軸,左半邊是古典的 U 形;但容量繼續增加,越過剛好能內插訓練集的門檻、進入大幅過度參數化的區域之後,測試誤差又開始下降。曲線下降兩次,所以叫雙降。講者說這個現象在神經網路上觀察得到,在某些設定下可以證明。
課堂給的解釋很短:過度參數化時零損失的解有很多個,最佳化器會從中挑出一個平滑的。講者把這叫做最佳化器的隱式偏好(implicit bias),它接手了原本由顯式正規化扮演的角色,並說在最小平方問題裡就看得到:用虛反矩陣解,或用 SGD 解,都會選到特定的解(這句是他講完 ImageNet-V2 之後回頭總結時說的,錄影 1:09:36)。
這可以接回前面的零空間。 時零誤差的解有無限多個,差別只在零空間裡的分量 ;最小範數解就是 的那一個。講義 8.2 節把這件事說得更具體:線性模型在 時,從零初始化的梯度下降會收斂到最小範數解;測試誤差的高峰出現在 附近,而把正規化強度調到最佳可以大幅壓低那個高峰。課堂上沒有講到這個高峰的位置,也沒有講講義裡的 sample-wise 雙降。
講者強調這一段不在考試範圍。他想傳達的是機器學習離「已經解決」還很遠,2018 年的論文還在改寫大家對基本問題的理解。
適應性過度配適與 ImageNet-V2
(錄影 1:05:40–1:10:37)
另一種擔心來自統計學的訓練:一個公開基準被整個社群反覆測試,大家雖然沒有直接拿測試集訓練,卻可能透過一篇又一篇論文的選擇,不知不覺把測試集的資訊漏回方法裡。講者用藥物試驗類比:他說 Stanford 的 John Ioannidis 推動藥物試驗事先登記,就是為了防止把資料凹到想要的結論(p-hacking)。放到機器學習,問題變成:在 ImageNet 上排名好的模型,是真的好,還是只是適應了這份測試集?這叫適應性過度配適(adaptive overfitting)。
講者介紹的研究(他提到作者裡的 Ben 與 Ludwig Schmidt,Ben 就是前面那位)在十年後盡量照原本的做法,重新抓取、清理出一份新的 ImageNet 測試集,把歷年的模型拿來重測。結果是所有模型的準確率都掉了,講者說是 11 個百分點,而且掉的幅度幾乎相同;把原測試集準確率與新測試集準確率畫成散布圖,模型排成一條線,相對排名沒有變。
講者的解讀有兩層。整體下降不神祕,兩份測試集的建構方式不同就會造成。重要的是排名沒變:ImageNet 上的競爭激烈到他說連大公司都有人因為作弊被禁(原話是 getting banned for cheating),即使如此,模型之間誰比誰好的結論仍然成立,適應性過度配適在這個案例裡沒有想像中嚴重。他同時提醒,這不代表可以對資料為所欲為,適應性過度配適在別的地方確實會發生。
模型選擇:開發集、k 折交叉驗證與 successive halving
(錄影 1:10:37–1:15:50)
課程剩不到六分鐘,這一段講得很快。開場預告的 k 折交叉驗證分析沒有時間做。
為什麼不能用訓練誤差挑
基本流程:有一組候選模型(例如不同的 ),每一個都在訓練集上訓練,在開發集上評分,選開發集分數最好的。講者說他只在乎一個問題:為什麼不直接選訓練誤差最低的?學生答對了:表達力最強的模型訓練誤差可以壓到零,用訓練誤差挑永遠會選到最複雜的那個。放在 ridge 上就是永遠選到 。
資料怎麼分是一個取捨:測試集要夠大才能對最終數字有信心,開發集要夠大才能挑對超參數,但經驗上訓練集愈大模型愈好,所以大家會盡量把資料塞進訓練集。測試集則要當成不能偷看的東西,每看一次都可能漏資訊、高估表現。
k 折交叉驗證
交叉驗證是省資料的做法:不另外切一大塊開發集,而是把訓練資料分成幾份,例如五份,輪流用四份訓練、預測剩下那一份。因為每次評分的資料都沒參與那一次訓練,就不會一面倒地選到最複雜的模型。
課堂只講到這裡。講義 9.3 節有完整流程: 份輪流當驗證集,把 次驗證誤差平均,選平均最低的模型,再用全部資料重新訓練一次; 是常見選擇,資料極少時可以用 的留一法(leave-one-out)。代價是每個候選模型要訓練 次。
Successive halving:把運算花在有希望的候選上
交叉驗證省資料,successive halving 省運算。講者在開場說要講 Hyperband,實際描述的流程是 successive halving(Hyperband 建立在它之上):
- 把 的候選值排成一組,例如按倍數間隔取。
- 所有候選都只跑少量步數,評分,淘汰最差的一半。
- 存活者從中斷處接著跑,步數加倍,再評分、再淘汰一半。
- 重複到剩一個。
課堂的動畫是八個設定 A 到 H。第一輪後 A、C、E、G 留下;第二輪跑兩倍長,A 累計拿到的運算量是第一輪就被淘汰的 B 的三倍;之後 A、C 留下,再繼續。每一輪的總運算量大致相同,但好的候選拿到的份額指數成長。
把課堂的例子算完(以下的算術是本文補的):令第一輪每個設定跑 1 個單位,三輪分別花 、、,共 24 個單位,最後的勝出者累計跑了 個單位。如果八個設定都跑滿 7 個單位,要 56 個單位,successive halving 只用了其中的 43%。勝出者那 7 個單位可以接著訓練下去,占總花費的 29%;其餘 17 個單位花在被淘汰的設定上。講者提到這個比例時說「you compute the exact fraction」,答案就是 7/24。
這個方法的前提是早期分數能預測後期表現。講者說它有理論支持:分數滿足某些性質時,這差不多是最佳策略。他對這個方法的評價是:
"that simple trick is one that I use all the time"(01:15:49)
自我檢查
1. 在偏差–變異分解的第一步,交叉項 為什麼是零?如果測試點剛好是訓練集裡的某一筆(同一個雜訊值),這一步還成立嗎?
判準:要說出兩個條件, 與 獨立(所以期望拆成乘積),以及 。若測試觀測就是訓練過的那一筆, 是用同一個 訓練出來的,兩者不獨立,交叉項不為零。這正是訓練誤差會低估測試誤差的原因。
2. 沿用三個訓練點的例子(,訓練點 ,),把測試點改成 。算常數模型與二次模型的偏差平方、變異與測試誤差。
答案:真值 。常數模型的預測仍是三點平均,,偏差平方 ,變異 ,測試誤差 。二次模型內插三個點,而 本身是訓練點,預測就是 ,偏差為零、變異 ,測試誤差 。同一個模型在不同測試點上的偏差不同:常數模型在 的偏差平方只有 。
3. 有一個特徵值 ,。比較 與 時該方向的變異數與收縮係數。什麼情況下加這個 不划算?
答案: 時變異數 ,無偏。 時收縮係數 ,變異數 ;偏差平方是 。只有當 大到接近 (真值約 100 以上)時,偏差才會吃掉省下的變異。
4. 有人主張「用訓練誤差挑 ρ 就好,不必浪費資料切開發集」。用 ridge 的目標函數說明為什麼這樣一定選到 。
判準: 的解是所有 裡訓練平方誤差最小的;任何 的解都是為了降低範數而放棄一部分配適,訓練誤差不會更低,用訓練誤差挑就一定挑到 。(更強的結論也成立:訓練誤差對 單調不減,把兩個不同 各自「是自己目標函數的最小值」的不等式相加就能證明。)訓練誤差量不出變異下降的好處,必須用沒參與訓練的資料評分。
5. 用 successive halving 篩 16 個設定,第一輪每個跑 1 個單位,每輪步數加倍。總共花多少單位?勝出者累計跑了多少?這個方法會錯殺哪一種設定?
答案:四輪分別是 、、、,共 64 個單位;勝出者累計 個單位。全部跑滿 15 個單位要 240 個單位,所以只花了 27%。會被錯殺的是起步慢、後期才追上來的設定,例如學習率較小的候選,它在第一輪分數差就被淘汰了。
對應閱讀
CS229 主講義(2026 年 8 月版):
- 第 8 章 8.1 節(pp.117–123):偏差–變異取捨與 8.1.1 的數學分解,對應課堂前半。講義用 表示雜訊、 表示平均模型,課堂用 與 ;講義的過度配適例子是五次多項式,課堂投影片是九次;講義把兩次交叉項為零整理成 Claim 8.1.1。
- 第 8 章 8.2 節(pp.123–127):雙降。講義比課堂多了 sample-wise 雙降、高峰出現在 、最佳正規化可以大幅壓低高峰,以及用範數而非參數個數衡量複雜度時雙降會消失的討論。
- 第 8 章 8.3 節(pp.128–136):樣本複雜度界限,包括有限假設類別的 union bound 與 Hoeffding 不等式、uniform convergence、VC 維度。這堂課完全沒有講這一節。
- 第 9 章 9.1 節(pp.137–139):正規化的一般形式 、weight decay、 與稀疏。課堂的 ridge 閉式解、零空間與特徵值分析不在講義這一節裡,是課堂多講的。
- 第 9 章 9.2 節(pp.139–141):隱式正規化。課堂只在雙降的總結提了一句。
- 第 9 章 9.3 節(pp.141–144):hold-out、k 折與留一法交叉驗證的完整流程。課堂只有概念;successive halving 則是講義沒有的內容。
- 第 9 章 9.4 節(pp.144–145):貝氏統計與 MAP 估計。課堂明講跳過。
ImageNet-V2 與適應性過度配適不在講義這兩章裡。
系列導覽:上一堂 第 5 堂:高斯判別分析與 Naive Bayes|下一堂 第 7 堂:神經網路的架構|課程總覽
課程影片來源
原始影片:Stanford CS229 Machine Learning | Spring 2026 | Lecture 6: Dataset Split, ML Advice
- Stanford CS229 Machine Learning|Spring 2026 播放清單(Stanford Online,17 支)
- CS229 課程官網
- CS229 主講義 main_notes.pdf
查核日期:2026-10-12。
內容核對:已依字幕核對(2026-10-12):全文依這支錄影的英文字幕整份寫成,各節時間區段與引句都對過字幕;未看板書與投影片畫面,ridge 目標函數的常數與變異數的式子是依口述與講義還原或補完的,文中已標明。
參考資料
- Stanford CS229 Machine Learning | Spring 2026 | Lecture 6: Dataset Split, ML Advice(YouTube):本文的主要底本,課堂說法、引句與時間戳都出自這支影片的英文字幕。
- CS229 主講義 main_notes.pdf:第 8 章(pp.115–136)與第 9 章(pp.137–145),用來對照記號、補 weight decay 與交叉驗證的流程,以及寫「對應閱讀」。
- Stanford CS229 Machine Learning|Spring 2026 播放清單:確認堂次與影片標題。
- Stanford CS229 導讀:課程總覽:本系列的入口。
Loading...