機器學習在學什麼:監督式、非監督式與強化學習|Stanford CS229 第 1 堂
CS229 Spring 2026 的開場課只有 37 分鐘、沒有推導。它用 Tom Mitchell 的「經驗 E、任務 T、衡量 P」定義機器學習,再把整門課分成監督式、非監督式、強化學習三類,三者的差別在於資料裡有沒有答案、資料是不是模型自己收集來的。大型語言模型在這個分類裡同時出現三次。
CS229 Spring 2026 的開場課只有 37 分鐘、沒有推導。它用 Tom Mitchell 的「經驗 E、任務 T、衡量 P」定義機器學習,再把整門課分成監督式、非監督式、強化學習三類,三者的差別在於資料裡有沒有答案、資料是不是模型自己收集來的。大型語言模型在這個分類裡同時出現三次。
第 2 堂把監督式學習拆成三件事:假設函數 h、最小平方成本 J(θ)、把 J 壓低的演算法。梯度下降每步要掃過全部 n 筆資料,minibatch SGD 只看一小批就更新,代價是在最佳解附近晃動;線性迴歸另有封閉解 θ = (XᵀX)⁻¹Xᵀy,前提是 XᵀX 可逆。
假設誤差是零均值、獨立同分布的高斯雜訊,對概似函數取 log 之後,最大概似就等於上一堂的最小平方。同一套做法換成 0/1 標籤與 sigmoid,得到邏輯斯迴歸,梯度仍是「誤差乘上輸入」。最後用 Newton 法對照 SGD:步數少,但每步要付 n·d² + d³ 的計算量。
只要 y 的分布能寫成 b(y)·exp(ηᵀT(y) − a(η)),對 a(η) 微分一次就是期望值、兩次就是變異數;再令 η = θᵀx,線性迴歸、邏輯斯迴歸與 softmax 的更新式都是同一條 θ ← θ + α(y − h(x))x。後半堂用四個類別的例子講 softmax、交叉熵與 label smoothing。
第 5 堂把分類問題反過來做:不直接學 p(y|x),改學 p(x|y) 與 p(y)。GDA 假設兩類是共用共變異數的高斯,最大概似估計只要數比例、取平均,決策邊界推出來是一條直線,事後機率剛好是 sigmoid;Naive Bayes 用條件獨立把 2^d 個參數壓到 2d+1 個。
這堂課把測試誤差拆成雜訊 σ²、偏差平方、變異三項,再用 ridge regression 的閉式解說明正規化怎麼把特徵值從 λ 推到 λ+ρ,用一點偏差換掉大量變異。後半堂講雙降、ImageNet-V2,以及用開發集、k 折交叉驗證與 successive halving 挑超參數。
第 7 堂先把線性模型的訓練流程原封不動搬到非線性模型:每筆資料一個 loss、取平均、用 SGD 往下走,剩下兩個問題是模型長什麼樣、梯度怎麼算。後半堂回答第一個:一個神經元是 ReLU(wᵀx+b),m 個神經元疊成矩陣就是一層 ReLU(Wx+b),參數 md+m 個;再往上是殘差區塊 z+σ(MM(σ(MM(z)))) 與 LayerNorm、RMSNorm。梯度怎麼算留給第 8 堂。
這堂課從一個定理出發:能用 N 個基本運算算出來的純量函數,梯度也能在 O(N) 時間算完。做法是把鏈鎖律讀成「拿到 ∂J/∂u 就能算 ∂J/∂z,而且只需要中間那個模組的資訊」,再替矩陣乘法與啟動函數各推一個 backward 函數:Wᵀv、vzᵀ、σ′(z)⊙v。本文另外用一個 2-2-1 的小網路把前向與反向手算一遍。
第 9 堂從 k-means 的「指派、取平均」兩步出發,說明它為何一定停下來卻只保證到局部最佳;接著把硬指派換成機率,得到高斯混合模型與 EM 的 E-step(貝氏定理)和 M-step(加權平均)。最後用 Jensen 不等式畫出 EM 的圖像:每一輪造一條貼著 log-likelihood 的下界再爬到頂,完整推導留到第 10 堂。
前半堂用 Jensen 不等式替對數概似造出下界 ELBO,把 Q 取成後驗機率讓下界在目前參數緊貼,推出每一輪 EM 都不會讓概似下降,套回高斯混合就得到上一堂的加權平均公式。後半堂把 PCA 寫成在單位向量上最大化 uᵀΣu,答案是共變異數矩陣最大特徵值對應的特徵向量。
前向過程每一步把資料乘上 √(1−β_t) 再加變異數 β_t 的高斯雜訊,展開後 x_t = √ᾱ_t·x_0 + √(1−ᾱ_t)·ε̂_t,不必學。反向用高斯 p_θ(x_{t−1}|x_t) 去學,把上一堂的 ELBO 套在整條軌跡上,再用 KL 連鎖律拆開,每一步的損失是 ‖μ̃_t(x_t,x_0) − μ_θ(x_t,t)‖²/(2β̃_t)。這堂停在這個式子,化簡成預測雜訊留到第 12 堂。
前半堂把擴散模型的 ELBO 收成一條式子:每個時間步都是「猜出當初加進去的雜訊」的平方誤差,訓練五步、取樣一個迴圈。後半堂開始講基礎模型:預訓練加適應的兩階段、linear probe、finetune、LP-FT,以及 LoRA 只訓練 2dr 個參數卻省不了多少運算的原因。
這堂課把 SimCLR 損失拆成一張 B×B 相似度矩陣:每一列做一次 softmax 分類,答案是對角線那一格。對角線被拉高、其餘被壓低,模型不需要標籤就學到「相似的東西向量相近」。後半堂用同一組向量做語意檢索,再接到 RAG。
這堂課把大型語言模型拆成三層:分詞把文字變成 token 編號,鏈式法則把整段文字的機率拆成一連串「下一個 token」的條件機率,訓練就是把每個位置的交叉熵加起來。後半堂打開 Transformer:query 與 key 的內積過 softmax 得到權重,對 value 做加權平均,再用 causal mask 擋住未來位置;單層 attention 的計算量隨序列長度 T 的平方成長。
生成時每個 head 都要把過去所有位置的 key 與 value 留在 GPU 記憶體裡,這份 KV cache 會卡住 batch size。GQA 讓 τ 個 query head 共用一組 key/value,把它縮成 1/τ;sliding window 把 T² 的運算壓到 T·w;MoE 讓 128 個 expert 裡每個 token 只跑 8 個。後半堂講怎麼用訓練好的模型:few-shot、zero-shot 都不動參數,SFT 才動,而且 loss 只算在答案的 token 上。
這堂課前 55 分鐘把循序決策寫成 MDP(狀態、動作、轉移機率、獎勵、折扣因子),推出固定策略的 Bellman 方程式是一組線性方程式;後 20 分鐘推導 policy gradient:用 ∇p = p∇log p 把梯度換回期望值,轉移機率因為不含 θ 而從梯度裡消失,最後停在「log 機率梯度的和 × 折扣獎勵的和」這條公式,變異數縮減留到下一堂。
學期最後一堂把 policy gradient 收尾:過去的獎勵與只依賴狀態的 baseline 都可以從權重裡拿掉而不改變期望值。接著用重要性取樣推出 PPO 的截斷目標函數,拆成四種情況看哪些樣本還有梯度,再比較 CISPO 的改法。最後把語言模型逐 token 生成寫成 MDP,只在答案對的時候給 1 分,用同一題 8 個樣本的平均當 baseline 訓練長思維鏈。
CS229 是 Stanford 把機器學習的數學推導走一遍的主課。Spring 2026 的錄影公開了 17 堂,前十堂是線性模型、神經網路與非監督式學習,後七堂走到擴散模型、LLM 與用強化學習訓練推理模型。本系列一堂一篇,這篇是地圖:每堂實際教什麼、影片標題哪裡對不上、講義有而課堂沒教的去哪裡補。