Skip to content
系列
19 篇文章

台大林軒田 機器學習基石與技法 導讀

依林軒田「機器學習基石」與「機器學習技法」兩門 MOOC(32 講、130 支 YouTube 影片、全套 handout 投影片)逐主題導讀,從 PLA、VC 維度、線性模型、正則化與驗證,一路讀到 SVM、kernel、aggregation、樹模型與神經網路,並用公開的 Fall 2024 HW0–HW7 與期末專題當練習;Fall 2026 的課另外對照。

林軒田機器學習基石與技法導讀:總覽與自學路線

林軒田的機器學習基石(16 講)與技法(16 講)是兩門中文 MOOC,130 支 YouTube 影片與 32 份投影片全部免費。只看 MOOC 是 A2:Coursera 自 2025 年 8 月起只讓免費帳號看第一單元,練習題被擋在付費牆後。補上 Fall 2024 課程頁公開的 HW0–HW7 與期末專題說明,就能到 A3,只差評分鏈:沒有官方解答,Gradescope 與 NTU COOL 限修課生,Kaggle 競賽頁回傳 404。Fall 2026 正在進行,是翻轉教室,第 4 週以前的投影片與 hw0、hw1 已公開。

林軒田機器學習基石導讀:學習問題、PLA 與學習的種類

基石前三講先把「機器學習」定義成一張流程圖:未知的目標函數 f 產生資料 D,演算法 A 從假說集合 H 挑出 g,希望 g ≈ f。接著用最簡單的 H(感知器)與 A(PLA)示範這張圖怎麼跑:資料線性可分時,PLA 的更新次數有 R²/ρ² 的上限;不可分時改用 pocket。第三講把學習問題依輸出、標籤、protocol、輸入四個軸分類,基石的主場是批次、監督式、具體特徵的二元分類或迴歸。練習用 Fall 2024 HW1 與 Fall 2026 hw1。

林軒田機器學習基石導讀:學習可行嗎?Hoeffding 與「出了資料之外」

基石 Lecture 4 先證明學習「不可能」:只看資料 D,D 以外的答案怎麼猜都可能被說錯,這是 No Free Lunch。接著用抽彈珠換個問法:如果資料是從同一個分布獨立抽出來的,Hoeffding 不等式保證樣本錯誤率 E_in 很可能接近真實錯誤率 E_out。只驗證一個固定的 h 不算學習;演算法要從 M 個假說裡挑,就得用 union bound 付出 2M exp(−2ε²N) 的代價。結論:假說集合有限、E_in 又小,學習就可行。M 無限大怎麼辦,留給下一講。

林軒田機器學習基石 L5–L6:假說有無限多個,為什麼還能泛化?——成長函數與 break point

L4 的 Hoeffding 保證裡有一個 M(假說個數),感知器有無限多條線,M 直接爆掉。L5 的解法是不數假說、改數它們在 N 筆資料上能切出幾種 ○× 組合(dichotomy),取最大值就是成長函數 m_H(N)。二維感知器在 4 個點上最多只切得出 14 種,不到 2⁴=16,4 就是它的 break point。L6(官方標 optional)證明:只要有 break point,m_H(N) 就被一個多項式壓住,VC bound 因此成立。

林軒田機器學習基石 L7–L8:VC 維度怎麼量化模型複雜度,雜訊與誤差衡量又改變了什麼

L7 把「最大的非 break point」命名為 VC 維度 d_VC,證明 d 維感知器的 d_VC = d + 1,再把 VC bound 改寫成「E_out ≤ E_in + 模型複雜度懲罰」:d_VC 太大或太小都不好。理論上要 N ≈ 10,000·d_VC 筆資料,實務上 10·d_VC 常常就夠。L8 把固定的目標函數換成機率分布 P(y|x),說明 VC 理論在有雜訊時仍成立;誤差衡量要依應用而定,例如 CIA 指紋辨識把誤放入侵者罰 1000 倍,可以用「複製樣本」的方式化約成一般分類。

林軒田機器學習基石 L9–L10:從線性迴歸的閉式解,走到邏輯迴歸的梯度下降

線性迴歸把平方誤差寫成 (1/N)‖Xw − y‖²,梯度設為零就得到 w_LIN = X†y,一步算完。hat matrix H = XX† 把 y 投影到 X 的欄空間,由此推出平均而言 E_out − E_in ≈ 2(d+1)/N。邏輯迴歸用 θ(wᵀx) 估計 P(+1|x),由最大概似推出 cross-entropy 誤差 ln(1 + exp(−y wᵀx));它沒有閉式解,只能沿著 −∇E_in 一步步往下走,這就是梯度下降。

林軒田機器學習基石 L11–L12:線性分類模型、SGD、多類別與非線性轉換

基石 L11 把 PLA、線性迴歸、邏輯迴歸放在同一個分數 s = wᵀx 上比較:三者只差在誤差函數,而 scaled cross-entropy 是 0/1 誤差的上界,所以兩種迴歸都能拿來做分類。接著用「隨機挑一筆算梯度」把邏輯迴歸變成 SGD,並用 OVA、OVO 把二元分類器組成多類別分類器。L12 用特徵轉換 Φ 把圓形邊界變成 Z 空間裡的直線,代價是計算量與 d_vc 都跟著維度變大,所以結論是「先試線性模型」。練習題在 Fall 2024 HW4。

林軒田機器學習基石 L13–L14:過擬合與正則化

基石 L13 把過擬合定義成「E_in 更低、E_out 卻更高」,並用實驗找出四個成因:資料太少、隨機雜訊、目標函數太複雜(deterministic noise),以及模型太強。L14 的對策是正則化:把「退回 H₂」改寫成 ‖w‖² ≤ C 的限制,再用拉格朗日乘數變成最小化 E_in + (λ/N)wᵀw,這就是 weight decay。接回 VC 理論時,正則化讓有效 VC 維度 d_EFF 變小;L1 則換來稀疏解。練習題在 Fall 2024 HW4 Q8–9 與 HW5 Q1、Q5–6、Q10。

林軒田機器學習基石 L15–L16:驗證與三個學習原則

基石 L15 處理模型選擇:用 E_in 選會過擬合,用 E_test 選是作弊,折衷是從訓練資料切出驗證集,用 E_val 選完再拿全部資料重訓。驗證集大小 K 兩難,經驗值是 K = N/5;LOOCV 幾乎無偏但太貴又不穩,實務上用 5-fold 或 10-fold。L16 用 Occam's razor、sampling bias、data snooping 三個原則收尾,並用「Power of Three」把整門課收成三個領域、三個 bound、三個線性模型、三個工具。練習題在 Fall 2024 HW5。

林軒田機器學習技法 T1–T2:線性 SVM 與對偶 SVM——最胖的分隔線、QP 與 KKT

技法第 1 講把「哪條分隔線最好」寫成最佳化問題:在 min yₙ(wᵀxₙ+b)=1 的縮放下,最大 margin 等於最小化 ½wᵀw,這是一個標準 QP。第 2 講用拉格朗日對偶把 d̃+1 個變數的 QP 換成 N 個變數、N+1 個限制的 QP,再用 KKT 條件從 α 解回 (b, w):只有 αₙ>0 的點,也就是支援向量,會影響答案。對偶問題還留著 zₙᵀzₘ 這個內積,所以要等下一講的 kernel 才算真正擺脫維度。

林軒田機器學習技法 T3–T4:Kernel 技巧與軟邊界 SVM——無限維的分類器怎麼算、怎麼防過擬合

技法第 3 講把「特徵轉換+內積」合成一個 kernel 函數 K(x, x′),對偶 SVM 的訓練與預測都只要算 K,於是 d̃ 可以是無限大:Gaussian kernel 就對應一個無限維的轉換。第 4 講承認 SVM 仍會過擬合,引入違反量 ξₙ 與參數 C,得到 soft-margin SVM;它的對偶和 hard-margin 只差一件事:αₙ 多了上界 C。αₙ 的值把資料分成非支援向量、free SV 與 bounded SV 三類,而支援向量的比例 #SV/N 是 leave-one-out 誤差的上界,可以拿來快速排除危險的 (C, γ)。

林軒田機器學習技法 T5–T6:Kernel 邏輯迴歸與支援向量迴歸——SVM 其實是正則化模型

技法第 5 講把 soft-margin SVM 改寫成無限制形式:½wᵀw 加上 C 乘以 hinge 誤差的總和,也就是一個 L2 正則化模型,C 越大正則化越弱。hinge 誤差和邏輯迴歸的 cross-entropy 都是 0/1 誤差的凸上界,所以 SVM 近似於 L2 正則化邏輯迴歸。要機率輸出,可以用 Platt 的兩層學習在 SVM 分數上再跑一次邏輯迴歸,或靠 representer theorem 直接做 kernel 邏輯迴歸。第 6 講用同一個定理得到 kernel ridge regression 的解析解 β = (λI + K)⁻¹y,但 β 是稠密的;改用 ε-insensitive 的管狀誤差,就得到係數稀疏的 SVR。Fall 2026 沒有排這兩講。

林軒田機器學習技法 T7–T8:Blending、Bagging 與 AdaBoost

技法第 7、8 講是 aggregation 模型的入口。T7 先把「組合多個假說」排成 uniform、linear、any(stacking)三種 blending,用一行代數證明 uniform blending 降低的是 variance,再用 bootstrap 在手上唯一一份資料裡造出多樣的 g_t,就是 bagging。T8 把 bootstrap 重新解讀成「替樣本加權」,改成專挑上一輪答錯的樣本加重,讓下一個假說被迫不同,再用 α_t = ln √((1−ε_t)/ε_t) 當投票權,這就是 AdaBoost。練習用 Fall 2024 HW6 Q4、Q9 與 HW7 的 bootstrap、AdaBoost 證明題和 madelon 上 500 輪的 AdaBoost-Stump 實驗;沒有官方解答。

林軒田機器學習技法 T9–T11:決策樹、隨機森林與梯度提升樹

技法第 9–11 講用「樹+aggregation」一條線串起三種模型。T9 把決策樹看成 conditional aggregation,講 C&RT 的二元分支、Gini 與迴歸誤差、剪枝、類別特徵與 surrogate branch。T10 把 bagging 套在完全長大的樹上,加上隨機子空間與隨機投影就是隨機森林,順帶得到免費的 OOB 驗證與 permutation 特徵重要度。T11 先把 AdaBoost 重新推導成對指數誤差做函數空間的最速下降,再把誤差換成平方誤差,得到「對殘差做迴歸」的 GBDT。練習用 Fall 2024 HW7 的 impurity、gradient boosting 證明題;沒有官方解答。

林軒田機器學習技法 T12–T13:神經網路與深度學習(autoencoder、PCA)

技法第 12、13 講開啟第三段「萃取隱藏特徵」。T12 從「perceptron 的線性組合」出發:兩層就能做 AND、OR,但做不出 XOR,多疊一層才行,這就是多層感知器;接著用 tanh 取代 sign、推導 backprop,再講非凸最佳化、d_vc = O(VD)、weight elimination 與 early stopping。T13 談 deep NN 的挑戰,把 autoencoder 當成「保留資訊的編碼」做逐層預訓練,把 denoising 當成正則化,最後證明線性 autoencoder 的最佳解就是 XᵀX 的前幾個特徵向量,也就是 PCA。這兩講錄於 2016 年,現代 DL 的補充在 Fall 2024 的 302u/303u。練習:Fall 2024 HW7 Q4、Q9 與 bonus Q13。

林軒田機器學習技法 T14–T15:RBF 網路、k-means 與矩陣分解——萃取模型還能長什麼樣

技法 T14 把 Gaussian SVM 重新看成「以距離為相似度的線性投票」,由此得到 RBF 網路;中心點太多會過擬合,於是用 k-means 找少量代表點,k-means 本身是交替最佳化。T15 從 Netflix 評分資料出發,把使用者 ID 做 one-hot 編碼、丟進去掉 tanh 的線性網路,得到矩陣分解 R ≈ VᵀW,用交替最小平方或 SGD 來學,最後把 boosting、NN、RBF 網路、矩陣分解、k-NN 收成一張萃取模型地圖。這兩講只有 MOOC 教材:Fall 2024 與 Fall 2026 的課程計畫都沒排,也沒有公開作業題。

林軒田機器學習技法 T16 Finale:整門課收成三類技巧,再用 Fall 2024 投影片補上現代深度學習

技法 T16 把整門課重新分類成三類技巧:怎麼利用特徵(kernel、aggregation、extraction、低維壓縮)、怎麼最佳化(梯度、等價問題、拆成多步)、怎麼防過擬合(正則化、驗證),最後用四屆 KDD Cup 冠軍模型說明這些技巧在實務上怎麼組合。MOOC 錄於 2016 年,深度學習只講到 pre-training;Fall 2024 校內課用 302u(ReLU 家族、Xavier/He 初始化)、303u(momentum、RMSProp、Adam)、一場 2020 年的演講投影片 mlmai.ics 與 11 個模型的 1126 總整理補上。Fall 2026 同一批投影片排在 W16,目前還是 404。

林軒田機器學習基石作業導讀:Fall 2024 HW0–HW5 練什麼、要什麼資料,附 Fall 2026 hw0/hw1

Fall 2024 的基石作業共六份:HW0 是 20 題數學先修選擇題;HW1–HW5 每份 12 題加 1 題 bonus,Q1–4 自動批改、Q5–12 助教批改,程式題用 LIBSVM 網站上的 rcv1、cpusmall、mnist 資料,HW5 要用 LIBLINEAR。HW1、HW2 各有一題要你拿 ChatGPT 類工具的回答來反駁。Fall 2026 已公開 hw0 與 hw1:hw1 改成 16 題全選擇題、抽 4 題由助教細改,資料換成課程自己給的 hw1_train.dat;新 policy 允許用 AI 與 vibe coding,但 AI 產生的程式要逐段用自己的話寫註解。兩個學期都沒有公開官方解答。

林軒田機器學習技法作業與期末專題:Fall 2024 HW6–HW7 與 HTMLB 勝負預測

Fall 2024 技法段有兩份作業和一個期末專題,題目 PDF 都公開。HW6 練 kernel、soft-margin SVM 與 aggregation,程式題用 LIBSVM 在 mnist.scale 的 3 對 7 子問題上數支援向量、算 margin、跑 128 次 validation。HW7 練 bootstrap、impurity、AdaBoost、gradient boosting 與神經網路,程式題是在 madelon 上實作 500 輪 AdaBoost-Stump。期末專題是虛構的 HTMLB 棒球勝負預測,分兩個 Kaggle stage,交一份最多 7 頁的英文報告,至少比較四種方法。沒有官方解答;Kaggle 競賽頁在 2026-09-30 未登入時回 404,校外讀者大概拿不到 HTMLB 資料,只能照同樣的切分方式換一份公開資料自評。