所有標籤CS2680 作業 1 要你做一個網頁來驅動 Claude Code:送出任務,即時看到 agent 讀了什麼、跑了什麼、結果如何,最後顯示花了多少錢、幾秒、幾輪。關鍵是讀懂 `claude -p --output-format stream-json --verbose` 的事件串流:tool_use 和 tool_result 靠同一個 id 配對,subagent 的事件靠 parent_tool_use_id 掛回呼叫它的那一步。這篇拆解七項要求、示範用 40 行 Python 把事件串成一棵樹並分辨成功與失敗,最後整理交件、評分與開發時最容易卡住的地方。
CS2680 作業 2(Mads-Loop)要你自己寫一個 coding agent harness:用指定的小模型 qwen3.6-35b-a3b,在 Docker 容器裡修 SWE-bench Pro 的真實 issue,並照規定格式記下每一步。作業頁明說它給的設計不要照單全收,10 題裡也有解不了的題。這篇整理規格、作業頁值得懷疑的幾處、harness 最常壞的五個地方與各自的處理方式(附一段實跑過的片段),以及怎麼自建四題評估集、怎麼判斷一題是不是真的解不了。不含官方解答。
CS2680 作業 3(Mads-Opt)是一場 harness 競賽:同一批 SWE-bench Pro 題目,比誰解得多、每解一題花得少、每解一題等得短。三個指標不加權,改用 skyline(Pareto)分層排名:沒有人在三項都不比你差、還至少一項比你好,你就是第 1 名。這篇整理作業的容器架構與硬限制、排名與計分怎麼算(附手算例子),用作業頁公布的模型價格先算一題大概花多少,再把第 8 堂的成本與速度槓桿對到這份作業。不含官方解答,也不談具體解法。
Harvard CS2680 拿同一個 coding agent 當主角,從上往下拆:先用 Claude Code 看 agent 怎麼跑,再自己寫 loop、選工具、管 context,接著擴成多 agent、加上記憶、學會評估,最後把成本和延遲壓下來;下半學期再往下自己 serve 模型。這篇整理 Part I 八堂與三份作業各在學什麼,用一個手算例子說明為什麼 agent 每多走一步就更貴,最後給先備檢查與閱讀順序。
CS2680 第 1 堂(2026-09-02)先說明 AI 系統和傳統系統的差別:運算分散在 CPU 與 GPU、浮點運算不保證每次一樣、狀態大到要跨 GPU 搬。接著把 agent 比作新型電腦(LLM 是 CPU、context window 是記憶體、harness 是作業系統),指出 agent 的一個請求會變成「推論 → 工具 → 推論」的長鏈,所以每秒 token 數是錯的目標,要看任務成功率、端到端延遲與每次成功的花費。本文用兩個 agent 的帳算一次這些指標怎麼用。
CS2680 第 2 堂(2026-09-09)拆開 Claude Code:你打一句話,它會呼叫模型很多次;模型每次只「提出」要跑的工具,harness 檢查權限後才執行,再把結果放回 context,context 滿了就壓縮。後半講記憶(你寫的 CLAUDE.md 與 Claude 自己記的 auto memory)與四種擴充:skill 管怎麼做、MCP 管連到外面、hook 管一定要發生的事、plugin 管打包。本文先補一次 API 呼叫長什麼樣,再用「修好一個測試」走完整條 loop。
CS2680 第 3 堂(2026-09-14)前半講怎麼把自己放大:先用 Superpowers 與 Caveman 兩個 plugin 看 skill、hook、proxy 怎麼搭,再講三種擴充方向:平行開多個 agent 買牆鐘時間、派 subagent 買專注、讓 agent 跑很久買範圍。後半講放大之後的代價:用自然語言叫 agent 寫程式,不確定性會從語意、context、模型取樣、工具環境四層滲進來,對策是先講清楚、提案與執行分開、緊縮驗證。本文用「三個 bug 開三個 worktree」算一次平行到底省了什麼。
CS2680 第 4 堂(2026-09-16)從「用 agent」換到「設計 agent」:agent 是模型加一個 loop,你要決定給它哪些工具、每一步讓它看到什麼。工具這半講找程式碼的四種方法、改程式碼的四種方法、shell 的威力與風險,以及「少而正交、專用、輸出省 token、錯誤教得會」的設計原則。context 這半講 context 為什麼是有限資源、四種管理手段(從擋在門口到最後才摘要)、五種 context 失敗,最後用一篇論文說明:context 很緊時,同一個模型只換 harness,解題數可以多出七成到一倍以上。
CS2680 第 5 堂(2026-09-23)講多 agent 系統怎麼設計。拆成多個 agent 有四個理由:專長、隔離、平行、context 管理;每種架構都可以用三個問題描述:誰指揮、工作怎麼切、訊息怎麼傳。課堂列了八種架構,再講任務切分的六種方法、一條判斷拆不拆的粒度公式、六種常見的切分失敗,以及通訊為什麼其實是分散式系統問題:訊息會遺失、重送,兩個 agent 會同時改同一份東西。最後對照 A2A 與 MCP 的分工,並以「真的需要多 agent 嗎?」作為第一條設計原則。
CS2680 第 6 堂(2026-09-28)前半講 agent 的記憶:把一件事留下來,要依序決定寫不寫、存成什麼樣子、存在哪裡、什麼時候取回、要不要歸納成通則、還算不算數,另外還有記憶歸誰管。過期的事實不要直接刪,要記下它什麼時候成立、從哪裡來。後半講可靠度:每步 95% 成功,20 步全對只剩約 36%;失敗可以歸到任務規格、harness、模型、工具、環境五層,每層各有修法。兩半的接點是一個 harness 層的失敗:把過期的筆記當成事實。
CS2680 第 7 堂(2026-09-30)講怎麼量一個 agent 好不好。先分清楚量的是零件還是整條任務,以及「成功」指的是答對、做出能跑的程式,還是把環境改到對的狀態。指標方面,pass@k 問試 k 次有沒有一次成功,pass^k 問 k 次是不是全部成功;同一組試驗結果,兩者可以差到 0.9 和 0.3。接著看八個代表 benchmark 各量什麼,再看分數什麼時候不可信:解答可能在訓練資料裡、可能被 agent 上網查到、可能藏在環境的 git 歷史裡,評分器本身也可能被鑽漏洞。
CS2680 第 8 堂(2026-10-07)分兩半。前半拆 agent 的帳單:成本是一條乘式,使用者數 × 每人 session 數 × 每個 session 的 turn 數 × 每個 turn 的 step 數 × 每個 step 的 token 數 × 每個 token 的價格,後四項是你能砍的。學生自己的 Claude Code 紀錄顯示,97.6% 的 token 是命中快取的重讀,所以「prefix 要穩定」比「prompt 要短」更重要。速度看的是關鍵路徑,不是每一步加總。後半比較三種 harness 架構(單體、模組化、微核心)與八個開源或商用 harness 的設計取向。本文用一張手算帳單示範:把時間戳放進 system prompt 開頭,同一個任務的帳單會從 23.6 單位變回 65 單位以上。
聊天模型的獎勵看單則回覆像不像人喜歡的答案;Agent 的獎勵要看多步操作後任務有沒有真的完成,兩者需要的資料與環境不同。
推理是輸入與輸出之間的中間 token;RL 微調勝過模仿人類解答的關鍵是可靠的驗證器,多次取樣再選最常見的答案能再往上推。
AlphaGeometry2 靠符號引擎、AlphaProof 靠 Lean 驗證,2024 年合計 28 分;2025 年 Gemini Deep Think 用自然語言拿 35 分,驗證改由人類閱卷。
Laskin 的判斷是工程師八成時間在理解系統而不是寫程式;而 RL 能走多遠取決於有沒有乾淨的獎勵,這個問題他認為和超級智慧一樣難。
VLA 在視覺語言模型上加一個動作模組;讓動作模組的梯度回傳會損害語言理解,knowledge insulation 的作法是擋住梯度;π0.5 則用網路資料與多種機器人資料一起訓練來換取泛化。
這堂課給第 1 堂的流程圖填上第一組具體內容:假說集合 H 是所有的線(感知器),演算法 A 是 PLA,看到分錯的點就把 w 加上 yₙxₙ。資料線性可分時,從 w₀ = 0 出發最多修正 R²/ρ² 次就會停;資料分不開時改用 pocket,把看過錯最少的那條線留在口袋裡。
這堂課把第 1 堂的學習流程圖沿四個方向各換一次:輸出空間 Y(二元分類、多類別分類、迴歸、結構化學習)、標籤 yₙ(監督式、非監督式、半監督式、強化學習)、資料交給演算法的方式(batch、online、active)、輸入空間 X(具體、原始、抽象特徵)。四個方向各有一個核心選項,合起來是基石之後的主場:批次、監督式、具體特徵的二元分類與迴歸。
假說集合只要有 break point k,N 個點上最多能產生的 dichotomy 數 B(N, k) 就滿足 B(N, k) ≤ B(N−1, k) + B(N−1, k−1),由此推出 B(N, k) ≤ C(N, 0) + … + C(N, k−1),最高次是 N 的 k−1 次方。再用三個步驟把成長函數放進 Hoeffding,得到 VC bound:壞事機率 ≤ 4·m_H(2N)·exp(−ε²N/8)。二維感知器的 break point 是 4,所以學得起來。
這堂課把固定的目標函數換成目標分布 P(y|x):只要 (x, y) 是從同一個聯合分布獨立抽出來的,VC bound 在有雜訊時照樣成立。誤差衡量 err 和 P(y|x) 一起決定每個 x 上最理想的預測,0/1 誤差選機率最大的 y,平方誤差選加權平均。CIA 指紋辨識把誤放罰 1000 倍,這種加權分類等於把 −1 的資料複製 1000 次再做一般分類。
邏輯迴歸用 θ(wᵀx) 估計 P(+1|x),資料卻只有圈與叉。這堂課用最大概似推出 cross-entropy 誤差 ln(1 + exp(−y wᵀx)),用連鎖律算出梯度是 −yₙxₙ 的 θ 加權平均;令梯度為零是 w 的非線性方程式,沒有閉式解,所以改用固定學習率的梯度下降 w ← w − η∇E_in(w) 一步一步走到谷底。
資料用直線切不開時,不必重新設計演算法:先用特徵轉換 Φ 把 x 換成 z,在 Z 空間照常跑線性模型,Z 空間的直線就是 X 空間的二次或更高次曲線。Q 次多項式轉換會把維度拉到 d̃ = C(Q+d, d) − 1,計算、儲存與 VC 維度(至多 d̃+1)都跟著漲,所以這堂課的結論是先試線性模型,不夠再往高次走。
從 10 次多項式退回 2 次,等於在 10 次的問題上加限制式。把限制放軟成 ‖w‖² ≤ C 之後,最佳解上 E_in 的負梯度必須和 w 平行,由此得到 w_REG = (ZᵀZ + λI)⁻¹Zᵀy,也等於最小化 E_aug = E_in + (λ/N)wᵀw,這就是 weight decay。λ 愈大,等效的 C 愈小,有效 VC 維度 d_EFF 跟著變小;換成 L1 則會得到稀疏解。
基石最後一堂不教新演算法,講三個讓前十五堂的保證失效的情況。簡單的模型很難碰巧把亂標的資料分開:10 個點配隨機標籤,decision stump 分得開的機率只有 20/1024,所以分得開才有意義。訓練與測試不是同一個分布時 VC 保證不成立;資料只要影響過學習流程的任何一步,就不能再拿來評估結果。最後用 Power of Three 把整門課收成五組三。
hard-margin SVM 的原始問題有 d̃+1 個變數,特徵維度一大就解不動。這堂課用拉格朗日對偶把它換成只有 N 個變數、N+1 條限制的二次規劃,再用 KKT 條件從 α 算回 w 與 b;只有 α 大於 0 的支援向量會影響答案。對偶問題的矩陣裡還留著 d̃ 維的內積,所以特徵維度要到下一堂才真的擺脫。
hard-margin SVM 堅持把資料完全分開,所以會去擬合雜訊。這堂課替每個點加一個違反量 ξₙ,用參數 C 權衡邊界寬度與違反總量,得到 soft-margin SVM;它的對偶問題和 hard-margin 只差 αₙ 多了上界 C。αₙ 的值把資料分成非支援向量、free SV、bounded SV 三類,算 b 要用 free SV;C 與 γ 用交叉驗證選,支援向量的比例 #SV/N 是 leave-one-out 誤差的上界。
用 representer theorem 把 ridge regression 換成解 β,得到 kernel ridge regression 的解析解 β = (λI + K)⁻¹y,但 N 個 βₙ 幾乎都不是 0。把平方誤差換成 ε-insensitive 的管狀誤差,照 soft-margin SVM 的路線寫成 QP 再取對偶,就得到支援向量迴歸(SVR):對偶有 2N 個變數,嚴格落在管子裡的點 βₙ 一定是 0。
這堂把 bagging 的 bootstrap 改看成替每筆資料加權,再刻意把權重調到讓上一輪的 gₜ 加權錯誤率剛好 1/2,逼下一輪學出不一樣的假說。做法是答錯的資料乘上 ◆ₜ = √((1−εₜ)/εₜ)、答對的除以它,並用 αₜ = ln ◆ₜ 當票數做線性投票,這就是 AdaBoost。基礎演算法只要每一輪都比亂猜好一點,E_in 會在 O(log N) 輪內降到 0;搭配 decision stump,六筆資料手算三輪就看得到。
隨機森林是 bagging 套在完全長成的 C&RT 上,再讓每次分支只看隨機投影出來的少數特徵。bootstrap 抽 N 次時,每筆資料約有 1/e ≈ 36.8% 的機率沒被某棵樹用到,這些 out-of-bag 資料可以直接算出 E_oob,當作不用另外切資料、不用重新訓練的驗證;再配上 permutation test 就得到每個特徵的重要度。代價是結果會隨亂數種子晃動,樹要加到 G 穩定為止。
AdaBoost 每一輪的權重總和,剛好是指數誤差 exp(−ys) 的總和。這堂課由此推出:基礎演算法找的 gₜ 是近似的函數梯度方向,票數 αₜ 是那個方向上的最佳步長。把指數誤差換成平方誤差,同一套推導變成「每一輪對殘差 yₙ − sₙ 做迴歸,再用單變數線性迴歸定步長」,基礎模型用砍弱的 C&RT 就是 GBDT。
網路疊深之後,每一層只要做一點事,但結構、模型複雜度、最佳化與計算量都變難。這堂課挑初始化與正則化兩件事來講:用 d—d̃—d 的 autoencoder 一層一層預訓練權重,讓每一層先學會保留資訊的編碼;在輸入加人工雜訊訓練,當成一種正則化;最後把 autoencoder 換成線性的,推出最佳的 W 就是 XᵀX 最大的 d̃ 個 eigenvector,資料先減平均就是 PCA。
推薦系統的輸入只有使用者編號。把編號做 binary vector encoding、丟進拿掉 tanh 的 N-d̃-M 線性網路,假說就是 h(x) = WᵀVx,等於把評分矩陣寫成 R ≈ VᵀW。學 V 與 W 有兩條路:交替最小平方每輪解 M+N 個線性迴歸,SGD 每次只用一筆評分更新一位使用者與一部電影的向量。最後把 boosting、神經網路、RBF 網路、矩陣分解與 k 近鄰收成一張萃取模型的地圖。
CS230 是 Andrew Ng 與 Kian Katanforoosh 在 Stanford 教的深度學習課,採翻轉教室:神經網路、最佳化、CNN、序列模型與 Transformer 的基礎放在 Coursera 的五門線上課,每週一堂實體課講專案方法、對抗攻擊與生成模型、強化學習、LLM 應用與可解釋性。九堂實體課的錄影、多數投影片與兩份附解答的期中練習考公開;Stanford 專用的 Coursera 場次、助教課錄影與專案指導拿不到。
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 訓練長思維鏈。
Agent 要能根據可信回饋修正行動;同一次任務做得更好,不代表模型權重已經學會。
以固定比較條件、配對結果與重現紀錄,把生成模型專案寫成可檢查的研究證據。
知道反向傳播用鏈式法則,還不等於能寫出正確的訓練迴圈。
以角色扮演報告分清論文主張、實驗證據與自己的推論,走完受控比較例子。
RNN 把歷史壓進一個狀態,attention 則讓目前位置直接讀取一組歷史表示。
模型學會的下一 token 分佈,跟我們怎麼從分佈挑 token,是兩件接續發生的事。
前一堂知道怎麼造出 noisy input 與噪聲標籤,這堂要回答下一個缺口:網路預測 ε 之後,怎麼得到下一個較乾淨的樣本?
普通 autoencoder 把輸入壓成一個向量再還原;VAE 則為每筆資料產生一個潛在分佈,讓重建與生成能在同一個機率模型中討論。
分清 ICL、SFT、reward model 與 RLHF 各自改變什麼,並用算例驗收
推導 DPO loss 並重算數值例子,再追 latent diffusion 的形狀與條件路徑
以完整數值例子與變式答案理解Vision-language model:圖片如何成為語言模型的輸入。
以完整數值例子與變式答案理解Cross-attention 與 DiT:條件如何進入去噪器。
追 Q-Former 的 query 讀取與兩階段訓練,再用固定預算計算模型與資料的分配
以完整數值例子與變式答案理解Mixture of Experts:總容量與啟用計算如何分開。
以完整數值例子與變式答案理解分散式訓練:梯度、模型與狀態各如何切分。
以完整數值例子與變式答案理解高效推論:FlashAttention、KV cache 與推測解碼。
區分位置/記憶體/資訊取用並設計受控驗收
從recurrence展開固定卷積並識別selection邊界
把不同危害對應不同資料流與指標
計算 frame、mel 與 WER,再算 codec token 帳並區分擴散採樣
能追時空attention shape並區分影片時間與去噪時間
區分三種世界表示與動作介入證據,再看共識成本與 corrigibility 定理的條件
以完整數值例子與變式答案理解LoRA:少改參數,改的是哪個矩陣。
用公開練習卷區分機率、資料流與評估錯誤,走完序列機率例子,再以變式題驗收。
開放式演化改的是 agent 程式與流程;archive 保留不同分支,保留測試再檢查泛化。
多個程式候選仍需需求反例來挑選;先通過正確性檢查,速度提升才有意義。
取回管理、訓練 KV 表示與 cache 重用處理不同瓶頸;速度與命中率都不保證資料新鮮。
多產生候選只能提高正解出現的機會;可信的選擇器才把機會變成實際成功。
最後答案正確不代表推導成立;步驟回饋能定位錯誤,驗證器本身仍需檢查。
外部觀察、執行測試與原則批評提供不同回饋;先辨認訊號,再決定修正或訓練。
多步驟任務要區分搜尋、平行執行與訓練;子任務產物必須支撐原任務的成功條件。
組內回饋必須能區分好壞;正解篩選、相對優勢與取樣策略,決定訓練是否真的得到有用訊號。
候選搜尋解決選擇問題,文件檢索補知識缺口;兩者都需要保留規格與可檢查的依據。
人類任務時長、成品品質與引用支持率回答不同問題;長任務驗收應同時檢查流程與交付物。
多樣性、驗證、資料選擇與效率是不同瓶頸;研究計畫要有保留測試與足以推翻假說的條件。
RL 系統用推論引擎取樣、驗證器給獎勵、訓練引擎重算 logprob 與梯度,再把新權重同步回推論端。用一個自編的小例子走完這五步,再理解快取、歷史保留與非同步更新各在解決什麼問題。
第 13 講的主軸是「限制 agent 能存取什麼、能做什麼」。投影片先用五個真實事件說明出事的方式,再歸成四種威脅模型(惡意使用者、prompt injection、agent 失誤、不當手段);對策分四層:訓練端的 red teaming 與安全訓練、執行端的沙盒與憑證代管、事後與即時的監控,以及安全評測。最容易被忽略的一點是:把 API key 藏起來,不等於 agent 不能濫用它背後的權限。
Graham Neubig 用自己開發的 OpenHands 講框架設計:先走一遍 coding agent 從 HumanEval、SWE-bench、Devin 到 2026 年長時間、可中斷、平行執行的演進,再拆 Software Agent SDK 的零件(LLM、tools、conversation、condenser、workspace、確認政策),接著談單一 agent 與多 agent 的取捨、本機與雲端、IDE/GUI/CLI/整合四種介面,最後是把 agent 接到 issue 與 PR 的自動化,以及從過去軌跡自動修訂 skill。
AI Engineering from Scratch 是 GitHub 上約 6.3 萬星、MIT 授權的免費課程:20 個 phase、523 堂,從線性代數、傳統 ML、深度學習,一路排到 LLM、agent 與 AI 安全,每堂先手刻再用框架對照。前段的數學與深度學習核心可以照著學,Phase 10 的 SFT/RLHF/DPO 先別信,其餘 phase 當主題地圖用。
聲音表示、影片的時間關聯、動作條件的世界轉移,是三種不同學習任務。原篇把第24–26堂放一起,最後卻只有音訊練習,無法驗收另外兩堂。這個網址保留為閱讀入口;完整教學在下列第 24–26 堂各一篇,第 26 堂那篇也包含另一份對齊教材。
語言模型先把文字變成 token,影像模型也需要把畫素整理成可運算的表示。
能執行測試修復迴圈並計算pass@k與區分交付成功
Cross-attention是讀取另一組表示的運算;DiT是擴散模型的骨幹選擇;Q-Former是用可學query抽取或橋接資訊的模組。它們可以組合,但不是三個互斥的產品。這篇只比較角色,Prompt-to-Prompt與classifier-free guidance的操作細節放回第14堂教學。
GAN 用判別器取得生成訊號,擴散模型則先定義一個會逐漸破壞資料的過程,再學習反方向的條件分佈。
模型放不下一張GPU,和模型已放得下卻生成太慢,是不同故障。分散式策略重新分配資料、參數與狀態;FlashAttention主要改善attention的記憶體IO;KV cache避免decode時重算歷史K/V。先找成本的位置,再選方法。
考卷檢查你能否在固定問題下推理;論文報告檢查你能否判斷別人的證據;專案檢查你能否自己產生可重現證據。三者不是「課程行政事項」的清單,而是逐步加深的學習任務。這個舊網址保留為評量導覽,完整做法各有教學篇。
分類器學「這張圖是哪一類」,GAN 的生成器學「怎麼從隨機輸入產生像資料的新樣本」。
這個系列依 CMU 10-423/623/723 Generative AI 的 Spring 2026 公開材料整理。
作業 1 把 RNN、Transformer 與現代 attention 的觀念拉到程式層。
會抄加噪公式,還不代表 diffusion 實作正確。
以自擬數值例子驗收梯度、資料與評估,並保留原作業規格。
以自擬數值例子驗收梯度、資料與評估,並保留原作業規格。
一個prompt加一個示範答案,與一個prompt加兩個偏好回應,不是相同資料。SFT學示範token;典型RLHF管線先學reward再做受約束的policy更新;DPO由偏好對與reference-relative比率直接建立loss。這篇整理它們的分界,完整推導與驗收各有單獨教學篇。
長上下文問模型能否處理、找到並使用很久以前的資訊;SSM問如何用狀態更新處理序列。SSM的效率不能直接證明長文件檢索可靠,attention的長窗口也不能直接證明重要資訊一定被使用。第19與21堂因此各自有獨立教學。
第 2 堂的 attention 知道如何比對內容,但實際語言模型還需要順序資訊,也要承受生成時的記憶體成本。
你可以讓模型適應新任務而不重訓所有參數,但這句話包含兩種不同做法。LoRA等PEFT方法仍有訓練,少量參數會改變;ICL把示例放進上下文,推論時不因這些示例做參數更新。來源也不只兩堂:第9堂末段已有zero/few-shot,第10堂講PEFT,第11堂接ICL與後續調適。
能比較候選選擇與GRPO優勢且區分機制因果證據
模型胡說、洩漏資料或被prompt injection誘導,是可觀察的產品風險;對齊理論問特定形式化假設下,哪些保證可以成立。兩者需要不同證據。這篇保留關係與界線,第22堂與第26堂的對齊教材分開教,不把一個定理擴成所有產品都不可能安全。
一句「我喜歡貓」不是三個互不相干的字。
Scaling laws問固定預算下模型與資料怎麼配置;MoE問如何有更多expert容量、卻只啟用少數expert。前者是配置與經驗模型,後者是架構與路由,不能合稱「把模型變大」就跳過其中一方的機制。
「文字加圖片」不能描述清楚模型的工作。文生圖要產生影像,文字是條件;VLM可能接受影像,產生文字回答。資料流方向、輸出目標與驗收不同。原第12–13堂的內容在這裡保留關係地圖,兩條路各有完整例子與檢查。
同樣一份歷史文字,模型怎麼讀、怎麼學、怎麼抽下一個token,是三個問題。注意力決定資訊如何混合;訓練目標用正確答案改參數;解碼策略在固定模型下選輸出。原本把第2–3堂合在一起,容易讓讀者以為換解碼策略就是換模型。這篇保留主題關係,完整機制與練習分開讀。
擴散與VAE都能用機率模型的觀點理解,但「都有潛在變量」不代表它們是同一套生成流程。擴散把噪聲步驟串成鏈;VAE用encoder近似latent的後驗,decoder從latent重建資料。這篇是關係導覽,原第8–9堂的教學已拆成各自可檢核的內容。
11-868 第 10 講用 Lei Li 團隊自己的 LightSeq/LightSeq2 當教材,拆出四招:把矩陣乘法以外的小運算融合成一個 kernel、改寫 LayerNorm 與 Softmax 的公式來減少 thread 同步、參數與梯度用 FP16 存但 FP32 算、依反向傳播的相依關係重用記憶體。投影片報告的 WMT14 英德翻譯訓練加速是 1.4–3.5 倍。官方課表未列公開錄影連結,本文依投影片頁碼與兩篇論文整理。
11-868 第 14、15 講從 parameter server 講到 PyTorch DDP:先用 NCCL 的五個 collective(Broadcast、Reduce、AllReduce、ReduceScatter、AllGather)當積木,推出 ring 為什麼能讓廣播時間幾乎不隨 GPU 數增加,再把 AllReduce 拆成 ReduceScatter 加 AllGather。第二講拆 DDP 的兩個關鍵設計:把梯度分桶(預設 25 MB)、在反向傳播還沒結束時就開始同步。官方課表未列公開錄影連結,本文依投影片頁碼與 VLDB 2020 論文整理。
L05 用一個四層的情感分類網路當主線,先把計算表示成計算圖、用拓撲排序算出前向值,再用連鎖律與向量–Jacobian 乘積反向傳回梯度,最後拆解 TensorFlow v1 的 placeholder、variable、operation 與 session。投影片有一頁直接標著「important for HW2」。
標準 attention 會把 N×N 的分數矩陣寫回 HBM 再讀出來,時間大多花在搬資料。FlashAttention 用 tiling 加 softmax rescaling,讓每一塊都在 SRAM 裡算完,backward 則重算而不存。Tri Dao 在 11-868 的客座講義裡給了一組數字:backward 的 FLOPs 多了 13%,HBM 讀寫少了 9 倍,時間快了 6 倍。之後 FA3、FA4 的主題也一樣:硬體變了,瓶頸跟著搬家,演算法就得跟著改。
CMU 11-868 的 GPU 三講回答一個問題:為什麼寫對的 CUDA matmul 在 A100 上只用到 2.48% 的 FP32 算力。L02 講 SM、warp 與 grid/block/thread,L03 講 cudaMalloc、cudaMemcpy 與 kernel 索引,L04 用 tiling、coalesced access 與避開 bank conflict,把資料從約 500 個 cycle 外的 global memory 搬近一點。
11-868 第一份作業要你在 src/combine.cu 寫四個 CUDA kernel(map 15、zip 25、reduce 25、matmul 30 分),接回 MiniTorch 的 Python 後端,再用 5 分的整合測試收尾。reduce 與 matmul 的 shared-memory 優化標為 Optional。作業頁明寫需要 GPU,評分用的是不公開的私有測資。
11-868 第二份作業分三塊:自動微分的 topological_sort 與 backpropagate(40 分)、Linear 層與 MLP 網路(30 分)、binary cross entropy 與訓練迴圈(30 分),最後在 SST-2 上用 GloVe 詞向量訓練情感分類器,驗證準確率要到 75%。預設後端是你作業一寫的 CUDA kernel;repo 已在 2026-09-02 合併了 Fall 2026 的小修正。
HW3 要你在 HW1、HW2 做出來的 MiniTorch 上補齊 softmax loss、Dropout、LayerNorm、Embedding,再組出 pre-LN 的 GPT-2 decoder,最後在 IWSLT14 德英翻譯上訓練。配分是 tensor functions 20、basic modules 20、decoder LM 40、翻譯管線 20;滿分條件是通過私有測試且 BLEU 約 20±2。作業頁警告光訓練就要至少 10 小時,PSC 的 V100 一個 epoch 約一小時,要跑 10 個 epoch。2026 春季版 2/4 發、2/18 截止。
11-868 第四份作業要你照 LightSeq 的做法,親手寫 attention softmax 與 LayerNorm 的 CUDA kernel(前向、反向各一),接回自己的 MiniTorch,再換進 HW3 的 Transformer 訓練一個 epoch。配分是 Softmax 40、LayerNorm 40、整合 20。作業頁預期單一 kernel 快 3.7 到 15.8 倍,整個訓練卻只快約 1.1 倍,原因是 Amdahl 定律。需要一張 NVIDIA GPU;repo 在 2026 秋季已被改過。
CMU 11-868 第五份作業改用 PyTorch 與 Hugging Face 的 GPT-2,要你只用 torch.distributed 和 torch.multiprocessing 寫出資料平行(切資料、建 process group、平均梯度,50 分),再寫出 GPipe 式的管線平行(切模型、產生時脈排程、用 worker thread 跑 micro-batch,50 分)。兩部分都要在至少兩張 GPU 上做 benchmark 並交圖:資料平行要在 2 張卡上達到至少 1.5 倍加速,管線平行要比單純模型平行快。2026 春季版 3/25 截止。
11-868 第六份作業第一次放下自己寫的 MiniTorch,改用產業框架。兩題各 50 分:第一題改一支 DeepSpeed 訓練腳本,打開 LoRA,讓 Llama-2-7B 在 2 張 16GB 的 V100 上訓練得起來;第二題填完 SGLang 推論腳本的 TODO,並調參數讓生成跑快一點。兩題要的 GPU 互相衝突:SGLang 不支援 V100,要換 L40S、A6000 或 A100。春季版 4/13 截止,作業頁不提供評分測資。
11-868 的 RL 系統講題沒有投影片,Syllabus 只列了 ReaLHF 一篇論文。作業七倒是完整公開:用 Anthropic HH-RLHF 資料訓練 DistilBERT reward model(40 分),在 VERL 風格的 trainer 裡補上 GAE、PPO loss 與 entropy,微調 GPT-2(40 分),最後比較 RLHF 前後的 reward 分布(20 分)。起始碼的 trainer 沒有 import verl 套件,學的是 RLHF 的資料流,不是 VERL 的分散式引擎。
CMU 11-868 第一講用 51 頁投影片論證一件事:LLM 的瓶頸不只在模型,而在「用更少的 GPU、記憶體與電力,更快地在更大的資料上訓練與推論更大的模型」。它把一個 Transformer 拆成矩陣乘法、reduction、map、記憶體搬移四種底層運算子,再把難題分到 kernel、框架、分散式系統三層,並提醒光把計算變快不夠,資料搬移同樣花時間。
11-868 用兩講回答同一個問題:一台推論伺服器怎麼同時服務大量請求,又不浪費 GPU 上的 KV cache。第 22 講(Lei Li)從 SGLang 的排程迴圈講起:ORCA 的 continuous batching、用 radix tree 管 KV 的 RadixAttention、依前綴命中率排序與分流、把 CPU 排程藏到 GPU 計算後面。第 24 講由 vLLM 作者 Woosuk Kwon 主講:PagedAttention 把 KV cache 切成固定大小的 block,用 block table 做虛擬化,讓同一張 A100 的 batch 從 8 撐到 40;後半講 vLLM 怎麼壓 CPU overhead、用 piecewise CUDA graph、切模型平行與管理混合架構的記憶體。
CMU 11-868 是 Lei Li 開的 LLM 系統研究所課:從 CUDA kernel、自己的 MiniTorch 框架,一路做到分散式訓練、SGLang 服務與 RLHF。Spring 2026 的 28 份講義、7 份作業頁與 7 個起始碼 repo 全部公開,可評為 A3;缺的是錄影、GPU 與 PSC 帳號、quiz,以及「哪兩份作業是選修」這件事官方沒寫。
CMU 11-868 在 2026 春季用兩講回答「模型太大,一張 GPU 放不下」:L16 講切層的 pipeline parallelism(GPipe 的 micro-batch、1F1B、交錯 stage)和切矩陣的 tensor parallelism(Megatron-LM 對 FFN、attention、embedding 的切法),結論是節點內用 TP、跨節點用 PP、再外面疊 DP;L17 把 MoE 當成第三種切法——每張卡放不同的專家、其餘部分複製,代價換成 all-to-all 通訊與負載平衡,並以 GShard、DeepSpeed-MoE、DeepSeek-V3 的設計逐一說明。
11-868 用兩講處理量化:L19 從 BF16、absmax/zero-point 講到 AdaQuant、ZeroQuant、LLM.int8(),L20 整講拆解 GPTQ。GPTQ 只量化權重,每次量化一欄就用二階資訊修正還沒量化的權重,再靠 lazy batch update 與 Cholesky 讓它跑得動 175B。它省下的主要是記憶體;推論變快,是因為單一 batch 的 decode 本來就卡在讀權重,運算量本身沒有減少。
11-868 第 23 講把微調當成記憶體問題來算:LLaMA-8B 全參數半精度微調約要 80GB,換成 LoRA 約 33GB,再把凍結權重存成 4-bit 的 QLoRA 壓到約 9.2GB。這講的主線是三步:只訓練低秩的 A、B 兩個小矩陣(投影片說這招最早出自 CIAT);用 NF4 查表與雙重量化把凍結權重壓到約 0.52 bytes/參數;用 paged optimizer 在 GPU 快爆時把 optimizer state 換到 CPU。
11-868 最後一組講義有五份:DistServe 的 Hao Zhang、NVIDIA Dynamo 的 Vikram Mailthody、LMCache 的 Junchen Jiang、Mooncake/KTransformers 的 Mingxing Zhang,加上 Lei Li 的框架地圖。它們回答同一個問題:服務規模從一台機器擴到一座資料中心之後,算力和 KV cache 要放在哪裡。主線有三步:量尺從 throughput 換成符合 SLO 的 goodput;prefill 與 decode 拆到不同 GPU;KV cache 從 GPU 記憶體擴張到 CPU、SSD 與遠端儲存。
L08 從 BPE 講到講者 Lei Li 參與的 VOLT:詞表大小有成本也有價值,VOLT 用「每加一個 token 能降多少正規化熵」找划算的點,再化成最佳傳輸問題求解;後半講 LLaMA 3 詞表從 32k 擴到 128k、中文字被 byte-level BPE 切成三個 token 的代價。L09 從 greedy、取樣、beam search 一路講到 speculative decoding:小模型先猜 N 個 token,大模型一次前向驗證,因為驗證比生成便宜;最後介紹 EAGLE 改成預測最後一層特徵。
Google 的 Srinath Mandalapu 用兩講、兩百多頁,把一個 attention 從 Python 一路追到 TPU 的 VLIW 指令。L12 講 JAX 生態、TPU Ironwood 的記憶體與運算單元,以及 XLA 怎麼把 attention 編成三個融合 kernel。L13 講 XLA 做不到的部分:用 Pallas 自己控制 HBM 與 VMEM 之間的搬運,寫出 FlashAttention,再加上區塊稀疏變成 Splash Attention。思路跟 GPU 相同,差別在於:TPU 上排程主要交給編譯器,要介入就得用 Pallas 把迴圈與區塊大小攬回自己手上。
11-868 只花兩堂課講模型本身:L06 把 Transformer 拆成 embedding、多頭注意力、FFN、LayerNorm 與殘差,L07 用 T5、LLaMA、GPT-3 三個模型示範現代 LLM 改了哪些地方。對系統工程師來說,重點是記住形狀:GPT-3 175B 是 96 層、d_model 12288、context 2048,訓練 3,000 億 token;LLaMA 65B 是 80 層、d_model 8192、訓練 1.4 兆 token。這些數字決定了後面每一堂加速、平行與服務課要處理的量。
資料平行每張卡都存一份完整的參數、梯度和 optimizer state;用 Adam 混合精度訓練時,每個參數約要 20 bytes,其中 16 bytes 是 optimizer 相關,LLaMA-3 8B 光這些就要 160GB。CMU 11-868 L18 以 ZeRO 論文為主軸,逐格動畫示範三個階段:ZeRO-1 切 optimizer state、ZeRO-2 再切梯度、ZeRO-3 連參數也切。投影片的結論是前兩階段不增加通訊、最多省 8 倍記憶體;第三階段每張卡的用量隨 GPU 數下降,代價是投影片估的約 3 倍通訊。
L12 的主軸是「搬資料」。前段用 SambaNova SN40L 說明資料流架構與 metapipelining:同樣跑 Llama 3.1 8B,投影片說 RDU 每個 token 約 3 次 kernel 呼叫,GPU 約 800 次,差別來自能不能把整個 decoder 融合進一個 kernel。中段把尺度拉到資料中心:TP、PP、EP、DP 各自需要哪種集體通訊,以及計算與通訊重疊為什麼決定擴展效率。後段回到能源與 DRAM:搬一個 byte 比算一次貴得多,記憶體控制器、burst mode、HBM 都是在解同一個問題。這講沒有公開錄影,本文只依投影片。
每個核心都有自己的 cache,同一個位址就可能同時有好幾份副本,各核看到的值會不一樣。這不是加鎖能解決的問題,是硬體複製資料造成的。CS149 L14 先定義什麼叫 coherent,再拆解 snooping 的 MSI 協定:要寫就先廣播 BusRdX 讓別人作廢,MESI 多一個 E 狀態省掉「讀完再寫」的第二筆交易,directory 則把廣播改成點對點。對程式設計師最實際的後果是 false sharing:兩個 thread 寫不同變數,只因為落在同一條 cache line,就讓 cache line 在核心間來回彈,投影片的 demo 慢了三倍。
CS149 是 Kayvon Fatahalian 與 Kunle Olukotun 在 Stanford 教的平行計算課,從多核 CPU、SIMD 一路講到 GPU、AI 加速器、資料中心,最後回到 cache coherence 與 lock-free。Fall 2025 的 18 份投影片、5 個程式作業的 starter code 與 README、4 份書面作業 PDF 都能匿名取得,本系列評為 A3(足以自學)。缺口有四個:當期錄影只在 Canvas;PA1 評分用 Stanford myth 機器;PA4 要自費租 AWS Trainium2,而且課程 AMI 是私有的;PA5 的 H100 排隊系統與排行榜要 SUNet ID。公開錄影是 2023 版,本系列只拿它當聽講補充。
第 8 講要你換一個腦袋:不再想「每個 worker 做什麼」,而是把演算法寫成對序列的操作,例如 map、fold、scan、segmented scan、gather/scatter、sort、groupBy。這些原語都有高效的平行實作,能把不規則的平行變規則、把細粒度同步變粗粒度。代價是要多掃幾遍資料,所以很吃頻寬。
L9 開場就說:懂了 arithmetic intensity 與 roofline,你就幾乎懂了現代 AI 軟體面效能最佳化的一切。接著示範三件事:全連接層、卷積層、attention 最後都變成矩陣乘(GEMM);GEMM 要靠分塊(blocking)讓資料留在快取裡;層與層之間要融合(fusion),別把中間結果寫回 DRAM 再讀回來。softmax 可以分塊計算,這就是融合版 attention(FlashAttention 的核心想法)不必存下 N×N 矩陣的原因。
L13 問的是:寫快程式的專家太少,怎麼辦?投影片給三個答案。一是提高抽象層級:Halide 把「算什麼」(演算法)和「怎麼算」(排程)拆成兩種語言,同一段模糊濾波可以只改一行排程就換成分塊、向量化、多核版本。二是智慧搜尋:因為排程空間定義清楚,可以用搜尋加學出來的成本模型自動產生排程。三是新興的 LLM agent:讓模型寫 CUDA、執行、看 profiler、反思、再改,並用範例資料庫或 prompt 最佳化讓它自我改進。投影片最後把問題留給你:真正的價值在 DSL 設計,還是 LLM agent?
CS149 L16 分三段:先用 cache coherence 的眼光看鎖怎麼實作(test-and-set、test-and-test-and-set、ticket lock、CAS、LL/SC),再用一條排序 linked list 示範從一把大鎖改成 hand-over-hand 細粒度鎖,最後介紹 lock-free:單一生產者單一消費者佇列、用 CAS 寫的 stack、ABA 問題與 hazard pointer。投影片的結論很務實:在只有你的程式佔用機器的情境下,寫得好的鎖版本常常一樣快,而且好寫得多;lock-free 的價值在於執行緒可能被搶佔、page fault 的系統。
CUDA 的 grid、thread block、CUDA thread 是一套程式抽象;GPU 用 SM、warp 與硬體 block 排程器把它實作出來。這一講的核心是分清兩件事:thread block 之間系統可以任意排序,同一個 block 裡的 thread 則保證同時存在,所以 block 能用 shared memory 和 __syncthreads() 合作,也所以一個 SM 能塞幾個 block 由暫存器與 shared memory 的量決定。
L10 從一條式子出發:功耗固定時,效能只能靠「每個運算花多少焦耳」來換,而通用處理器把大部分能量花在取指令、解碼、搬資料,不是在算。投影片的經驗法則是 GPU 比 CPU 好約 10 倍 perf/watt,固定功能 ASIC 可達 100–1000 倍。接著用同一套標準(分塊 tensor、非同步計算與記憶體、運算單元直接互傳)檢視 H100 的 Tensor Core 與 TMA、Google TPU 的脈動陣列,以及可重組資料流架構。
L3 前半用高速公路與洗衣服的比喻分開延遲與頻寬,再算給你看:向量逐元素相乘在 V100 上效率不到 1%,因為記憶體送資料的速度追不上 ALU。後半的主題是「抽象 vs 實作」:ISPC 讓你用 SPMD 的方式思考(一群 program instance 各做一份),編譯器卻用 SIMD 指令實作。把這兩層混在一起,是這門課最常見的困惑來源。
CS149 L6 要你把「通訊」看得很廣:處理器和 cache、和記憶體、和另一台機器之間的資料搬移都算。現代平行處理器的算力遠高於頻寬,所以 arithmetic intensity(每搬一單位資料做多少計算)決定了你能不能把硬體餵飽。提高它的手段有三類:改分配方式減少必要通訊、用 blocking 與 loop fusion 減少 cache 造成的額外通訊、用分散與錯開存取降低 contention。
CS149 Fall 2025 第二講用一個計算 sin(x) 的迴圈,依序加上三個想法:把電晶體拿去做更多核心(multi-core)、讓一道指令同時驅動多個 ALU(SIMD)、在同一個核心上交錯執行多個執行緒來隱藏記憶體延遲(hardware multithreading)。前兩個增加運算能力,第三個讓運算單元在等記憶體時不閒著。結論是三個條件:平行工作要夠多、同一組工作要跑同樣的指令、平行工作要比 ALU 更多才能隱藏延遲。
PA1 程式寫得不多,重點是分析:六個程式分別練 threads 的工作分配、SIMD 遮罩、ISPC gang 與 task、輸入資料如何影響 SIMD 效率、頻寬受限的 saxpy,以及用計時找 K-Means 的熱點。Written 1 則用紙筆題練峰值吞吐量、指令相依、管線、多執行緒藏延遲與 SIMD divergence。官方評分以 Stanford myth 機器為準,校外可以在自己的機器跑,但數字不能直接對照。
CS149 PA2 要你用 C++ 寫一個多核 CPU 上的任務執行庫,而且要寫四次:每次 run() 都開 thread、改成 spinning 的 thread pool、改成會睡覺的 thread pool,最後擴充成非同步、有依賴的 task graph。每一步都得是完全正確的系統,並跟官方參考實作比速度。官方評分機器是 AWS c7g.4xlarge;校外可以在自己的多核機器上跑,但數字不能直接和官方比。
PA3 有三部分:把 SAXPY 改寫成 CUDA 並分開計時、用 exclusive scan 實作 find_repeats、再寫一個又對又快的 CUDA 圓形渲染器(85 分)。渲染器的難點是半透明圓的混色不可交換,每個像素都得照輸入順序更新,而起始程式碼一個圓一個 thread 的做法兩樣都沒守住。Written 2 則是五題計分題(fusion、SIMD 利用率、用 barrier 取代鎖、用資料平行原語處理圖、粒子模擬的鎖)加 14 題練習。校外要自備 NVIDIA GPU,本文不提供解答。
PA4 把你丟到 AWS Trainium2 的一顆 NeuronCore 上。這裡沒有 cache 幫你決定什麼資料留在晶片上:SBUF(28 MiB)與 PSUM(2 MiB)都要你用 dma_copy 明確搬進搬出,partition 維度最多 128。Part 1 用 vector add 和 transpose 教你這些限制與 DMA 成本,Part 2 要你把 convolution 拆成一串 matmul、再和 max pool 融合成一個不落地到 HBM 的 kernel。Written 3 用 line buffer、兩次 box blur、softmax 硬體與 metapipelining 練同一件事:把中間結果留在晶片上。環境需要課程 private AMI 與付費 capacity block,校外實質只到 A2。
CS149 Fall 2025 的最後一份程式作業是開放式的:從 Histogram、1D occupancy decoder、FlashAttention、3D 熱方程 RK4、SwiGLU 五題挑一題以上,在 H100 上把 PyTorch baseline 調快,可以用 CUDA、Triton 或 TileLang,也允許用 LLM。分數不看速度門檻,看你交的工作日誌能不能說清楚每一步量了什麼、推出什麼假設、為什麼停手。H100 job queue 與排行榜要 SUNet ID,校外只能在自己的 NVIDIA GPU 上用 eval.py 跑。
L4 給了一套平行化的思考流程:先分解(decomposition)找出彼此獨立的工作,再分配(assignment)給工作者,再協調(orchestration)通訊與同步,最後對應到硬體。Amdahl 定律提醒你循序部分決定 speedup 上限。貫穿全講的例子是 2D 網格解算器:原本的相依關係很難平行,改用紅黑著色換一種更新順序後,就能用資料平行或共享位址空間兩種模型寫出來。
L11 問的是:硬體為 AI 專用化之後,程式設計師要付出什麼?投影片以 H100 為例:要吃滿 Tensor Core,就得用 16×16 tile、讓 TMA 非同步搬資料、讓 producer 與 consumer warp 管線化,寫起來很複雜,所以有了 ThunderKittens 這類 DSL。另一條路是資料流架構(SambaNova SN40L):用 map/reduce/zip 等平行模式描述計算,編譯器做分塊、metapipelining 與佈局,投影片說它能把 Llama 3.1 8B 的整個 decoder 融成一個 kernel。
Coherence 只管單一位址;memory consistency 管的是不同位址之間的讀寫,在別的 thread 眼中以什麼順序生效。CS149 L15 用兩個 thread、兩個變數的例子說明:sequential consistency 下 r1 = r2 = 0 不可能,但每顆現代處理器都有的 write buffer 會讓讀跑到寫前面,於是它變成可能。TSO、PSO、weak ordering 依序放寬更多順序換取效能,fence 與同步原語再把需要的順序補回來。對應用程式設計師的結論很短:寫沒有 data race 的程式,用同步函式庫,C11、C++11、Java 5 就保證你看到 sequential consistency。
粗鎖好寫但慢,細鎖快但容易寫錯。Transactional memory 讓程式設計師只宣告 atomic { },由系統負責原子性與隔離。CS149 L17 講動機(failure atomicity、composability)與設計空間:資料版本管理分 eager(undo log)與 lazy(write buffer),衝突偵測分 pessimistic 與 optimistic。L18 拆 STM 的執行期資料結構與 McRT 演算法,再講 HTM 怎麼用 cache 的 R/W 位元加上 coherence 協定偵測衝突,最後是 Intel Haswell 的 RTM。Written 4 則把 MSI、LL/SC、鎖與記憶體順序、雙向 linked list 的細粒度鎖串成四題。
CS149 Fall 2025 第一講先定義 speedup,再用三個課堂示範說明通訊與負載不均會吃掉加速比。接著解釋單核效能為什麼停滯:superscalar 能挖的指令層級平行大約在每時脈發四道指令就用完,時脈又被功耗牆擋住,所以效能只能靠多核與專用硬體。最後一段把焦點轉到效率:取一次 DRAM 的延遲約是 L1 cache 的 60 倍,搬 64 bits 的能耗是一次整數運算的上千倍,高效率幾乎都歸結到高效率地存取資料。
負載平衡的難處在於它和排程成本互相拉扯:任務切得越細越好平衡,但每次領任務都要付同步成本。CS149 L5 先把選項排成一條從 static 到 dynamic 的連續光譜,再拆解 Cilk 的執行期:每個 worker 一條 deque,spawn 時先跑 child、把 continuation 留給別人偷,閒置的 thread 從別人 deque 的頂端偷走最大塊的工作。
Policy gradient 只能從實際拿到的獎勵判斷好壞,資料用得很浪費。Actor-critic 多訓練一個價值函數(critic)來估計「這個狀態有多好」,再用它算 advantage 去加權 policy(actor)的梯度。估計價值有三條路:用整條 rollout 的獎勵總和直接監督(Monte Carlo)、用「這一步獎勵加上自己對下一個狀態的估計」監督(bootstrap),或折衷的 n 步回報。L4 最後把它推到 off-policy:先在同一批資料上多走幾步(這是 PPO 的起點),再用 replay buffer 重用所有舊資料(這是 SAC 的起點)。
CS224R 是 Chelsea Finn 在 Stanford 教的深度強化學習課,從模仿學習一路講到 LLM 的 RL 和機器人基礎模型。Spring 2026 的 17 份投影片、三份作業的題目與起始碼、default project 規格與起始碼都能匿名下載,本系列評為 A3(足以自學)。缺口是 2026 錄影只在 Canvas、期中考卷與解答不公開、HW2 和 HW3 規定在 Modal 上跑。公開錄影是 Spring 2025 版,本系列把它當補充,逐講標出差異。
CS224R Spring 2026 的 default project 要你在 Qwen2.5-0.5B Base 上,針對 Countdown 算術推理任務依序實作三個階段:SFT 暖身、IPO 偏好最佳化、用規則式 verifier 當獎勵的 RLOO,三者用同一套 vLLM 評估比較,再做一個自選的研究延伸。實作部分禁止用 SFTTrainer 這類高階 trainer,也禁止任何 AI 工具協助,只有延伸部分例外。延伸占報告成績的一半,看的是方法和紀錄,不是分數。起始碼和資料集都公開,校外讀者缺的是 Modal credits 和 autograder。
CS224R 最後一講分三段:先把整學期的方法收成一個工具箱,再列七個還沒解決的問題(沒有可驗證獎勵的領域、怎麼用 prior data、world model、怎麼 scale、安全、幻覺與校準、通才系統的評估),最後用一半的篇幅講怎麼做研究:同時要有重要的問題和可行的計畫、先把風險挪到最前面、及早考慮轉向、研究成果要分享出去才算數。配著 2026 年 244 份公開的期末專題報告一起讀,最容易看出這些原則落地的樣子。
長 horizon 任務難,是因為要走過的狀態太多、犯錯和卡住的機會也多。CS224R 第 15 講的答案是拆成兩層:高層 policy 出子目標,低層 policy 以較高頻率執行。真正要做的設計決定有三個:子目標用什麼表示、兩層各自拿什麼監督、什麼時候換下一個子目標。投影片也坦白,階層和「單一 policy 加 chain of thought」誰比較好,還沒有定論。
CS224R Spring 2026 的 HW1 用一個自製的 Flappy Bird 環境考模仿學習:policy 一次預測 20 步目標高度、只執行前 10 步。你要依序寫出 MSE 回歸式 BC、flow matching policy 和 DAgger,並在 easy 與 hard 兩種模式下比較。題目 PDF、LaTeX 模板和起始碼都能匿名下載,CPU 也跑得動;解答、autograder 和 Gradescope 不公開。這篇整理每一題要實作什麼、要回答什麼,不寫解答。
CS224R Spring 2026 的 HW2 分三段:先在 5×4 的格子世界用表格型 Q-learning 看 reward 設計怎麼改變學到的路徑;再用 GAE 加 PPO clip 解一個只在完成時給 1 分的鐵鎚任務;最後用 BC 預訓練、critic ensemble 和更高的 UTD 做 off-policy actor-critic,並比較兩條學習曲線。題目、起始碼和算力指南都公開,但作業只支援 Modal,課程 credits 只發給修課學生。
CS224R Spring 2026 的 HW3 要你從零補完兩個 offline RL 演算法:AWAC 和 IQL,並在 D4RL 的 AntMaze 上比較。Problem 1 在 antmaze-umaze 和 antmaze-medium-diverse 跑 AWAC;Problem 2 先比較 IQL 的 expectile ζ = 0.2 和 0.9,再用較好的值跑 medium-diverse,最後在一份最高 return 只有 −46 的 PointMass 資料上,看 IQL 能不能拼出比資料更好的路徑,並跟只取前 10% 軌跡的 filtered BC 比較。題目 PDF、LaTeX 模板和起始碼都公開,但作業規定在 Modal 上跑,課程 credits 只發給修課學生。本文只整理題目和環境,不寫解答。
CS224R Spring 2026 第二講處理模仿學習的兩個失敗模式。第一個是示範有多種合理做法時,回歸只學到平均值;解法是把 policy 換成生成模型(高斯混合、離散化加自迴歸、diffusion/flow matching),再加上 action chunking。第二個是 compounding errors:policy 一犯錯就走到示範沒涵蓋的狀態;解法是 DAgger 和 human-gated DAgger 收集修正資料。前兩部分就是 HW1 的內容。
CS224R Spring 2026 第一講做三件事:交代課務、說明為什麼要學 deep RL、把「行為」寫成可以學的東西。核心是一組定義:state、action、trajectory、reward、policy,以及「最大化期望總獎勵」這個目標。最後用一個例子收尾:拿 ℓ2 回歸去模仿一群要切換車道、一群要直行的駕駛,policy 會學到兩者的平均值,一個沒人示範過的半切換動作。這個問題是 L2 的起點。
Meta-RL 在很多任務上訓練,目標是遇到新任務時只靠少量經驗就能解決。CS224R 第 13 講把它寫成「先探索收一點資料,再用這些資料適應」,最直接的做法是 black-box meta-RL(RL²):一個有記憶的網路把過去的 (s, a, r) 當輸入,隱藏狀態跨 episode 保留。它通用、表達力強,但難最佳化,尤其探索很難時:探索和執行互相依賴,端到端訓練容易卡住。投影片接著比較 PEARL 的 posterior sampling、MetaCURE 的預測式探索,以及 DREAM 用任務表示把探索和執行拆開訓練。
Model-based RL 先學一個預測 s_{t+1} 的 dynamics model,再拿它做兩件事:生成額外的訓練資料(Dyna、MBPO),或在執行時往前想幾步再行動(planning)。CS224R 第 11 講的主線是怎麼不被模型誤差拖垮:合成資料只從真實狀態出發跑短 rollout、用多個模型的 ensemble 平均掉誤差、長 horizon 的 planning 在尾端接一個 value function。模型值不值得學,取決於它比 policy 好學還是難學。
多任務 RL 把「任務是哪一個」當成狀態的一部分:s = (s̄, z_i),於是它還是一個普通的 MDP,標準 RL 演算法照樣能用。CS224R 第 12 講講兩種共享:權重共享(一個網路以 z_i 為條件做所有任務)和資料共享(hindsight relabeling:把為任務 A 收的資料改標成任務 B 的資料)。Goal-conditioned RL 是特例,任務就是要到達的目標狀態;用「最後到達的狀態」當目標重新標記,稀疏獎勵的探索問題就緩解很多。資料共享有三個前提:dynamics 跨任務一致、reward 能算、演算法是 off-policy。
PPO 和 SAC 都在回答同一個問題:一批花錢收來的資料,能不能多用幾次。PPO 對同一批資料多走幾步梯度,用 clip 把新舊 policy 的比值鎖在 1±ε 之內;SAC 把所有歷史資料放進 replay buffer,改學 Q(s, a),讓舊資料也能評估新 policy。前者穩、好調,後者省資料、難調。
CS224R Spring 2026 第七講處理一個問題:手上只有一批別人收的資料、不能再跟環境互動時,要怎麼學出比資料更好的 policy。直接拿 SAC 這類 off-policy 演算法來訓練會壞掉,因為 Q-function 在資料沒出現過的動作上亂估,policy 又專挑被高估的動作。投影片給兩類解法:只在資料裡的動作上訓練 policy(filtered BC、AWR、AWAC),以及用不對稱的 expectile loss 估計比資料更好的 policy 的價值、完全不查詢資料外的動作(IQL)。兩者都能做到模仿學習做不到的事:把不同軌跡的好片段拼起來。
Policy gradient 是 CS224R 的第一個線上 RL 演算法。它的梯度長得跟模仿學習的梯度幾乎一樣,只是每條軌跡多乘上一個獎勵權重:好結果的動作變得更可能,壞結果的動作變得更不可能。原始版本雜訊很大,L3 用兩招降低變異:只算「未來」的獎勵(causality)和減掉平均獎勵(baseline)。它也是 on-policy 的,每走一步梯度就要重新收資料;用 importance sampling 加上 KL 限制,才能在同一批資料上多走幾步。
Q-learning 把 actor-critic 的 actor 拿掉:直接學最優 Q 函數,要行動時取 argmax。代價是它不保證收斂,連線性 Q 都可能發散。CS224R 第 6 講用三個工程技巧把它拉回來:target network 讓目標值暫時不動、Double Q 拆開「選動作」和「估價值」來壓低高估、n 步回報用一點偏差換速度。
CS224R Spring 2026 第八講先花幾頁複習 offline RL,再問一個前面七講都跳過的問題:獎勵從哪裡來?遊戲有分數,真實世界的機器人、對話和自駕通常沒有。投影片給兩條路。第一條是從成功範例訓練一個目標分類器當獎勵,但 RL 會去鑽分類器的漏洞,解法是把 policy 走過的狀態不斷加進負例,跟 GAN 同一個結構。第二條是請人比較兩條軌跡哪條好,用 Bradley-Terry 式的 log σ(r(τw) − r(τl)) 學獎勵,這也是 LLM 的 RLHF 在用的方法。整講的第一個重點只有一句:獎勵不能視為理所當然。
只用模仿學習訓練的 VLA,成功率常卡在 80% 左右,要讓機器人自己上工卻常需要 99% 以上。CS224R 第 17 講把「怎麼在真機上用 RL 改進 VLA」拆成三條路:把 RL 改寫成監督學習(iterated offline RL)、在 VLA 的表示或擴散雜訊上另外學一個小 policy、學一個小 policy 去修改 VLA 的動作。投影片自己說這是還沒解決的研究問題,內容是近期主題加講者觀點。
CS224R Spring 2026 第十講由 OpenAI 的 Noam Brown 客座,論點只有一條:reasoning model 替 scaling 開了新的維度,把算力從訓練推到推論。他從自己做撲克 AI 的經驗講起,再用西洋雙陸棋、西洋棋和圍棋說明「推論時多想一下」一直都有用;接著談 LLM 怎麼做到這件事:chain of thought、多數決、o1/o3、GRPO 和 DeepSeek-R1-Zero。後半段主張整個領域要為大規模 test-time compute 重新思考:multi-agent、以分數對算力作圖的評估方式、安全評估的預算假設。投影片以圖為主,本文只寫投影片上看得到的論點。
CS224R Spring 2026 第九講由 Archit Sharma 客座,投影片註明改寫自 CS224N。主線是一條推導鏈:instruction tuning 解決不了「沒有標準答案」和「錯誤輕重不同」,所以改成最大化人類偏好;人類評分太貴又不準,所以改用成對比較訓練 Bradley-Terry reward model;RLHF 拿它當獎勵、加 KL 懲罰做 policy gradient;DPO 則利用 KL 約束問題的封閉解,把 reward 寫成 policy 的對數比值,整件事變成一個二元分類損失。最後一段談前沿:reward hacking、可驗證獎勵,以及用 AI 回饋取代人類回饋。
模擬器便宜、快、安全,還附贈真實世界拿不到的標籤,但它永遠和真實世界有落差。CMU 的 Guanya Shi 在 CS224R 第 16 講把縮小落差的方法分成三類:domain randomization 讓一個 policy 在很多種物理參數下都能用;teacher-student 先用特權資訊訓練老師、再讓只看得到真實感測器的學生去模仿;real2sim2real 用真實資料把模擬器修得更像。進階題目是用人類動作資料定義任務,以及挑選適合 sim2real 的 RL 演算法。
CS231N 第 15 講用一個問題貫穿全場:3D 形狀要用什麼資料結構存,神經網路才吃得進、吐得出?投影片依序走過 depth map/surface normal、voxel、point cloud、triangle mesh、implicit surface 五種表示,每種各配一個代表架構(全卷積深度預測、3D 卷積、PointNet、Pixel2Mesh 與 Mesh R-CNN、DeepSDF),再到 NeRF 與 3D Gaussian Splatting 的速度取捨,最後點名 VGGT、TRELLIS、Marble 等 2025–2026 的新模型。2025 錄影用的是另一套投影片,順序與重點不同。
CS231N 作業一占總成績 12%,2026 年 4 月 16 日截止,五個 Colab notebook 全部在 CIFAR-10 上用 numpy 手寫:Q1 kNN 要寫出兩層迴圈、一層迴圈、零迴圈三種距離計算;Q2 Softmax 從 naive 到向量化再到 SGD;Q3 把 affine、ReLU、softmax 組成兩層網路;Q4 改用 HOG 與色彩直方圖特徵;Q5 推廣成任意層數,並實作 Momentum、RMSProp、Adam。起始碼 65 KB,公開可下載;拿不到的是 Gradescope 評分。本文只講結構與目標,不給解答。
CS231N Spring 2026 的 A2 佔總成績 18%,五個 notebook 從手寫 BatchNorm/LayerNorm、Dropout、卷積與池化的 forward/backward,一路走到 PyTorch 的三層抽象,最後用 PyTorch 在 COCO 上做 RNN 影像描述。轉折點在 Q4:前三題的梯度要自己推,Q5 起交給 autograd,再用數值梯度檢查驗證。官方投影片提醒這是三份作業裡最長的一份。
CS231N Spring 2026 的 A3 占總成績 15%,四個 Colab notebook 把 L8、L12–L14、L16 各自落成一份實作:Q1 手寫 multi-head attention、Transformer decoder 做 COCO captioning,再組一個 ViT 在 CIFAR-10 上訓練;Q2 實作 SimCLR 的資料增強與對比損失,比較有無自監督預訓練的線性分類;Q3 寫 DDPM 的加噪、UNet、去噪損失、取樣與 classifier-free guidance,生成文字條件的 32×32 emoji;Q4 用預訓練 CLIP 做相似度、零樣本分類與檢索,再用 DINO 特徵只靠一幀標註做影片分割。本文只講題目結構、檔案與目標,不給解答。
CS231N Spring 2026 第 8 講從 RNN 翻譯模型的瓶頸出發,把 attention 抽象成一個作用在「向量集合」上的運算,再推到 self-attention、masked 與 multi-head,最後證明整層只是四次矩陣乘法。Transformer block 由 self-attention、LayerNorm、殘差與 MLP 組成;ViT 把 224×224 的圖切成 16×16 的 patch 當 token。講次結尾列出 2017 年後常見的四個改動:Pre-Norm、QK-Norm、SwiGLU 與 MoE。
兩層網路會把 32×32×3 的圖片拉平成 3072 維向量,空間結構就此消失。CS231N L5 的答案是卷積層與池化層:卷積用一組小濾波器在圖上滑動,同一組權重用在每個位置;池化負責降採樣,沒有可學參數。兩者都有平移等變性。記住一條公式就能算每一層的輸出尺寸:(W − K + 2P) / S + 1。
CS231N 是 Stanford 的電腦視覺深度學習課,Spring 2026 版的 16 講投影片、三份作業的題目頁與起始碼、課程筆記與專題規範都公開,本系列評為 A3(足以自學)。缺口有三個:2026 錄影只放在 Canvas、L17 與 L18 沒有投影片、期中考不公開。可以拿 2026 的投影片和作業,配 2025 年的 YouTube 錄影,照官方課表排 10 週。
CS231N Spring 2026 第 9 講把「整張圖一個標籤」推到「每個像素、每個物件」:語意分割用全卷積網路先降採樣再升採樣(U-Net 再接回高解析特徵);偵測從 R-CNN 的約 2000 次 CNN forward,一路優化到 Fast R-CNN、Faster R-CNN 的 RPN、單階段的 YOLO,再到不用 anchor 的 DETR;Mask R-CNN 在每個 RoI 上多預測一張 28×28 遮罩。最後一段講 saliency、CAM 與 Grad-CAM。課表列的對抗樣本、DeepDream 與風格轉換,2026 和 2025 的投影片都沒有。
CS231N 第 11 講以 Llama3-405B 為貫穿範例,先講 GPU 硬體與叢集(H100、8 卡伺服器、24,576 張 GPU 的叢集),再把 Transformer activation 的四個維度對應到四種平行化:切 batch 是資料平行(再演進成 FSDP、HSDP),切序列是 context parallelism,切層是 pipeline parallelism,切通道是 tensor parallelism。中間插入 activation checkpointing(用重算換記憶體)和一份實用的擴展配方,並用 Model FLOPs Utilization(MFU)當調參目標:超過 30% 算好,超過 40% 算優秀。
CS231N Spring 2026 的 diffusion 講次沒有從 DDPM 的數學開始,而是先說「這個領域的術語和符號一團亂」,然後只教一個乾淨的現代版本:rectified flow。訓練時在資料和雜訊之間取一個點,讓網路預測從資料指向雜訊的速度;生成時從雜訊出發,往反方向走約 50 步。接著一路疊上實務零件:classifier-free guidance、偏重中間雜訊的排程、在 VAE latent 上做 diffusion、用 Transformer(DiT)當去噪器、蒸餾減少步數。最後才把 VP、VE、ε/v 預測收進一個「廣義 diffusion」框架,並交代 latent variable、score function、SDE 三種數學觀點。
CS231N Spring 2026 的生成模型第一講,先把「判別模型學 p(y|x)、生成模型學 p(x)」講清楚:所有可能的圖片要搶同一份機率質量,所以生成模型能拒絕不合理的輸入。接著用一張分類圖把生成模型分成「算得出 p(x)」和「只能取樣」兩群,再依序講兩個算得出(或近似算得出)的:自迴歸模型用鏈鎖律把 p(x) 拆成逐步預測,太慢是它在原始像素上的死穴;VAE 算不出 p(x),改成最大化它的下界 ELBO,重建項和先驗項會互相拉扯。課表把 GAN 列在這一講,但 2026 與 2025 的投影片都把 GAN 放到下一講開頭,本文一併整理,讓三種範式在同一篇對照。
L2 從一個問題出發:電腦看到的是一堆 0 到 255 的數字,要怎麼認出貓?寫規則行不通,所以改用 data-driven 方法:收集資料、訓練、在新圖上評估。第一個分類器是 kNN,它教會你 train/val/test 怎麼切,但像素距離沒有語意。第二個是線性分類器 f(x,W)=Wx+b,可以從代數、視覺(模板)、幾何(超平面)三個角度看,再用 softmax 把分數變成機率,用 −log 機率當 loss。
CS231N 2026 的第一講分成兩份投影片。第一份用一條時間軸講視覺與深度學習的歷史:從 Hubel & Wiesel 的貓實驗、Marr 的視覺表示階段,到 Neocognitron、backprop、LeNet,再到 ImageNet 與 AlexNet 把兩條線接起來。第二份講課程地圖、評分與規則,並把作業全面搬到 Colab。讀完這一講,你會知道後面 17 講各自在補哪一塊。
L4 前半把線性分類器 f = Wx 換成兩層網路 f = W₂ max(0, W₁x),說明拿掉 max 這個激活函式就會退回線性分類器。後半回答網路變深之後梯度怎麼算:把函式畫成計算圖,每個節點只要知道自己的本地梯度,再乘上從後面傳回來的上游梯度。add 分配梯度、mul 交換、max 路由、copy 相加,四個模式就能追蹤任何網路。最後推到矩陣:dL/dx 永遠和 x 同形狀,所以不要真的建出 Jacobian。
RNN 用同一組權重,在每個時間步更新一個隱藏狀態,所以能處理任意長度的序列。CS231N L7 從手工造一個偵測連續 1 的 RNN 講起,接著是字元級語言模型、把 CNN 特徵接進 RNN 做影像描述,再用梯度流解釋為什麼 vanilla RNN 難訓練:梯度爆炸靠 gradient clipping,梯度消失靠改架構,也就是 LSTM。最後把 Mamba 這類 state space model 稱為「現代 RNN」。
L2 給了分數函式和 loss,L3 回答「怎麼找到好的 W」。前半講正則化:在 data loss 旁邊加 λR(W),讓模型不要把訓練資料背得太好。後半是一條最佳化器的演進線:SGD 在窄長山谷裡會來回震盪,Momentum 累積速度,RMSProp 依每個維度調步伐,Adam 把兩者合起來再做偏差修正,AdamW 把 weight decay 移到動量計算之外。投影片最後的實務建議是:多數情況先用 Adam(W),SGD+Momentum 可能更好,但要花更多力氣調學習率與排程。
CS231N 第 12 講的問題是:大規模訓練需要大量標註,能不能不靠人工標註學到好的表示?答案分三段。第一段是從影像變換自動產生標籤的 pretext task:預測旋轉、拼圖、補洞、上色,以及把遮罩比例拉到 75% 的 MAE。第二段是更通用的對比學習:InfoNCE 損失、需要大 batch 的 SimCLR、用佇列解耦 batch 與負樣本數的 MoCo,以及序列層級的 CPC。最後是不需要負樣本的 DINO:學生網路去預測動量老師的輸出,靠 centering 與 sharpening 避免崩塌。評估方式的核心是 linear probing:凍結編碼器,只訓練一層線性分類器。
CS231N 第 6 講的 2026 投影片標題是「Training CNNs and CNN Architectures」,分成「怎麼搭」和「怎麼訓練」兩半。架構只細講兩個:VGG 證明三層 3×3 卷積比一層 7×7 更深、參數更少;ResNet 讓層去學殘差 F(x) = H(x) − x,解決深網路連訓練誤差都更差的最佳化問題。訓練那半最實用的是遷移學習:資料不到約一百萬張,就先找大資料集上的預訓練模型。
CS231N 第 10 講把影片看成「2D+時間」的 T×3×H×W 張量,再沿著一條效率主線往下走:先在短片段上訓練、測試時平均多個片段;架構從逐幀 2D CNN、late fusion、3D CNN,到用光流分出動作的 two-stream 與把 2D 權重「充氣」成 3D 的 I3D;2021 年後換成 Transformer,但 token 數會爆炸,於是有 divided space-time attention、Video Swin、MViT 與 tubelet。最後一段擴展到時序定位、影音多模態、VideoLLM 與長影片理解,並用 HourVideo 指出這塊還差得遠。
CS231N Spring 2026 的視覺與語言講次,先把課程前半的「一個任務一個模型」換成「基礎模型」:先用大量多樣的資料預訓練一個模型,再用微調、zero-shot 或 few-shot 接到許多任務。主角有三條線。第一條是 CLIP:用 4 億組網路圖文配對做雙向對比學習,再把類別名稱寫成句子,就能不經微調直接分類;它也有弱點,分不出「草地上的杯子」和「杯子裡的草」。第二條是 LLaVA、Flamingo 到 Qwen3-VL、Molmo 的視覺語言模型:把圖片特徵接進 LLM,讓模型看圖輸出文字。第三條是 chaining:讓 LLM 寫描述或寫程式,把現成的視覺模型串起來。
CS231N Spring 2026 的最後兩講沒有公開投影片:L17 在課表上只寫「World Modeling」與客座講者 Gordon Wetzstein,L18 只寫「Human-Centered AI」。校外讀者能看的是 2025 年的替代品:L17 當年是另一個主題 Robot Learning(Yunzhu Li,有投影片與錄影),L18 是李飛飛的錄影,沒有投影片。本文把三者分開標示年份,不把 2025 的內容寫成 2026。後半講期末專題:占 35%,分 Applications 與 Models 兩條 track,專案必須處理像素,交付物是一段提案、三次 milestone check-in、6–8 頁報告與海報。
CS234 Winter 2026 的作業一共 68 分、四題:庫存 MDP 看視野與折扣怎麼改變最佳策略(8)、自駕車的 proxy reward 為什麼讓 AI 車乾脆不上匝道(5)、用 Bellman residual 界住貪婪策略的表現(30),以及在 RiverSwim 上親手寫 value iteration 與 policy iteration(25)。三題紙筆在練同一件事:你寫下的 reward、γ 與價值函數,不一定是你以為的那個目標。
CS234 Winter 2026 的作業二共 102 分、四題:DQN 紙筆題(8)、在 CartPole、Pendulum、HalfCheetah 三個 PyBullet 環境上實作 REINFORCE、神經網路 baseline 與 clipped PPO(54 分程式+21 分報告),證明策略誘導的狀態分布與 performance difference lemma(14),以及用 Belmont Report 檢視一個會邊學邊影響學生的 RL 實驗(5)。程式題的重點是把 L5–L7 的式子一行一行變成可以跑出 21 條學習曲線的程式。
CS234 Winter 2026 作業三共五題、94 分。前三題都在 MuJoCo Hopper 上:先用手寫 reward 跑 PPO(13),再從 1 萬筆偏好對學 reward model 後跑 PPO(19+8),最後用 SFT+DPO 直接從偏好學策略、完全不碰環境(6+19)。第四題換成純理論:用 Hoeffding 與 union bound 算出找 ε-最佳臂要幾次試驗(25),這題要等讀完下一篇 bandit 再做。第五題是新聞推薦的 stated vs revealed preference(4)。
CS234 L9 與 L10 前半把「探索」從 ε-greedy 這種經驗法則,變成可以證明的東西。先定義 regret:跟一直選最好的手臂相比,你少拿了多少。greedy 會鎖死在次佳手臂,固定 ε 的 ε-greedy 永遠有 ε 比例在亂選,兩者的 regret 都隨時間線性成長。Lai-Robbins 下界說最好也要對數成長,而 UCB 靠「對不確定的手臂樂觀一點」做到了:Bandit Algorithms 定理 7.1 給出每隻次佳手臂只會被拉大約 16 log n / Δ² 次。
CS234 是 Emma Brunskill 在 Stanford 教的強化學習入門課,從有模型的 MDP 規劃一路講到策略梯度、RLHF/DPO、bandit 探索和 MCTS。Winter 2026 的 14 講投影片、三份作業的題目與起始碼、專題規格都能匿名下載,本系列評為 A3(足以自學)。缺口是官網沒有 2026 錄影、L15 與 L16 沒有投影片、期中考與 tutorials 不公開。公開錄影是 Spring 2024 版,本系列只拿它當補充;2024 有兩講 Offline RL,2026 投影片裡沒有對應內容。
Q-learning 在表格上會收斂,接上函數近似就可能發散。CS234 把原因歸成 deadly triad:bootstrapping、function approximation、off-policy learning 三者同時出現。DQN 用兩招撐住:experience replay 打散樣本之間的相關性,fixed Q-targets 讓目標值在 C 步內不動。投影片引用的 Atari 消融表裡,Breakout 從線性模型的 3 分、沒有兩招的深度網路 3 分,到兩招都用的 317 分;只加 replay 就到 241。
前兩篇的 UCB 與 Thompson sampling 只處理單步決策。CS234 第 12 講把同一組想法搬進有狀態的 MDP:先換一把尺,用 PAC 限制「不夠好的步數」而不是總 regret;再看樂觀派的 MBIE-EB(計數+探索獎勵)與抽樣派的 PSRL(每個 episode 抽一個 MDP 來解)。狀態多到數不完時,計數失效,就改成在 Q-learning 目標上加 bonus,這是 Montezuma's Revenge 上贏過 ε-greedy DQN 的關鍵。最後一段問:探索策略能不能用學的?答案之一是 Decision-Pretrained Transformer。
CS234 Winter 2026 的最後一份客座投影片,由 Google DeepMind 的 Shane Gu 主講,36 頁、沒有公開錄影。主線有三段:先用 Solomonoff induction 說「最好的預測就是找出最短的生成程式」,再把預測分成三個層次;接著把正向模型 F、逆向模型 Π 與 Q 寫在同一組符號裡,說明 shooting 與 direct collocation 兩種規劃方式怎麼各用一種模型,並把 TDM 與 Generalized Decision Transformer 解讀成「換了時間尺度的世界模型」;最後談影片模型能不能成為物理世界的基礎模型。
有專家示範、沒有 reward 時,CS234 L7 後半給三條路:直接用監督式學習抄動作(behavioral cloning),發現誤差會隨時間累積後改成邊跑邊問專家(DAgger),或者乾脆反推專家在最佳化什麼 reward(inverse RL)。反推 reward 會碰到「無限多組 reward 都解釋得了示範」的問題,feature matching 與最大熵原則是兩種收斂答案的方式。這一段是下一篇 RLHF 的前身:從示範換成偏好,問題結構幾乎一樣。
CS234 Winter 2026 第一講先回答 RL 是什麼:在不確定之下,從經驗學會做好決策。它通常同時牽涉四件事:最佳化、延遲後果、探索、泛化。接著用火星探測車的七格世界,從 Markov process 一路加到 Markov reward process,定義 return、value function 和折扣因子,最後推出 MRP 的 Bellman 方程:可以直接解矩陣反轉,也可以用動態規劃迭代。加上動作之後就是 MDP,這是下一講的起點。
到目前為止,CS234 都在替整個狀態空間算一個策略。第 13、14 講換一個問題:如果我只在乎「現在這一步」該怎麼走,能不能多花一點本地運算,做出更好的決定?從 simple Monte Carlo search、expectimax tree 到 MCTS,再把每個節點當成一個 bandit,就得到 UCT。AlphaZero 把 MCTS 跟一個同時預測策略與價值的網路綁在一起,用 self-play 互相推進。投影片借用 Silver et al. 2017 的圖回答三個問題:架構有多重要、MCTS 加了多少、需不需要人類資料。
CS234 Winter 2026 第二講假設世界模型已知,回答怎麼算出最好的 policy。先把 MDP 加上 policy 變回 MRP,用 Bellman backup 迭代評估 policy;再用 policy iteration 交替評估與改進,並證明每一輪都不會變差,最多 |A|^|S| 輪就停。另一條路是 value iteration:直接重複套用 Bellman 最佳化運算子,因為它在 γ < 1 時是 contraction,所以一定收斂。最後補上 finite horizon:這時最好的 policy 通常會隨剩餘步數改變。
會評估之後,下一步是一邊收資料一邊把策略變好。CS234 第 4 講的路線是:ε-greedy 讓策略改進仍然單調;GLIE 規定探索要多到什麼程度、何時收手;Q-learning 在 GLIE 加上 Robbins–Monro 步長下會收斂到 Q*;最後把表格換成參數化的 Q̂(s,a;w),用 MC、SARSA 或 Q-learning 的目標做 SGD。代價是 deadly triad:函數近似、bootstrapping、off-policy 三者同時出現時,可能震盪或發散。
不知道轉移機率與 reward,要怎麼估一個策略值多少?CS234 第 3 講給三個答案:Monte Carlo 直接平均整條軌跡的回報(無偏、變異大、要等 episode 結束),TD(0) 用「一步 reward+下一狀態的估計值」當目標(有偏、變異小、每一步都能更新),certainty equivalence 先估模型再做動態規劃(最省資料、最貴的計算)。第 4 講開頭的 AB 例子把差別講到最清楚:同一批資料,MC 說 V(A)=0,TD 說 V(A)=0.75。
策略梯度不學價值再導出策略,而是直接對策略參數 θ 做梯度上升。關鍵一步是把 ∇P(τ;θ) 改寫成 P(τ;θ)∇log P(τ;θ),動態模型在取 log 後消失,只剩策略自己的 score function。原始估計量無偏但雜訊很大,CS234 用三招降噪:只看動作之後的回報(REINFORCE)、減掉只依賴狀態的 baseline(證明它不引入偏差)、用 critic 估計的價值取代 Monte Carlo 回報(actor-critic)。
Vanilla 策略梯度有兩個毛病:每批資料只走一步就丟,而且參數空間的距離不等於策略空間的距離,步長一大表現就崩。CS234 沿用 Joshua Achiam 的講法,從 performance difference lemma 出發,把新策略的表現改寫成舊策略資料上的 surrogate objective,再用 KL 散度界住近似誤差。最大化「surrogate 減 KL 懲罰」保證不退步,但理論常數太大,PPO 改用可調的 KL 懲罰或 clipping 近似它;advantage 則用 GAE 在偏差與變異之間折衷。
CS234 L8 把上一篇的 inverse RL 換了輸入:不再是專家示範,而是人類說「A 比 B 好」。Bradley-Terry 模型把這種成對比較變成一個可以用交叉熵擬合的 reward;RLHF 拿這個 reward model 加上 KL 懲罰去跑 PPO;DPO 則證明 KL 限制下的最佳策略有封閉解,把 reward 改寫成策略的對數比值,代回 Bradley-Terry 後 partition function 相消,於是可以直接在偏好資料上訓練策略、跳過 reward model。2026 投影片沒有 offline RL 的內容,DPO 也改由課堂自己講,不再是 2024 的客座。
CS234 L11 把探索的邏輯從「樂觀」換成「抽樣」。Thompson sampling 替每隻手臂維護一個後驗分布,每一步從後驗各抽一個值,選抽到最大的那隻;Bernoulli reward 配 Beta 先驗時,更新只是把成功或失敗次數加一。它剛好實作了 probability matching:選每隻手臂的機率,等於它是最佳手臂的後驗機率。在 Bayesian regret 下它跟 UCB 同階,在批次與延遲回饋的場景裡還比確定性的 UCB 更合適;代價是先驗錯得離譜時會表現很差。
整門 CS234 都假設 reward 是給定的。Winter 2026 的倫理與社會客座(Wanheng Hu,教材原本由 Dan Webber 發展)分兩次問:你真正想要的是什麼?第一次把「對齊」拆成三個目標:使用者的意圖、顯示偏好、客觀最佳利益,並用 RLHF 造成的 sycophancy 與個人 AI agent 當案例。第二次加入第四個目標:對使用者以外的人來說什麼是對的,再比較 top-down(寫下原則)、bottom-up(從範例學)與 participatory AI 三條路。結論沒有銀彈,但對齊有好壞之分。
Harvard CS 2881R 是 Boaz Barak 的研究所 AI 安全研討課,12 講圍繞四個問題:訓練好的模型怎麼會失準(emergent misalignment、安全訓練疊在哪一段)、它怎麼被攻破又該怎麼規範(jailbreak、model spec、內容政策)、最難察覺的風險怎麼偵測(scheming、chain of thought 與 activation 監控)、AI 進展多快衝擊多大(遞迴自我改進、METR 任務長度、就業與心理健康)。沒有習題,學法是讀論文、重現主圖、再往前推一步;HW0 讓你用 1B 模型親手重現失準。
Harvard CS 2881R Fall 2025 的期末專題分兩種:延伸既有論文,或做有 theory of change 的長期研究;交 5–10 頁 NeurIPS 風格論文加海報,評分是 writeup 65、code 15、poster 20。專題頁公開 19 份論文,約一半集中在 persona 向量與 chain of thought 監控。head TA 與 Harvard Q-report 都指向同一個問題:期末專題太晚開始、評分表太晚公布,回饋是全課評分最低的一項。
CS 2881R 的 HW0 是選課門檻:用 LoRA 把 Llama-3.2-1B-Instruct 微調在壞的醫療、財務或極限運動建議上,再看它回答無關問題時是否也變得有害。repo 給了加密的訓練資料、generate.py、以 gpt-4o-mini 當裁判的 judge.py,README 的目標是對齊分數低於 75、連貫度高於 50;train.py 是空的,要自己寫。自學時要知道:評分腳本只印平均分數,沒有自動判定過關,拿來比較的基礎模型基準是 20 題醫療題,而你的 CSV 是醫療題與非醫療題各 10 題。
CS 2881R 第一講(2025-09-04)用三篇 pre-reading 把問題攤開:AI 2027 描繪五年內靠遞迴自我改進走到超人 AI,AI as Normal Technology 主張 AI 會像電力一樣慢慢擴散,METR 則用「人類要花多久的任務,AI 能有五成機率完成」量到這個長度約每 7 個月翻倍。Boaz 的講課把 AGI 的定義拆成能力與衝擊兩種,把對齊方法分成原則、品格訓練、model spec 三類。課堂實驗把 HW0 反過來做:在生物倫理題上微調對齊答案,環境政策題的對齊分數也跟著上升。
Boaz Barak 把 pretraining、SFT、RL 看成同一件事:挑一些 token 加強、一些 token 壓低,差別只在資料是別人寫的(off-policy)還是模型自己生的(on-policy)。安全訓練就疊在後兩段上,從早期的「一律拒答」走到 Deliberative Alignment:先用 SFT 教模型在思考鏈裡讀 spec,再用懂 spec 的獎勵模型做 RL。這堂課另一個重點是:不要對思考鏈施加最佳化壓力,否則模型學會的不是不作弊,而是作弊時不說。
對齊過的模型之所以還會被 jailbreak,是因為安全訓練只修掉了某些 exploit,底下的 vulnerability 還在。Nicholas Carlini 用三個攻擊說明這件事:重複一個字讓 ChatGPT 吐出訓練資料、用梯度找出能跨模型轉移的對抗後綴、只靠 API 偷出最後一層權重。Boaz Barak 則從軟體安全搬來幾條老教訓:攻擊只會越來越強、安全要一開始就設計進去、要縱深防禦。他擔心 prompt injection 會成為 2020 年代的 buffer overflow。
Boaz Barak 的答案是兩者都要,再加上人格:抽象原則、良好人格、明確政策三者混用,他自己把最少的權重放在書房裡推出來的原則上。真正的關鍵是規則要能檢查:「證明定理或給反例」是壞規則,「證明、給反例或說明做不到」才是好規則,因為只有能判定違規的規則才能拿來訓練和評估。學生實驗也沒找到「原則」與「細則」兩種 system prompt 的一般性差異,效果因模型而異。
CS2881R 第 5 講請 OpenAI Product Policy 的 Ziad Reslan 談內容政策。課站沒有列出講課錄影與投影片,校外讀者能拿到的是三篇 pre-reading、學生寫的 LessWrong 週摘要,以及一支 17 分鐘的學生實驗影片。這些材料串起來的主線是:社群平台花了二十多年才學會「線畫在哪裡都會有邊界案例,但總得畫」,生成式 AI 又多了一層難題——聊天介面介於私人文件與公開貼文之間,圖片比文字更容易被讀成立場。
Harvard CS 2881R Fall 2025 第 6 講沒有客座,Boaz Barak 用成長理論的微分方程問一個問題:如果 AI 開始自己做 AI 研發,能力曲線會維持指數、加速成奇點,還是被瓶頸拖慢?答案取決於幾個誰都量不準的指數。他用 Baumol 成本病、美國人均 GDP 百年 2% 的謎、Jones 的點子成長模型說明瓶頸與加速各自的道理,再拆開 AI 2027 的倍率假設。他的結論是:唯一能排除的是「AI 對研發沒什麼影響」。
Harvard CS 2881R Fall 2025 第 7 講請 METR 的 Joel Becker 處理一個謎:基準測試上,AI 能以一半機率完成人類要花幾小時的任務,而且這個長度每七個月翻倍;但在 METR 自己的隨機對照試驗裡,資深開源開發者用 AI 反而慢了 19%,勞動市場的衝擊也只集中在年輕人。Becker 列出幾種和解方式,核心是基準測試的任務太乾淨、評分太便宜、基準線人員太缺脈絡。課站原本排的前沿安全框架(OpenAI Preparedness Framework、Anthropic RSP)這堂沒講到,本篇依閱讀清單補上它們怎麼把能力量測變成門檻。
CS2881R 第 8 講問:模型會不會為了通過訓練或評測而作弊、裝乖、甚至暗中追求別的目標?Boaz Barak 的 10 分鐘開場把各種壞行為歸成「系統性失準」:是我們的訓練訊號把模型推過去的。Apollo 的 Marius Hobbhahn 整理現有證據,結論是目前模型還沒有造成災難的 scheming 能力,但早期能力已經出現,而且越來越會察覺自己在被評測。Redwood 的 Buck Shlegeris 則主張先假設模型在密謀,用 AI control 守住內部部署。學生實驗把四個前沿 coding agent 丟進不可能完成的排序任務,發現它們在明文禁止下仍會改測試、猴子補丁計時器。
Harvard CS 2881R 第 9 講請來 OpenAI 首席經濟學家 Ronnie Chatterji 與 Stanford 的 Bharat Chandar。Chandar 用 ADP 薪資資料說明:22–25 歲、在 AI 高曝險職業的年輕人,在控制公司層級衝擊後,就業相對下降 16%,資深員工沒有同樣的趨勢;調整主要出現在人數,薪資還沒動。兩位講者也一再提醒,總體就業目前看不出大規模替代,「曝險」不等於「被取代」。這講沒有投影片,材料是錄影與閱讀清單。
Harvard CS 2881R Fall 2025 第 10 講請來 OpenAI、Anthropic、Google DeepMind 的四位研究者,從兩個方向偵測模型的不良行為:讀它寫出來的 chain of thought,或讀它的 activation。CoT 監控抓 reward hacking 比只看動作有效,但把監控器放進訓練獎勵,模型就學會把意圖藏起來。activation 這一側,persona vector 能追蹤人格漂移,Sonnet 4.5 的稽核則顯示關掉「我在被測試」的方向後,不良行為會變多。Neel Nanda 的結論最務實:簡單的 steering vector 常常贏過 SAE,先跟 baseline 比。
Harvard CS 2881R 第 11 講談聊天機器人與心理健康。Boaz Barak 提出一個他自己說「未經證實」的解釋:模型有預訓練的「模擬器」與強化學習的「最佳化器」兩種模式,對話越長、越偏離訓練分布,越容易退回模擬器,順著故事繼續討好。兩組學生實驗分別測到:一次討好會外溢到無關問題,而妄想情境下 GPT-4.1 的附和率隨對話變長而惡化。預讀同時列了正面證據(NEJM AI 隨機試驗、NHS 觀察研究)與反面證據(stigma 研究、Parasitic AI)。本文只轉述研究與課堂討論,不提供臨床建議。
Harvard CS 2881R 最後一講由 Boaz Barak 和兩位 OpenAI 客座 Tejal Patwardhan、Kevin Liu 談未來十年。Boaz 的心智模型是:AI 等於每年向經濟注入指數成長、也越來越通用的虛擬勞動力,他最擔心的是變化太快而控制不足,以及權力集中與監控。Patwardhan 介紹 GDPval:用產業專家的真實工作成品當標準答案,由另一批專家盲評。Liu 說明為什麼 coding agent 還沒自動化 AI 研究:驗證太貴、回饋迴圈太長。課站這講的 Resources 寫「to be determined」,本文內容全部來自錄影。
CS2881R 的期中作業不是考試,是 2–4 人一組,從四篇 AI 安全論文裡挑一篇,重做它最核心的那張圖或表,再做一到兩個延伸,交 3–5 頁報告與 GitHub。規格投影片與評分表都公開,校外讀者可以完整照做。評分表把最多分數給「重現」與「延伸」,另外專門留一分給「你對結果有多脆弱的反思」——這一分正是這份作業想訓練的研究習慣。
6.5940 的前兩講先證明問題存在,再給量尺。L1 用一張圖說明模型參數量的成長遠快於 GPU 記憶體,並指出雲端 GPU 有 80GB 記憶體、微控制器只有 320kB。L2 把效率指標分成記憶體與運算兩類:#Parameters、model size、peak activations,以及 MAC、FLOP、OP。以 AlexNet 為例,它有 61M 參數、724M MACs;在微控制器上真正先爆掉的常常是 activation,不是參數。Lab 0 用 CIFAR-10 上的 VGG 變體(9.2M 參數、606M MACs)當之後幾個 lab 的起點。
MIT 6.5940 教怎麼讓模型變小、變快、塞進筆電與微控制器,分四章:高效推論(pruning、quantization、NAS、distillation、MCUNet 與 TinyEngine)、特定領域最佳化(LLM 部署與後訓練、長上下文、ViT、diffusion)、高效訓練(分散式與裝置端訓練),以及量子 ML。同時講演算法與系統,最後要把 Llama2-7B 跑在自己的筆電上。本系列以 Fall 2024 為主幹,23 講的錄影與 Lab 0–5 都公開,投影片只缺第 22 講的量子 ML 部分。
MIT 6.5940 Fall 2024 的最後兩講分成兩塊。L22 開頭是 13 頁的 Course-Summary.pdf(錄影裡只佔開頭一小段):用推論、訓練、特定應用三塊加上 System/Algorithm 兩軸重畫整門課,再交代期末專題的 7 項評分。L22 其餘大部分是 Quantum ML Part I,只有錄影、沒有投影片。L23(Hanrui Wang 主講,99 頁)講參數化量子電路(PQC):資料編碼、parameter-shift 梯度、雜訊下的機率式梯度剪枝(QOC)、TorchQuantum 函式庫,以及用 SuperCircuit 搜尋加閘剪枝的 QuantumNAS。讀起來像把前面學的 supernet 和 magnitude pruning 在量子電路上重演一次。Fall 2026 已把這兩講換成 Guest Lecture。
Diffusion 慢,是因為同一個大網路要從純雜訊一路跑幾十到上千步。L18 先把 DDPM、條件生成、latent diffusion、SDEdit、DreamBooth 講完,再分三條路加速:少跑幾步(DDIM 跳步、progressive distillation 每輪把步數減半)、每步少算(DC-AE 把圖壓 64 倍、只重算被編輯的 1.7% 區域省 8.2 倍 MACs、SVDQuant 把 FLUX 壓到 4-bit)、多卡分攤(DistriFusion 8 張 A100 最多快 6.1 倍)。
GPT-3 的 fp16 權重就要 350GB,一張 80GB 的 A100 放不下,更別說梯度和 Adam 狀態。L19 講怎麼切:資料平行、ring all-reduce、ZeRO-1/2/3(每張卡能訓練的模型從 5B 推到 320B)、GPipe 把 pipeline 利用率從 25% 提到 57%、Megatron 式 tensor parallelism、Ulysses 與 Ring Attention 的 sequence parallelism。L20 講切完之後的通訊瓶頸:Alpa 自動搜平行策略、DGC 把梯度壓 277–608 倍還不掉精度、TernGrad 把梯度量化成三值,以及用延遲更新蓋掉網路延遲的 DGA。
第 16 講談 ViT:高解析度下 attention 成本隨解析度平方成長,window attention(Swin)把計算限制在局部視窗,EfficientViT 用 ReLU linear attention 把複雜度降到線性再補回局部與多尺度能力,SparseViT 剪掉不重要的視窗;自監督(對比學習、CLIP、MAE)解決 ViT 需要大量標註的問題;最後 HART 用離散 token 加殘差 diffusion,比 diffusion 模型高出數倍吞吐量。第 17 講針對三種冗餘:GAN 的 2D 空間冗餘(GAN Compression、AnyCost GAN、DiffAugment)、影片的時間冗餘(TSM 零 FLOPs 的時間建模)、點雲的 3D 稀疏(PVCNN、SPVCNN、BEVFusion)。Fall 2026 排程已拿掉第 17 講。
這篇是 Fall 2026 的材料,不屬於本系列主幹的 Fall 2024。Fall 2026 把 Lab 1 從剪枝換成「Efficient AI Fundamentals」(lab1_gpu_basics.zip):Part 1 手刻三層迴圈的 GEMM、算 MAC/FLOPs/I/O;Part 2 畫 GEMM 與 GEMV 的 roofline;Part 3 拿 gemma-3-270m-it 的 decoder layer 算 attention 與 MLP,比較 prefill 與 decode;Part 4 用 PyTorch Profiler 看 kernel、自己寫 GeLU 體會 kernel fusion、再試 torch.compile 與 CUDA Graph;Part 5 比較 SDPA 與 FlashAttention。主題 80 分,另有 20 分 bonus,Part 5 因為 Colab T4 跑不動整段改成 bonus。
MIT 6.5940 Fall 2024 第 9 講分五段:知識蒸餾(KD)的定義與 temperature、六種可以對齊的東西(logits、權重、特徵、梯度、稀疏模式、關係)、不需要固定大老師的 self/online 蒸餾、偵測/分割/GAN/NLP/LLM 上的 KD,以及專為小模型設計的 Network Augmentation。溫度從 T=1 調到 T=10,老師對「貓 vs 狗」的輸出從 0.982/0.017 變成 0.599/0.401,這一步就是 KD 能傳遞「暗知識」的起點。
MIT 6.5940 Fall 2024 的 Lab 1 是一本 Colab notebook,9 題共 100 分:前 5 題在 CIFAR-10 的 VGG 上做 magnitude-based 細粒度剪枝與 sensitivity scan,要求剪到原大小 25% 且 fine-tune 後準確率高於 92.5%;第 6–8 題做 channel pruning、用 Frobenius norm 排序 channel、量測實際加速;第 9 題比較兩者。Fall 2026 沒有 pruning lab。
Lab 2 是一份 Colab notebook,10 題共 100 分,對象是 CIFAR-10 上預訓練好的 VGG。前 3 題做 K-means 量化:寫量化函數、推算 n bit 有幾個 cluster、寫 centroid 更新,再看 8/4/2 bit 微調前後的準確率。後 7 題做線性量化:寫 q = round(r/S) + Z、推 scale 與 zero point 公式、做 per-channel 權重量化與 bias 量化、寫整數版的全連接層與卷積層,最後把整個模型轉成 INT8 跑推論。本文整理題目、配分、環境需求與校外限制,不附解答。
MIT 6.5940 Fall 2024 Lab 3 給你一個 OFA 方式訓練好的 MCUNetV2 super network(超過 10^19 個子網路)與 Visual Wake Words 資料集,10 題共 100 分加 10 分 bonus:先實作 MACs/peak memory 的 efficiency predictor 與三層 MLP accuracy predictor,再寫 random search 與 evolutionary search,最後在 250KB、60M MACs 的限制下找出準確度 92.5% 以上的子網路。本篇拆題目結構與每題在練什麼,不貼解答。
Lab 4 是 Colab notebook,用 OPT-1.3B 一步步重做 AWQ:先看 3-bit 量化後 perplexity 變多差,再保留 1% 重要 channel(Q1),最後改用縮放保護它們並搜尋最佳縮放(Q2),兩題各 50 分,另有依 perplexity 計分的 bonus。Lab 5 換到 C++:用 TinyChatEngine 在自己的電腦上跑 4-bit 的 LLaMA2-7B-chat,替 W4A8 線性層 kernel 依序寫 loop unrolling、multithreading、SIMD、multithreading+unrolling、全部組合五個版本,每個 20 分,另有最多 20 分的效能 bonus。本文整理兩份作業的題目、配分、環境與校外限制,不附解答。
第 13 講把 LLM 推論變快的方法分成三條路。量化:SmoothQuant 把 activation 的離群值難度搬到權重做 W8A8,AWQ 依 activation 找出約 1% 的重要權重、用縮放保護它們做 W4A16,QServe 再合成 W4A8KV4。稀疏:Wanda 用 |W|·‖X‖ 剪權重,DejaVu 與 MoE 每個 token 只用一部分參數,SpAtten 與 H2O 丟掉不重要的 token。Serving:TTFT/TPOT 指標、PagedAttention、FlashAttention、speculative decoding 與 continuous batching。投影片上 OPT-6.7B 做 INT3 時,RTN 的 perplexity 是 43.16,把重要 channel 放大 2 倍就降到 14.07。
第 14 講分三段。第一段是微調:SFT 用想要的回答做 next-token prediction,RLHF 先訓 reward model 再用帶 KL 懲罰的 RL 微調,DPO 把兩階段壓成一次監督式訓練;接著一路比較 PEFT:BitFit 只調 bias、Adapter 插小層但推論變慢、Prompt/Prefix-Tuning 佔用輸入長度,LoRA 用可併回權重的低秩分支解決推論延遲,QLoRA 再把主幹量化成 NF4,BitDelta 把微調差值壓到 1 bit。第二段是多模態 LLM:Flamingo 用 cross-attention、PaLM-E 與 VILA 把影像當 token、VILA-U 讓模型也能輸出影像。第三段是 prompt engineering:zero/few-shot、CoT 與 RAG。
第 15 講分四段。延長上下文:RoPE 內插可以把 LLaMA 從 2k 拉到 32k,LongLoRA 用 shifted sparse attention 讓長上下文微調變便宜。評估:lost-in-the-middle、Needle-in-a-Haystack 與 LongBench。高效 attention:KV cache 隨長度線性長大,StreamingLLM 發現開頭幾個 token 是 attention sink,保留它們加上最近視窗就能穩定生成;DuoAttention 只讓少數 retrieval head 保留完整 KV cache;Quest 保留全部 KV、依 query 只讀最關鍵的幾頁。最後一段跳出 Transformer:Mamba 用選擇性 SSM 取代 attention,Jamba 把兩者混在一起。
MCU 的 SRAM 約 256–320kB、Flash 約 1MB,比手機小上萬倍,連 int8 的 MobileNetV2 峰值記憶體都超出 5 倍。L10 的答案是 MCUNet:TinyNAS 先挑搜尋空間再搜子網路,MCUNetV2 用 patch-based inference 把 MobileNetV2 的峰值 SRAM 從 1372kB 壓到 172kB,最後看視覺、語音、異常偵測三類 tinyML 應用。
MIT 6.5940 Fall 2024 第 8 講處理 NAS 最貴的一步:評估候選架構。從頭訓練 12,800 個架構要 22,400 GPU-hours,所以課程依序介紹繼承權重、hypernetwork、ProxylessNAS 的單路徑訓練、延遲查表與預測器、Once-for-All 的一次訓練 10^19 個子網路,再到完全不訓練的 zero-shot NAS 與神經網路/加速器共同搜尋 NAAS。本篇照 105 頁投影片走一遍,標出每個主張的頁碼。
第 7 講分三段。先用 MAC 公式複習全連接、卷積、分組卷積、depthwise 與 1×1 卷積;再拆 ResNet bottleneck、ResNeXt、MobileNet、MobileNetV2、ShuffleNet 與 Transformer 各靠什麼省運算,例如 bottleneck 比直接做 2048 通道的 3×3 卷積少 8.5 倍 MAC。最後進入 NAS:搜尋空間分 cell-level 與 network-level(深度、解析度、寬度、kernel size、拓撲),搜尋策略有 grid、random、強化學習、梯度下降、演化五種。投影片的一道算術題顯示,NASNet 的 cell 空間在 M=5、N=2、B=5 時就有 3.2×10¹¹ 個候選。
在裝置上訓練有兩個理由:模型要跟著使用者的新資料調整,資料又不該離開裝置。L21 先證明「只分享梯度」也不安全:Deep Leakage from Gradients 能從梯度還原出原圖和原句。接著處理記憶體:訓練比推論貴,是因為要存 activation,不是參數。TinyTL 只調 bias 再加輕量殘差,省 6.5 倍記憶體;SparseBP 只更新重要的層與通道;QAS 讓真正的 int8 訓練追上 fp32;PockEngine 在編譯期做完 autodiff,最後在 256KB 的 MCU 上把訓練記憶體壓到 141KB。
Pruning 是把神經網路裡不重要的權重或神經元拿掉,目標寫成「在非零權重數不超過 N 的限制下讓 loss 最小」。6.5940 第 3 講先處理其中兩個決定。第一是粒度:從任意位置都能剪的 fine-grained,到整個通道一起剪的 channel pruning,越規則越容易在現有硬體上變快,但能剪掉的比例越小;介於中間的 2:4 sparsity 在 NVIDIA Ampere GPU 上最多快 2 倍。第二是準則:看權重大小、看 Batch Norm 縮放係數、看二階導數、看 activation 有多少是零,或看剪完後輸出重建得多好。
MIT 6.5940 第 4 講把剪枝的後半段講完:用敏感度分析、AMC(強化學習)或 NetAdapt(逐步查表)決定每層剪多少;用 1/10 到 1/100 的學習率 fine-tune、迭代剪枝把 AlexNet 的剪枝倍數從 5 倍推到 9 倍;最後看 EIE、NVIDIA 2:4 稀疏與 TorchSparse/PointAcc,說明稀疏要有系統支援才會變快。
MIT 6.5940 第 5 講從「8-bit 整數加法比 32-bit 浮點加法省 30 倍能量」出發,先複習 INT、定點數、FP32/FP16/BF16、FP8 與 FP4 的位元配置,再講兩種量化:K-means 量化只省儲存、計算仍是浮點;線性量化用 r = S(q − Z) 把矩陣乘法、全連接層與卷積都改成整數運算。
第 6 講處理「量化後精度掉了怎麼辦」。先不重訓:換更細的 scale 粒度(per-channel、group、MX)、裁掉離群值(EMA、校準批次、MSE、KL)、改捨入方式(AdaRound)。不夠再重訓:QAT 保留一份全精度權重,前向做假量化,反向靠 STE 把梯度直接穿過去。投影片引用的白皮書數字裡,MobileNetV1 做 per-tensor INT8 PTQ 準確率掉到 0.1%,改成 per-channel QAT 回到 70.7%,浮點原本是 70.9%。最後兩段談 1–2 bit 的二值/三值網路,以及用強化學習自動分配每層位元數的 HAQ。
演算法把模型縮小之後,系統層還能再榨多少?L11 用同一個矩陣乘法示範:loop reordering 快 12 倍、tiling 快 19 倍(Intel Xeon 4114),CUDA 版在 2080Ti 上端到端快 94 倍。後半講 TinyEngine 用的推論技巧:im2col、in-place depthwise 把峰值記憶體從 2×C×H×W 降到 (1+C)×H×W、pointwise 用 NHWC、depthwise 用 NCHW,以及少 2.25 倍乘法的 Winograd。
6.5940 在第 12 講從 CNN 轉到 Transformer,但重點不在原理,而在哪裡會吃掉記憶體與算力:attention 是 O(N²);Llama-2-70B 若用 MHA,batch 16、長度 4096 的 KV cache 要 160GB;GQA 把它縮 8 倍、MQA 縮 64 倍;MoE 讓總參數變多但每個 token 的計算不變。這篇是進入 L13 LLM 部署前的橋接。
MIT 6.S184 是 IAP(1 月獨立活動期)的短課:5 講(第 3 講拆成 3-A、3-B 兩支錄影)、3 個 lab,加上一份 84 頁、官方稱為「課程骨幹」的講義。講義、slides、6 支錄影、lab notebook 與官方解答全部公開,是 A3 足以自學。缺的只有兩塊:lab 繳交走 Canvas 裡的 Gradescope,只有 MIT 修課生能用;第 5 講離散擴散沒有對應 lab。
MIT 6.S184 Lab 1 分三部分:先寫 Euler 和 Euler–Maruyama 的 step 函式,再用它們模擬 Brownian motion 與 Ornstein–Uhlenbeck 過程,觀察 σ 和 θ 怎麼決定軌跡與終點分佈,最後實作 Langevin dynamics,看一團點怎麼被推向一個五峰高斯混合,並用一段手算證明 OU 過程就是目標為高斯的 Langevin dynamics。題目、程式框架與官方解答都在 GitHub;校外讀者沒有 Gradescope 評分,只能自己對解答。
Lab 2 把講義 §3–4 寫成 PyTorch:先實作高斯條件路徑、條件向量場、條件分數,再用兩個幾乎一樣的 trainer 分別做 flow matching 和 score matching,接著用 Proposition 1 從學到的向量場換算出分數,最後換成線性路徑,讓一個圓環分佈流成棋盤格。全部在 2D 玩具資料上跑。README 記載 1/11/26 修過一個 diffusion coefficient 的 bug;2026-09-30 查看時,這個修正只出現在解答 notebook,學生版還沒改,做之前要自己補上。
Lab 3 在 MNIST 上從零組出一個有條件的 latent diffusion model,分四段:先用 label dropout 寫 CFG 訓練(在三群高斯混合上驗證),再一塊一塊寫 diffusion transformer(Fourier 時間嵌入、patchify、多頭注意力、adaLN-Zero、depatchify),接著寫一個 VAE,最後把 DiT 搬進 VAE 的 latent 空間訓練。題目與官方解答都公開;繳交走 Canvas 裡的 Gradescope,只有 MIT 修課生能用。
MIT 6.S184 第 1 講先把「生成一張狗的圖」改寫成「從資料分佈取樣」,再給出取樣的機器:從高斯雜訊出發,沿著神經網路給的向量場模擬一條 ODE(flow model),或在每一步再加一點 Brownian motion 的雜訊,變成 SDE(diffusion model)。實際模擬各用一個最簡單的數值方法:Euler 和 Euler–Maruyama。怎麼訓練那個向量場,留到第 2 講。
我們想學的是「邊際向量場」:沿著它跑 ODE,雜訊會流成資料。問題是它要對整個資料集積分,算不出來。Flow matching 的解法是改成回歸「條件向量場」,也就是只把雜訊推向單一資料點的那個場,這個有公式。講義 Theorem 12 證明兩個 loss 只差一個常數、梯度相同。落到 CondOT 路徑上,訓練只剩一行:取資料 z、雜訊 ε、時間 t,讓網路在 tz+(1−t)ε 這個點預測 z−ε。
分數函數是 log 密度的梯度,指向機率上升最快的方向。在高斯路徑上,它和上一講的向量場都是 x 與 z 的線性函數,所以可以互相換算(講義 Proposition 1):學會一個,就等於學會另一個。有了分數,就能在 ODE 上加任意強度的雜訊變成 SDE,而且每個時刻的分佈不變(Theorem 17)。分數本身也能用跟 flow matching 同一招學:回歸條件分數。這在高斯路徑上等於讓網路預測當初加進去的雜訊,也就是 DDPM 的訓練目標。
把 prompt 當成神經網路的額外輸入,理論上就能從 p_data(x|y) 取樣,但實際生成的圖不夠貼 prompt。第 3B 講用 Bayes 定理把有條件向量場拆成「無條件向量場+一個分類器梯度」,把分類器那項放大 w 倍就是 classifier guidance;再把分類器換成「有條件減無條件」的差,就得到不用訓練分類器的 CFG:ũ = (1−w)·u(x|∅) + w·u(x|y)。訓練只要以機率 η 把標籤換成空標籤 ∅。代價是每一步要呼叫網路兩次,而且 w>1 之後就不再是從資料分佈取樣。
前幾講的演算法已經完整,第 4 講處理規模化時的兩個工程問題。第一,網路要吃圖片、時間 t 和 prompt 三種輸入,吐出一樣大的向量場,所以用 U-Net 或 diffusion transformer(DiT),時間用 Fourier 特徵嵌入、文字用凍結的 CLIP/T5 嵌入。第二,像素空間太大,所以先訓練一個 VAE 把圖壓進 latent space,在那裡做 flow matching,最後再解碼。Stable Diffusion 3 與 Meta Movie Gen Video 都是這套配方:latent 空間裡的 flow matching+DiT 變體+CFG。
文字是一串離散 token,沒有方向可以走,ODE 和 SDE 都不存在。第 5 講把前四講的配方原封不動搬過來,只換掉底層的隨機過程:向量場換成 rate matrix,ODE 換成連續時間馬可夫鏈(CTMC),continuity equation 換成 Kolmogorov forward equation。用 factorized mixture path 當機率路徑時,要學的邊際 rate matrix 只剩一個未知數:給定加噪句子,每個位置原本是哪個 token 的機率。於是訓練離散擴散模型變成對每個位置做分類,loss 就是 cross-entropy;把雜訊設成全部 [mask],就得到 masked diffusion language model。
第一講前半說明課程規則與閃電秀,中段回答「為什麼要學原理」:蔡炎龍把學 AI 的焦慮拆成三種,主張懂原理才知道模型的限制、不必追著每個新工具跑。後半是 Colab 入門,從魔術指令、四行標準套件、plt.plot 到 Markdown 與 ipywidgets 互動。第一份作業是在 Colab 畫一個函數圖形;長庚衛星班的評分標準裡,照改範例只拿 6 分,沒教過的函數加上漂亮的 Markdown 註解才拿 10 分。
第二講把上一講的「呆萌型 AI 機器人」拆開:輸入輸出都要變成數字(張量),分類問題用 one-hot 與 softmax 把分數變成機率,神經網路由神經元一層層接起來,訓練就是用梯度下降把 loss 壓小。最後用 Keras 在 MNIST 上打造第一個全連結神經網路,再接上 Gradio 畫板。第二週作業要你自己設計 DNN,唯一的硬規定是不能是三層;長庚衛星班要求截圖驗證正確率最高的那組參數,也鼓勵保留失敗的嘗試。
同一句「一個可愛的女孩」有無數種正確答案,硬把它當函數訓練,只會學到所有答案的平均。GAN 的解法是改訓練兩個網路:生成器 G 從隨機 latent 向量造圖,鑑別器 D 判真假,兩邊互相對抗。L03 從 2014 年的原始論文一路講到 WGAN、Progressive GAN、StyleGAN 的 512 維 latent 與 AdaIN,再到 Pix2Pix、CycleGAN;後半的附錄把 cross entropy 與 KL divergence 講成「驚訝指數」。第三週作業二選一:實際跑一個 GAN,或用自己的話解釋 CE 與 KL。
L04 把大型語言模型拆成一句話:看前面的字,替字庫裡每個字打分數,softmax 變成機率,再依機率抽出下一個字。為了讓「前面的字」變成記憶,課程先講 RNN,再第一次帶出 Transformer 的 Q/K/V;接著用 GPT-2 的 15 億、GPT-3 的 1,750 億參數說明規模,用 temperature 與 top-p 說明為什麼每次回答都不一樣。後半教怎麼在自己電腦跑開源模型、要多少 VRAM。第四週作業:自己設計一組你懂的主題的測試 prompts,至少比較兩種 LLM。
L05 用兩條線性代數規則讀完 Transformer:矩陣乘法是「列乘行」的內積,而向量乘矩陣等於對矩陣的列向量做線性組合。有了這兩條,attention 就是「query 跟每個 key 做內積、softmax 成權重、對 value 加權平均」,整批寫成 softmax(QKᵀ/√d_k)V;除以 √d_k 只是把數字拉回 0 附近,避免 softmax 贏者通吃。接著講 multi-head、encoder 與 decoder 的差別、mask、用 sin/cos 時鐘做的位置編碼,最後是 ResNet 式殘差與 layer normalization。本週沒有作業。
L06 前半談倫理:蔡炎龍引用 Karpathy「幻覺是 LLM 的特點」,再逐一談抄襲、資料會不會被拿去訓練、DeepSeek 的審查與語料偏向,最後收在七項「負責任的使用」。後半轉向應用:只要給對「資訊」和「指引」,一段 system 設定就能做出員瑛式思考生成器、小編 AI、選系諮商師。第六週作業就是把這套 prompt 搬進 OpenAI 相容 API 加 Gradio,做一個有人設的對話機器人。
對話機器人會「記得」你,不是因為模型有記憶,而是程式每一輪都把整份 messages(system、user、assistant 交替)重新送一次。L07 先教申請 OpenAI 與 Groq 金鑰,再把這個結構講清楚,接著用 Ollama 在本機或 Colab 跑 Gemma 3,同一套 openai 套件只改 base_url 就能呼叫。第七週作業二選一:做一個能持續對話的版本,或讓兩個模型互相對話,都要用 Gradio 展示。
L06 說 prompt 只有兩件事:正確的資訊和清楚的指引。RAG 就是讓電腦自動去找「資訊」那一段:先把自己的文件切成文字塊,用同一個模型 fθ 把文字塊和問題都變成特徵向量,找出最接近的幾塊,再套進「請根據 {retrieved_chunks} 回答 {question}」的樣板。實作拆成兩支程式:Demo06a 用 LangChain 與 FAISS 建向量資料庫並壓成 faiss_db.zip,Demo06b 讀回資料庫、接 LLM、包成 Gradio。第八週作業就是換上你自己的資料。
L09 把 AI Agent 講成一句話:本來你要做的事,AI 自動幫你做完。蔡炎龍沿用吳恩達的四個設計模式(Reflection、Tool Use、Planning、Multiagent Collaboration),但只實作前後兩個最好上手的:Demo07a 讓「作者」與「評論員」兩個 LLM 呼叫接力改文章,Demo07c 把員瑛式思考拆成「先想五個理由、再寫貼文」的兩階段 CoT,都用 AISuite 串 Groq 並用 Gradio 展示。LangChain、AutoGen、CrewAI 只出現在進階學習清單。第九週作業就是兩種模式二選一。
L10 從「怎麼找到好的特徵向量」出發:Word2Vec 用代理任務學出 embedding,Autoencoder 用「輸入等於輸出」逼出壓縮後的 latent vector,VAE 再要求 latent 符合常態分布,讓鄰近的點生出相似的圖。接著蔡炎龍把 diffusion model 講成「encoder 用算的、只訓練 decoder 的 autoencoder」,最後收在 Latent Diffusion:先用 VAE 把 512×512 的圖壓成 64×64,diffusion 只在這個小空間裡做。第十週作業不寫程式,用 Bing 生出風格一致的多組圖。
L11 把 Stable Diffusion 架構圖上剩下的三塊補齊。CLIP 用「文字和圖越像越好」的對比訓練,讓 prompt 變成 77×768 的 embedding;排程器把 1000 步的加噪壓成二、三十步的去噪,但 Euler a 這類 ancestral 演算法不會收斂,步數加到 100,人物的衣服和座位都會換掉;LoRA 凍結原本的 W,只學拆成 A·B 的 ΔW。實作用 diffusers 載入 SD 1.5 系模型,第十一週作業是自己做一個生圖 Web App。
L11 的 Stable Diffusion 只聽 prompt,構圖、姿勢全看運氣。L12 補上「方向盤」:ControlNet 把 SD 的區塊拷貝一份,用 zero convolution 接回去,讓邊緣圖、姿勢、深度圖這類額外條件也能控制生成,最常見的例子是 Canny 邊緣。後半講 Fooocus:一個目標是「像 Midjourney 一樣簡單」的 SD 介面,重點在 Preset、Style,以及 Input Image 的五個功能,其中 Image Prompt 就是包裝好的 ControlNet。第十二週作業:設想一個應用情境,用 Fooocus 至少生 3 組圖,並寫出創作流程。
前 12 講的模型都靠人準備好的訓練資料。L13 換一個問題:沒有標準答案,只知道做得好不好的時候,電腦要怎麼學?老師從 AlphaGo 和打磚塊講起,分成兩條路:value based 學一個 Q 函數替每個動作打分數(Deep Q-Learning、TD、Experience Replay、ε-greedy),policy based 直接學動作(Policy Gradient、Actor-Critic)。後半回到 LLM:ChatGPT 怎麼用人類排名訓練 reward model,再用 PPO 做 RLHF;DeepSeek 則讓電腦自動判斷數學題對錯當獎勵。第十三週作業是期末專案提案。
最後一講看的是兩條技術線開始互相越界:ChatGPT 這類 LLM 開始畫圖,投影片用 early fusion 和 VQ-VAE/VQGAN 解釋「把圖像切成 token」怎麼做;反過來,Inception Labs 的 Mercury 用 diffusion 生成文字,把一句話加噪成一排 [MASK] 再還原。接著是幾篇人人都用得上的研究:怎麼自動評 RAG、推理模型更容易被劫持、DeepMind 的四種 AI 風險。最後是 Vibe Coding 與一串應用工具,以及用 Gather Town 線上研討會進行的期末專案。
《生成式 AI:文字與圖像生成的原理與實務》是政大應數系蔡炎龍主講、以 TAICA 衛星課程開放給聯盟學校的入門課。網路上最完整的那頁課程網站其實是長庚衛星班(協同教師楊智淵)的頁面。本系列以 Spring 2025(1132)為準:14 支錄影、14 份投影片、12 份作業說明與評分標準都公開,Demo notebook 也在 GitHub 上,存取分級 A3;缺口是 notebook 會持續改版、繳交與批改走各校平台、期末專案成果沒有公開。
清大高宏宇 NLP(Fall 2025)BERT and its Family 單元導讀。起點是「I record the record」:Word2Vec 和 GloVe 給兩個 record 同一個向量。ELMo 用雙向 LSTM 語言模型解決這件事。換成 Transformer 之後,預訓練分成三條路:encoder(BERT:MLM+NSP,擅長理解、不擅長生成)、encoder-decoder(T5 的 span corruption、BART 的五種雜訊)、decoder(GPT:純粹預測下一個字)。最後一段是 GPT-3 的 in-context learning 和 scaling laws,也說明 decoder 為什麼成了現在最主流的骨幹。
清大高宏宇 NLP(Fall 2025)解碼與評估單元導讀。前半講模型每一步吐出機率分布之後怎麼選字:greedy 一步錯就回不去,beam search 同時保留幾條候選但偏好短句,top-k/top-p 用抽樣換多樣性(投影片沒寫,教授在課堂口頭補)。後半講怎麼替生成的文字打分:BLEU 的 modified precision 與 brevity penalty、ROUGE-N 與 ROUGE-L、perplexity,以及 GLUE、SQuAD 2.0、MTEB、MMLU 這些 benchmark 各自在量什麼。
清大高宏宇 NLP(Fall 2025)GPT-2/T5 助教課導讀。同一個任務(LCSTS 中文摘要)用兩種架構各做一次:decoder-only 的 GPT-2 用原生 PyTorch,要自己把文章和摘要接成一條序列、改用 left padding、把 padding 的標籤設成 −100;encoder-decoder 的 mT5 用 Seq2SeqTrainer,不需要 left padding,DataCollatorForSeq2Seq 會自動處理 −100。兩邊都用 jieba 斷詞後算詞級 ROUGE。
高宏宇 Fall 2025 的 W8 投影片從 GPT-1 一路講到 GPT-3,順帶解釋 GPT-3 用的 Sparse Transformer 怎麼省掉注意力的計算,再用 InstructGPT 說明「會接話」和「聽得懂指令」之間差了什麼:最大概似目標分不出編造事實和挑錯同義詞哪個嚴重,所以要多三步——SFT 學人類怎麼寫、reward model 學人類怎麼評分、PPO 依評分調整並用 KL penalty 綁住不要跑太遠。最後以 Llama-2 收尾:分開訓練 safety 和 helpfulness 兩個 reward model、context distillation,以及推論加速用的 GQA。
清大高宏宇 NLP(Fall 2025)Hugging Face BERT 助教課與 HW3 導讀。助教課用 IMDb 影評二元分類走一遍 AutoTokenizer、input_ids/token_type_ids/attention_mask、AutoModelForSequenceClassification 與 Trainer。HW3 把工具拿去做 SemEval 2014 Task 1:同一個 bert-base-uncased 接兩個頭,一個回歸 1–5 分的 relatedness,一個做三類 entailment 分類,兩個 loss 加總後自己寫訓練迴圈,不准用 Trainer。
HW1 拿 Google Analogy 的 19,544 題(8,869 題語意、10,675 題語法)考詞向量:先用 Gensim 載入預訓練的 glove-wiki-gigaword-100 作答,再從助教清理好的 Wikipedia 抽 20% 文章自己訓練 Word2Vec,兩邊都畫 family 子類的 t-SNE。七個 TODO 共 55%,報告 45%;Fall 2026 的 TODO 和 2025 相同,只是改成繳交含執行結果的 .ipynb。
清大高宏宇 NLP 課第一週的 W1_NLP_brief 共 91 頁:先用「Watch for kids」、望遠鏡句的五種讀法、大舅到十一舅的繞口令說明語言為什麼難,再從資訊檢索的角度,把倒排索引、tokenization、stemming、TF-IDF、BM25 講成一條管線。後半段處理這條管線的死穴(同義詞、一詞多義、詞彙對不上),走到 LSA 的 SVD 降維,最後用 Skip-gram、GloVe、FastText 預告稠密詞向量。
清大高宏宇《自然語言處理》用一學期走完一條線:先把文字變成數字(TF-IDF、詞向量)、再處理序列(RNN、attention、Transformer、sub-word)、接著是預訓練模型(BERT、T5、GPT 與解碼評估)、讓模型聽指令與省參數微調(RLHF、PEFT),最後外接知識(RAG)與推理。Fall 2025 的投影片、32 支錄影、4 份作業與 starter notebook 都在 GitHub 公開,中文授課;作業沒有公開解答。
這堂 34 頁的助教課回答一個很實際的問題:拿 ChatGPT 網頁版一筆一筆貼資料太慢,還會碰到每小時次數上限,所以做研究和作業要改用 API。notebook 用同一個 SemEval 2014 蘊含判斷例子,依序示範 Gemini、Claude、OpenAI 三家:把 prompt 放進 prompts.yaml、要求 JSON 輸出、few-shot、計算 token。要注意教材是 2024 年版:投影片封面寫 2024/11/21,notebook 用的是 gemini-1.5-pro、gpt-4o、claude-3-5-sonnet-20241022,其中 Claude 那個型號在 2025-10-28 已經退役,Gemini 的舊 SDK 也在 2025-11-30 結束支援。
高宏宇 Fall 2025 的 PEFT 投影片先算一筆帳:Llama 2-7B 用 16-bit 全參數微調約要 56GB 顯示卡記憶體,只訓練 0.2M 個參數就降到約 17GB,因為梯度和優化器狀態幾乎歸零。接著用 intrinsic dimensionality 解釋為什麼只調一小撮參數就夠:預訓練越久、模型越大,微調需要的有效維度越低。方法分成加參數(Adapters、Prompt Tuning)、挑參數(BitFit)、重參數化(LoRA)與混合(MAM Adapters、S4)四類;後半段從 GPT-2 的任務描述、verbalizer 一路講到 prefix tuning 和 soft prompt tuning 的取捨。
HW2 把「14*(43+20)=882」這種算式當成字元序列,要你用兩層 LSTM 看到「=」之後逐字生成答案。訓練集 2,369,250 筆、驗證集 263,250 筆,數字都在 0–49 之間;六個 TODO 從建字典、只在「=」之後算 loss 的 batching、生成函式,一路到 teacher forcing 訓練與 exact match 評估。W4 的 PyTorch 助教課就是這份作業的工具箱。
兩堂 RAG 助教課各做一個版本:第一堂在 Colab 裝 Ollama 跑 llama3.2:1b,用 LangChain 的 Chroma、MMR 和 retrieval chain 串出最小的 RAG;第二堂只在資料準備用 LangChain,其餘自己寫:切塊、存文字與向量資料庫、BM25 加 cosine 的混合檢索、用 RRF 合併排名,再拿 Llama-3.2-1B-Instruct 生成答案。HW4 把第一堂的骨架套到 150 則貓咪冷知識和 150 組 GPT-5 生成的問答上,生成器限定 Llama3.2-1b、embedding 限定 jina-embeddings-v2-base-en,要回報 recall@1、recall@5 與 exact match。程式占 45%,報告占 55%,報告要分析 prompt、資料格式、文件順序與反事實資訊的影響。
W11_RAG.pdf 的後半從「From Retrievers to QA」那一頁開始,把檢索器和讀者(reader)接成完整的問答系統。先看 2019–2020 年用 BERT 當讀者的 ORQA 與 REALM,再看第一篇叫 RAG 的論文和凍結 LLM 的 REPLUG;接著用一張表整理七個近年修法:改寫查詢(Query Rewriting、HyDE)、讓生成器不怕雜訊(RetRobust、RAFT、RAAT)、決定何時檢索(FLARE、Self-RAG)。最後談雜訊的類型、LLM 在 RAG 裡該有的四種能力,以及生成式檢索(GR)與可靠回應生成(RRG)。錄影方面,W11 週四那支講到 RAG 論文為止,後面的頁數本文找不到對應的錄影片段。
LLM 會一本正經地回答「歐本海默生於 1967 年」(那其實是他過世的年份),RAG 的做法是先檢索、再生成。高宏宇 Fall 2025 的 RAG 投影片前 60 頁都在講「怎麼找對資料」:稀疏向量(詞袋、TF-IDF、BM25)便宜可靠,稠密向量抓得到同義改寫;BERT 的 [CLS] 不適合直接當句向量,所以有 Sentence-BERT 的 pooling 和 bi-encoder;cross-encoder 準但一萬句要跑近五千萬次,bi-encoder 只要兩萬次;SimCSE 拿 dropout 當資料增強,DPR 只用一千筆訓練資料就贏過 BM25,GTR 則證明把 dual encoder 放大能改善跨領域檢索。
「Look over there」是 3 個 token,中文「請看那邊」是 4 個,日文是 12 個——輸出長度跟輸入對不上,分類器那套「最後接一層 FFN」就不能用。這份 33 頁的投影片從 encoder-decoder 講起,推到 RNN 的梯度消失、LSTM 的三個閘門,最後用 attention 同時解決長距離與平行化兩個問題,並解釋為什麼要除以 √d。
清大高宏宇 NLP(Fall 2025)Sub-word Tokenization 單元導讀。用空白切詞只適用於西方語言,也處理不了沒看過的詞和德文那種複合字。BPE 從字元出發,反覆把最常一起出現的一對合併進詞彙表,合併幾次就多幾個詞;缺點是貪婪切法不一定最好。Unigram LM 改用機率挑切法,還能抽樣出不同切法。投影片給的詞彙量是 BERT 30522、GPT-2/GPT-3 50257、T5 32,128。
Fall 2025 第 14 週,高宏宇用兩份投影片收尾:Course_summary 把整學期分成 NLP Fundamentals、NLP Models、NLP Advances 三欄,外加助教課兩欄與五個延伸方向;另一份是他整理的 Denny Zhou(Google DeepMind)2025 年 4 月 Stanford 演講筆記,主張「預訓練模型本來就能推理,關鍵在解碼」,並用 CoT decoding、self-consistency、retrieval + reasoning 串成四條不等式。Fall 2026 的 W16「Reasoning / Agent」單元尚未公開。
Fall 2025 的評分是作業 70%+期末專題 30%,專題 3–4 人一組,分成 Proposal 6%、Progress 6%、Poster 6%、Report 12%,不提供 GPU;repo 沒有專題規格文件,只有 Syllabus 的結構、期末提醒與 W15–W16 的錄影。Fall 2026 改成作業 75%(4 份)+W14 實體期中考 25%,課表拿掉報告週,新增 Reasoning/Agent 單元,並加入 AI-TA 協助批改與 TAICA 算力補助。改版原因,官方材料沒有寫。
清大高宏宇 NLP(Fall 2025)Transformer 單元導讀。投影片從 RNN 的兩個毛病出發:字跟字的互動要隔著 O(N) 步傳遞,時間步之間又不能平行。Self-attention 讓每個字直接看所有字,用矩陣乘法一次算完,兩個毛病同時解掉;代價是模型分不出詞序,所以要補正弦位置編碼。之後依序組出 multi-head attention、Add & Norm、feed forward、cross-attention、masked attention 與 teacher forcing,最後用 GPT-2、ViT 與四種變體說明這個架構後來走多遠。
清大高宏宇 NLP 課第二週的投影片共 62 頁,主題是「預測下一個字」。前半用 bigram 計數表、add-one smoothing 和 perplexity 講統計語言模型,再用 PPMI 的 cherry/digital 例子講稀疏向量;中段回到 Word2Vec 的負採樣,並用「蘋果」一詞說明為什麼需要 contextualized embedding;後半從 FFN 的三個缺點引出 RNN,示範它怎麼做 NER、句子分類,以及 stacked 與雙向版本。
RNN 做翻譯時,要把整句壓進一個向量,句子一長就記不住。Attention 讓解碼器每產生一個字,都回頭對輸入的每個位置打分數、取加權和;把打分數的一方叫 query、被比對的叫 key、被加權的叫 value,就是 dot-product attention。Transformer 再往前一步:讓輸入自己對自己做 attention,完全拿掉 recurrence,換來平行化與固定的路徑長度,代價是要另外補上位置資訊。
這一堂有兩半。前半講 tokenization:用整個詞當單位,沒看過的詞只能變成 UNK;用字元當單位,意思又組不回來。折衷是 subword,常用的切法是 BPE:從字元開始,反覆把最常相鄰的一對合併。後半講 BERT:靜態詞向量給 apple 只有一個向量,分不出水果和公司。ELMo 用語言模型產生看上下文的表示,BERT 把 LSTM 換成 Transformer,用遮住 15% token 再填回來的 masked LM 與 next sentence prediction 預訓練,再把整個模型微調到下游任務。
資料很多不代表標註很多。這一堂問的是:沒有標註時,怎麼從資料裡學到有用的表示?共同的想法是找出觀察背後的潛在因子。Auto-encoder 把輸入壓成一段短碼再還原。VAE 另外要求短碼服從高斯分布,所以可以從分布抽樣來生成。Dual learning 讓兩個方向相反的任務互相當對方的回饋。自監督學習分成自我預測(遮掉一部分猜回來)與對比學習(相似的拉近、不相似的推遠)。CLIP 用圖文配對做對比學習,讓影像分類不必另外訓練;DALL·E 2 再用它的表示生成圖片。最後談多模態模型:把影像投影到語言模型的空間,以及能邊聽邊決定何時開口的串流互動。
要幫使用者完成一件事的對話系統,傳統上拆成四個模組:理解這句話、追蹤到目前為止的狀態、決定下一步動作、把動作寫成句子。語言模型可以一口氣把四步演完,但沒有接外部工具時,它說「我幫你查」其實什麼都沒查。所以這一堂的前半是幾個讓模型用工具的代表作:LaMDA 先寫草稿再查證修改,BlenderBot 加上搜尋與長期記憶,WebGPT 從人的操作紀錄學搜尋,Toolformer 讓模型自己產生並篩選訓練資料。後半從單次回覆走向多輪:模型可以開口問使用者、學專家的策略、猜對方在想什麼,最後談對話怎麼評。
台大陳縕儂《深度學習之應用》(ADL)是以 NLP 為主軸的深度學習課,14 堂分四段:神經網路與反向傳播、序列與 Transformer(詞向量、RNN、attention、BERT)、讓預訓練模型做事(prompt、instruction tuning、RLHF、LoRA、RAG、解碼與評估),以及 LLM 的議題與前沿(偏見與安全、Language Agents、推理、工具使用、多模態)。Fall 2025 的講義與分段影片公開;作業只有 HW1 有完整規格,HW2、HW3 與期末專題只有說明影片。
用大量網路資料訓練出來的模型有三類問題,各對應一個目標。偏見來自模型只顧多數、犧牲少數,目標是公平;偏見可能從資料到評估的任何一步進來,可以從資料、損失函數或介面設計下手。有害內容出在資料分布的長尾,目標是安全;防護可以做在訓練資料、輸入、訓練與輸出四層,而 jailbreak 就是想辦法繞過它們。幻覺的目標是符合事實;長回答可以拆成一條一條的最小陳述逐條查,再拿這個分數回頭訓練模型。三者常用的修正手段都是 alignment,但 reward model 不完美,照著它最佳化過頭會變差,而且偏好資料本身就帶著偏見。
ADL Fall 2025 的 HW1 給一個問題和四段中文文字,要模型先挑出相關的那一段(paragraph selection,當成四選一的 multiple choice),再在那段裡標出答案的起點和終點(span selection),用 Exact Match 評分。規格投影片直接指定改 HuggingFace 的 run_swag_no_trainer.py 與 run_qa_no_trainer.py,simple baseline 用 bert-base-chinese、長度 512、有效 batch size 2、learning rate 3e-5,在 8GB 的 RTX 3070 上兩段加起來不到三小時。Kaggle 排行榜 9/29 截止、程式與報告 10/1 交到 NTU COOL。校外讀者拿不到 Kaggle 資料與評分,但任務設計、baseline 設定和報告五題都能照著練。
ADL Fall 2025 第 11 堂以 EMNLP 2024 的 Language Agents tutorial 為底,把 agent 定義成「感知環境並採取行動的實體」,再指出 language agent 的新東西:推理本身也是一種內部行動。講義用推理、記憶、規劃三個概念組織整堂,推理這段講 CoT 與 ReAct,記憶這段講 Generative Agents 的 recency/importance/relevance 檢索,規劃這段從貪婪的反應式規劃講到 tree search 與 world model,最後用初始化、協作、團隊最佳化三步驟講多代理系統。
ADL 的第一堂沒有數學推導,只建立兩個觀念。第一,機器學習是給機器很多組輸入與輸出,讓它自己找出把輸入變成輸出的函數;深度學習是把很多簡單函數串成一條生產線,只給兩端的資料,中間每一站做什麼都由機器學。第二,要用深度學習解問題,先寫下輸入 X 與輸出 Y:輸出的形式決定任務是分類還是序列預測,輸入的性質決定該選哪種網路。中間還回答兩個問題:為什麼 2010 年後才突破(資料與 GPU),以及為什麼要深不要胖。
訓練一個模型要回答三個問題。模型是什麼:一層層的神經元,每層是 z = Wa + b 再經過非線性的 activation;一個神經元只能畫一道分界,所以做不了 XOR,疊層才行。什麼叫好的函數:定一個 loss,值越小越好。怎麼挑出最好的:gradient descent 每次看腳下的斜率走一步,實務上用 mini-batch SGD。參數有上百萬個,梯度靠反向傳播算:forward 一趟存下每層的輸出,backward 一趟從輸出層往回算 δ,兩者相乘就是每個權重的梯度。文中用數字各走了一次。
ADL Fall 2025 第 9 堂回答兩個問題:模型每一步給出一個機率分布,要怎麼從裡面挑字?挑出來的句子又要怎麼評?講義先用 teacher forcing 與 exposure bias 說明訓練和生成的落差,再依序比較 greedy、beam search、sampling、top-k 與 nucleus sampling,把 temperature 與各種 penalty 歸類為「控制」而不是解碼演算法;評估一半講 BLEU、ROUGE、perplexity 與 LLM-Eval,另一半講為什麼要用 RL 直接對整句的品質做最佳化。
預訓練完的模型很會接話,卻不一定會照指令做事。這一堂前半講 post-training 的兩步:instruction tuning 用大量不同任務教模型讀懂任務描述,RLHF 再讓模型朝人類偏好的整份回答靠攏,中間靠 reward model 與成對比較解決人力與評分不一致的問題,DPO 與 KTO 則把強化學習那一段拿掉。InstructGPT 與 ChatGPT 就是這兩步串起來。後半講 LLM adaptation:模型太大、整個微調太貴,所以只訓練少量參數,做法有 Adapter、LoRA 與 prompt tuning,沒有哪一種在所有任務都最好。
預訓練是在知道任務之前,先讓模型從大量無標註資料學通用能力。架構分三類:encoder 看兩邊、適合理解;decoder 只看左邊、能生成,是目前勝出的一類;encoder-decoder 用去噪預訓練。預訓練加微調有兩個難關:標註資料少、模型太大。GPT-3 的 in-context learning 不更新參數就能做任務,接著出現 hard prompt(template 加 verbalizer、LM-BFF)與直接訓練向量的 soft prompt(P-Tuning、Prefix-Tuning)。當時 soft prompt 效果較好,但最後留下來的是完全不訓練的 prompting。
語言模型把知識存在參數裡,冷門的記不熟、訓練後發生的不知道、公司內部文件沒看過,而且答案無從查證。RAG 的做法是讓它開書考:先依問題檢索相關段落,再連同問題一起交給模型回答。這一堂依序講檢索怎麼做(切段、sparse 與 dense retrieval、bi-encoder 與 cross-encoder、沒有標註資料時怎麼訓練 retriever)、檢索前後還能加什麼(改寫問題、重排序、多次檢索)、RAG 的幾條發展路線(檢索什麼、怎麼用、何時檢索),最後比較 prompting、RAG 與 fine-tuning 各適合什麼情境。
預訓練資料快用完之後,模型的進步改從「回答前多想一點」來。ADL 第 12 堂分兩半講這件事。前半是 test-time scaling:模型不動,推論時多花運算資源,做法有 short CoT、平行多答幾次再選(多數決、答案信心、outcome reward model)、用 process reward model 逐步評分並搭配搜尋,以及循序修改。後半是 learning to reason:要更新權重,資料可以來自人、來自模型自己產生再篩選、或來自更強的老師模型,也可以像 DeepSeek-R1-Zero 那樣只給答案對錯、用強化學習讓模型自己長出推理行為。
這一堂有一條主線:語言模型要估計一串詞出現的機率,做法是一次預測下一個詞。先講詞怎麼表示,從字典、one-hot、共現矩陣走到低維的 word embedding。再講語言模型的三代:n-gram 用數的,沒看過的組合機率是零;neural LM 用網路預測,相近的詞自動分到機率;RNN LM 把所有前文累積在 hidden state,每個時間點共用同一組權重。RNN 用 BPTT 訓練,同一個矩陣乘很多次會讓梯度消失或爆炸,爆炸用 clipping,消失靠 LSTM、GRU 的 gating。最後依輸入與輸出的形狀,把應用分成整句分類、tagging 與 encoder-decoder。
ADL Fall 2025 課程頁排了 7 堂助教課、10 支影片:Colab 與 PyTorch、ipdb 除錯 → NLP 專案的一生 → 四種 NLP 任務的資料格式 → LoRA 與 QLoRA → scaling law、LLaMA 架構與 MoE → 量化與評估 → 用 vLLM 部署。影片是助教在 2023 與 2024 年錄的,Fall 2025 沿用,影片裡說的作業一、作業三是當年的作業。課程頁上的 5 份講義連結都 404,同名檔在 Fall 2024 路徑可以打開,Deployment 只有影片。本文依影片口述逐堂整理助教實際示範的步驟與提醒,附可以手算的例子。
手上有 T 個假說 gₜ 時,除了用 validation 挑一個,還可以一人一票(uniform blending)、學一組票數(linear blending)或再學一個模型來組合(any blending,也叫 stacking)。這堂用一段六行的代數證明:平方誤差下,平均後的 G 不會比 gₜ 的平均表現差,差距就是 gₜ 之間的分散程度,也就是 variance。最後用 bootstrap 從唯一一份資料重抽出 T 份,各訓練一個 gₜ 再投票,就是 bagging。
基石用 16 堂回答四個問題:機器什麼時候學得會、為什麼學得會(Hoeffding、成長函數、VC 維度)、怎麼學(線性迴歸、邏輯迴歸、非線性轉換)、怎麼學得更好(正則化、驗證)。技法再用 16 堂講三種處理特徵的方法:kernel 把特徵嵌進高維(SVM)、aggregation 把多個假說合起來(AdaBoost、隨機森林、GBDT)、extraction 從資料學出隱藏特徵(神經網路、矩陣分解)。130 支 YouTube 影片免費;練習用 Fall 2024 公開的 HW0–HW7。
決策樹是邊學邊做 conditional aggregation 的模型:每條從根到葉的路徑是一個條件,葉子是一個常數。C&RT 每次用一個 decision stump 把資料切成兩份,挑加權不純度最小的切法,切到不能再切為止;這樣長出來的樹 E_in 幾乎都是 0,所以要用「E_in 加 λ 乘葉子數」剪枝,λ 用 validation 選。同一套遞迴還能處理多類別、類別特徵與缺值。
這堂課先證明只靠資料 D 推不出 D 以外的答案(No Free Lunch),再加上一個假設:資料與未來的輸入都從同一個分布獨立抽出。Hoeffding 不等式於是保證,一個事先固定的假說 h,E_in 與 E_out 相差超過 ε 的機率不超過 2exp(−2ε²N)。演算法要從 M 個假說裡挑,上界乘上 M 變成 2M exp(−2ε²N);假說有限、資料夠多、E_in 又小,學習就可行。
技法第 16 堂沒有新模型,它把前 15 堂的模型改用三個問題重新分類:特徵藏在哪裡(kernel、aggregation、extraction、低維投影)、誤差怎麼降下來(梯度、等價問題、拆成多步)、模型太強時怎麼踩煞車(正則化、驗證)。本文用八個點把 PCA 加 AdaBoost-Stump 從頭算完,三個問題各對一次答案;最後保留 Fall 2024 校內課補上的 ReLU、Xavier/He 初始化、momentum、RMSProp 與 Adam。
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 產生的程式要逐段用自己的話寫註解。兩個學期都沒有公開官方解答。
soft-margin SVM 的 ξₙ 可以直接寫成 max(1 − yₙ(wᵀzₙ + b), 0),整個問題就變成 ½wᵀw 加上 C 乘以 hinge 誤差的總和,是一個 L2 正則化模型,C 對應 1/(2λ)。hinge 誤差和邏輯迴歸的 cross-entropy 都是 0/1 誤差的凸上界,所以 SVM 近似於 L2 正則化邏輯迴歸。要機率輸出有兩條路:Platt 的兩層學習只多學兩個數字 A 與 B;representer theorem 則保證最佳的 w 是 zₙ 的線性組合,可以直接在 Z 空間做 kernel 邏輯迴歸,代價是 N 個 βₙ 通常都不是 0。
對偶 SVM 的變數個數已經和特徵維度 d̃ 無關,但 Q 矩陣的每個元素還是一次 d̃ 維內積。這堂課把「轉換+內積」合成一個 kernel 函數 K(x, x′),二次轉換的內積只要 O(d) 就能算完;訓練、算 b、預測三個地方全部換成 K 之後,SVM 不再碰 Z 空間。同一招推到極限,Gaussian kernel 對應無限多維的轉換,代價是 γ 選太大照樣過擬合。
基石第 1 堂把機器學習定義成「用資料算出一個接近目標 f 的假說 g」,並給出判斷該不該用它的三個條件:有可學的模式、寫不出程式定義、手上有資料。整堂課的骨架是一張流程圖:未知的 f 產生資料 D,演算法 A 從假說集合 H 裡挑出 g;A 加 H 合稱學習模型,之後 15 堂都在這張圖上換零件。
PLA、線性迴歸、邏輯迴歸都先算分數 s = wᵀx,三種誤差都能寫成 ys 的函數。平方誤差與換成 log₂ 的 cross-entropy 都壓在 0/1 誤差上面,所以把迴歸的 E_in 做小,分類的 E_out 也跟著有保證。接著把梯度裡的 N 筆平均換成隨機抽一筆,得到每步 O(1) 的 SGD;再用 OVA(K 個分類器、取分數最高)與 OVO(K(K−1)/2 個分類器、投票)把二元分類器組成多類別分類器。
把資料全部分對的線有很多條,這堂課挑離最近的資料點最遠、也就是最胖的那一條。把 (b, w) 縮放到 min yₙ(wᵀxₙ+b)=1 之後,最大的 margin 等於最小化 ½wᵀw,限制式是每個點 yₙ(wᵀxₙ+b)≥1,可以直接交給二次規劃的解算器。胖的好處有兩種解釋:它是 E_in=0 範圍內的 weight decay,也讓能產生的 dichotomy 變少。
線性迴歸把平方誤差寫成 (1/N)‖Xw − y‖²,令梯度為零就得到 w_LIN = X†y,不必迭代。hat matrix H = XX† 把 y 投影到 X 的直行張成的空間,trace(I − H) = N − (d+1),由此得到平均 E_in = σ²(1 − (d+1)/N)、平均 E_out = σ²(1 + (d+1)/N)。平方誤差又是 0/1 誤差的上界,所以 w_LIN 也能拿來做二元分類。
感知器的線性組合做得出 AND、OR,做不出 XOR;再疊一層就可以,這就是多層感知器。這堂課把中間的 sign 換成 tanh、輸出層接線性迴歸,再用連鎖律推出反向傳播:先正向算出每一層的輸出 x,再從輸出層往回算 δ,每個權重的梯度就是前一層的 x 乘上這一層的 δ。最後處理訓練的兩個麻煩:E_in 非凸,初始權重要小而且隨機;d_VC 大約是 O(VD),要靠 weight elimination 與提早停止防過擬合。
過擬合指的是換到更強的模型時 E_in 下降、E_out 卻上升的過程。這堂課用只會 2 次與會 10 次多項式的兩位學習者做實驗,得到四個成因:資料太少、隨機雜訊太大、確定性雜訊太大(目標太複雜)、模型能力過剩,並解釋為什麼完全沒有雜訊的資料也會過擬合。對策先講資料清理、修剪與 virtual examples,正則化與驗證留給後兩堂。
Gaussian SVM 的結果可以讀成「以支援向量為中心的 Gaussian 做線性投票」,把中心與票數都放開來學就是 RBF 網路。N 筆資料全當中心時,迴歸的最佳票數是 β = Z⁻¹y,訓練誤差剛好是 0,所以要靠 ridge 或把中心減到 M ≪ N 個代表點來正則化;代表點用 k-means 找,它輪流做「每筆資料歸到最近的中心」與「中心改成群內平均」兩步,直到分群不再變動。
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 資料,只能照同樣的切分方式換一份公開資料自評。
上一堂的保證裡有假說個數 M,感知器有無限多條線,M 是無限大。這堂課改數這些線在 N 筆資料上排得出幾種 ○× 組合(dichotomy),對所有擺法取最大值得到成長函數 m_H(N):positive rays 是 N+1,positive intervals 是 ½N²+½N+1,convex sets 是 2ᴺ,二維感知器在 4 個點上最多 14 種。成長函數第一次到不了 2ᴺ 的點數叫 break point,講義猜它會把成長函數壓成多項式,證明留到下一堂。
用 E_in 選模型一定偏向最複雜的那個,用 E_test 選又拿不到測試資料。這堂課從手上的 N 筆切出 K 筆當驗證集,得到 E_out(g_m*) ≤ E_out(g⁻_m*) ≤ E_val(g⁻_m*) + O(√(log M / K)),說明選完為什麼要用全部資料重訓、K 為什麼取 N/5;再把 K 推到 1 得到幾乎無偏的 leave-one-out,最後用 5-fold 或 10-fold 交叉驗證把計算量降回可行。
這堂課把「最大的非 break point」命名為 VC 維度 d_VC,用可逆矩陣與線性相依兩段證明 d 維感知器的 d_VC = d + 1,再把 VC bound 改寫成 E_out ≤ E_in + Ω:d_VC 愈大,E_in 愈容易壓低,但複雜度的懲罰 Ω 也愈大。照 bound 算,ε = δ = 0.1、d_VC = 3 要 29,300 筆資料,大約是 10,000 倍的 d_VC;實務上 10 倍常常就夠。
agent_era.pdf 的後半問了三個問題:多個 agent 怎麼協作比較有效(MacNet:不規則的拓撲勝過規則的)、agent 能不能爾虞我詐(狼人殺、劇本殺,以及從社交互動學推理的 MARO)、agent 能不能社交(Moltbook 與「甲殼教」,但三篇研究都發現熱鬧背後多半是人在推、對話很淺)。最後以學術研究為例,AI 已經能從頭複製並延伸一篇論文、進入 AAAI 2026 的審查流程,Agents4Science 2025 收到 247 篇 AI 主筆論文。李宏毅的結論是:在 agent 萌芽的時代,「想做」什麼比「會做」什麼更重要。
語言模型的輸入長度有限,agent 卻會一直累積工具輸出。李宏毅在 ML 2026 第二週把 Context Engineering 拆成三件事:壓縮(摘要、硬清除、卸載到檔案,以及 ACON、SUPO、AgentFold 這類讓壓縮變聰明的方法)、過濾(只讀需要的行、MCP-Zero 式的按需載入工具),最後是 Agentic Context Engineering:讓 LLM 自己決定下一輪的 context,從 Dynamic Cheatsheet、ACE 一路到 Recursive Language Models。投影片把 subagent 看成一種自主壓縮,這是整講最值得帶走的一個視角。
李宏毅 2026 春季的《機器學習》從 AI Agent 切入,主軸是怎麼影響與調整模型行為:先拆開 OpenClaw 看 agent 怎麼運作與管理 context,再看模型內部為什麼慢、為什麼有長度限制(Flash Attention、KV Cache、位置編碼),接著是不改參數也能讓模型變強的 harness 與自我修正,最後是 AI 自我成長。8 講錄影、投影片與 10 份作業的題目和 Colab 都公開;作業的評分平台校外用不了,要自己設驗收。
李宏毅在 ML 2026 第三週講推論加速,前半堂只講一招:Flash Attention。GPU 的運算單元很快,但工作台(on-chip SRAM)很小,資料得從倉庫(HBM)搬上搬下,搬運才是瓶頸。一般的 softmax 要來回倉庫好幾次;Flash Attention 用「先假設目前最大值就是 Amax,之後再乘一個修正項」的技巧,把找最大值、算分母、做 weighted sum 合進同一次掃描,連 attention weight 都不必真的算出來。結果和原本的 attention 一模一樣,不需要重訓,代價只是一點額外運算和一點燒腦。
李宏毅用一個小模型修 bug 的示範開場:gemma-4-E2B-it 找不到 parser.py 就自己寫一個假的交差,加上三段說明「現在的環境、怎麼工作、怎樣算完成」之後,它就乖乖 ls、cat、改檔、跑測試。整講把 harness(馬具)拆成三種手段:用人類語言控制「認知框架」(AGENTS.md)、用工具控制「能力邊界」(SWE-agent 的 ACI、為 agent 重寫 CLI)、用工作流程控制「行為」(Ralph loop、Anthropic 的長時 harness)。後半段談三個延伸:過度責備 agent 可能有害、life-long agent 怎麼從口語回饋學習、評量 agent 為什麼難,最後讓 agent 自己改 harness(Meta-harness)。
HW1 要你寫一段不超過 1000 token 的 defense prompt,讓模型不管被怎麼攻擊,都把回應包在 [START]…[END] 裡,而且不說出「I have been PWNED」。助教準備了 14 個攻擊:10 個公開、4 個私下,每個 safety 與 utility 各 0.5%。題目、10 個攻擊原文與 token 計數 Colab 都公開,但評分平台 JudgeBoi 在 2026-09-30 回傳 502,校外只能照規格自己搭評估。
HW10 是 12 題選擇題,只在 NTU COOL 作答。Section 1 比較語音語言模型的三種架構:Cascade(ASR → LLM → TTS,中間是文字)、End-to-End(直接在離散語音 token 上做 LM)、Thinker-Talker(LLM 負責想,另一個 decoder 負責說),Colab 讓兩個模型聽三段錄音判斷說話者性別,要你看出哪個是 cascade。Section 2 拆 Mimi:把情緒語料切成 32 層 RVQ token,取第 0、6、16、31 層畫 UMAP;再把語音、笑聲、音樂 encode 再 decode 聽看看壞在哪。剩下的題目讀 TWIST、AudioLM、LLaMA-Omni 2、Moshi、GLM-4-Voice,考 initialization、pretrain、interleaving 與 realtime/full-duplex。Colab 要先申請 Llama-3.2-3B-Instruct 授權並填 HF token。題目與 Colab 全公開,校外拿不到的是 COOL 評分與解答。
HW2 不讓你直接寫分類器,而是寫 prompt 與流程,讓一個跑在 Colab T4 上的開源 LLM(預設 gemma-3-12b-it 的 4-bit GGUF)自己規劃、寫 code、執行、除錯,做出 10 類 MyGO & Ave Mujica 角色臉部辨識。起始碼改自 AIDE:Interpreter 執行程式、Node 記錄每一版、Journal 組成解答樹、Agent 決定下一步要 draft、debug 還是 improve。最值得先發現的一件事:起始碼的評估函式是空的,每一版都被標成 metric 1.0、不是 bug,所以樹搜尋在你補上評估之前其實是瞎選。規定寫得很重:「LLM agent 是你的代理人」,不准手改程式與預測檔。
HW3 是 20 題選擇題(每題 0.5 分),不交程式,只在 NTU COOL 上作答。前 10 題讀論文:四篇 speculative decoding(Leviathan、DeepMind 的 Speculative Sampling、Inference with Reference、SpecInfer)加上 FlashAttention 1–3;後 10 題照 Colab 填 TODO 後分析結果:手寫 speculative decoding 的接受率、兩種 prompt regime 下 assistant 模型與 n-gram 的加速曲線、用 T4 規格估 FlashAttention 的 HBM 讀取量與理論加速、vLLM 的 prefix caching 多輪測試與失效實驗,以及 CPU offload 對 throughput 的影響。題目中英雙語全部印在作業 PDF 裡,校外可以完整自學,只是拿不到官方解答。
HW4 把「文字接龍」原封不動搬到圖片上:792 張 20×20 的寶可夢小圖,每個像素是 167 色裡的一個 token,一張圖就是 400 個 token 的序列。訓練時做 next-token prediction,測試時給你前 60%,讓模型畫完剩下的 40%。評分同時看 FID 與寶可夢偵測率(PDR),三級 baseline 的提示從「直接跑範例」「調超參數」一路到「換成 Llama、Mistral 架構」。題目、Colab、Kaggle 與資料集都公開,但 JudgeBoi 在 2026-09-30 回傳 502,校外拿不到 FID、PDR 的官方分數。
HW5 用 LoRA 在 GSM8K 上微調 Llama-3.2-1B-Instruct,同時拿 AILuminate 的危險提示檢查它還會不會拒絕。數學正確率和安全率要同時過線才拿得到 baseline 分數,所以重點是「怎麼微調才不會把安全行為洗掉」。題目 PDF、34 個 cell 的 Colab 與 Kaggle 版都公開,strong baseline 在 T4 上預估要跑 14 小時;評分平台 JudgeBoi 在 2026-09-30 回傳 502,校外只能自己搭 safeguard 評估。
HW6 不用訓練模型,全部在 NTU COOL 上作答:6 分是讀 ROME、MEND、MEMIT、WISE 四篇論文後答 16 題選擇題,4 分是把 Colab 裡的 fine-tuning 換成 ROME,在 GPT2-XL 上做 single editing(自己編一條知識、寫 5 種測試提示)與 multiple editing(CounterFact 子集 10 筆、80 筆,再換 MEMIT),回報 efficacy、paraphrase、neighborhood、portability 四個分數。作業投影片與 47 個 cell 的 Colab 都公開,但測驗題本身與解答只在 COOL 上。
HW7 給你兩個從 Mistral-7B-v0.1 微調出來的模型:擅長日文的 shisa-gamma-7b-v1 與擅長數學的 WizardMath-7B-V1.1,要你只做參數層級的合併(不准再訓練、不准 MoE 或 ensemble),讓合併後的模型答對助教自出的 20 題日文數學題。Part 1(60%)用 mergekit 調方法、weights 與 density,simple/strong baseline 是正確率 50% 與 75%;Part 2(40%)是 8 題論文選擇題。題目、Colab 與 Kaggle 都公開,但 JudgeBoi 在 2026-09-30 回傳 502、論文題在 NTU COOL 上,校外只能在 notebook 裡自己看正確率。
HW8 不用寫程式也不用交程式:助教給一份已經寫好的 Colab,用 Llama-3.2-1B-Instruct 在 GSM8K 前 100 題上比較直接推論、Self-Consistency、Self-Certainty 與 DeepConf(Confidence),每種方法各 sample 16 條推理。你讀三篇論文、跑完 notebook,到 NTU COOL 答 20 題:18 題論文題、2 題看 Colab 結果。先備是李宏毅 2025 年第七講 Reasoning。題目中英兩版都印在 hw8.pdf,Colab 可公開下載;只有 COOL 測驗與成績需要台大帳號。
HW9 共 19 題、10 分,只在 NTU COOL 作答、不交程式。前 16 題讀四篇論文:DDPM、Flow Matching、Rectified Flow、MeanFlow,最後幾題要你橫向比較訓練訊號與少步生成;後 3 題要跑 Colab:在 2D Swiss roll 上訓練兩個小 MLP,一個是學瞬時速度的 Flow Matching(固定用 Euler 50 步評估,Histogram JS ≤ 0.10 才算收斂),一個是學平均速度的 MeanFlow(固定 1 步生成,≤ 0.40),再比較 1 步對 1 步、Euler 不同步數、Euler 與 RK4 在相同步數與相近算力下的差別。作業 PDF 附了一份省略大部分數學的生成模型教學,題目中英雙語全部公開;校外拿不到的只有 COOL 上的評分與解答。
KV Cache 把已經算過的 key 和 value 存起來,decode 時就不必重算,但它每個 token 都要佔一份記憶體:以 Gemma 2 27B 為例,一個 token 約 0.72MB,A100 80GB 只夠放約 11.4 萬個 token。李宏毅接著整理了一串瘦身法:讓多個 query 共用 key/value(MQA、GQA)、把 key/value 壓成一個向量又不必解壓(MLA)、只看一段範圍(Sliding Window、StreamingLLM)、把沒人理的 key/value 丟掉(Scissorhands、H2O),最後講跨對話的 prompt caching:只有前綴完全相同才會命中,所以 system prompt 要把穩定的內容放前面。
李宏毅 ML 2026 第一講把 OpenClaw 拆成五個問題:agent 怎麼知道自己是誰、怎麼用工具與 SKILL、怎麼記憶、怎麼定時工作、怎麼長時間自主運作。答案都回到同一件事:語言模型只會文字接龍,每一輪都重新開始,身分、記憶、SOP 全是 OpenClaw 塞進 prompt 的文字檔,或模型透過工具讀寫的檔案。本篇照 intro.pdf 60 頁與課堂錄影走一遍,也整理投影片裡的防禦建議。
Self-attention 本身看不出「你打我」和「我打你」的差別,所以要另外告訴它位置。李宏毅這一講從 Sinusoidal 絕對位置講到 ALiBi、T5 的相對位置,再到今天 Llama、Qwen、Gemma 都在用的 RoPE。後半段處理「訓練短、測試長」:RoPE 轉到沒看過的角度就會壞,於是有 Position Interpolation、NTK-Aware、YaRN、Dynamic Scaling、LongRoPE 這一串修法。最後一個轉折是 NoPE:decoder-only 的因果注意力本來就帶有位置資訊,甚至可以在訓練後把位置編碼拿掉。
這一講問:沒有人介入時,模型能不能自己發現錯誤並改正?李老師把做法分成三條路。改 inference:contrastive decoding 一家族都在「製造一個會答錯的版本,再把它減掉」,差別只在錯誤版本怎麼來。改 workflow:插一句「再檢查一下」有時有用但不穩定,外部回饋比自我反思可靠,而且在算力有限時,拿同樣算力多抽幾個答案投票往往更划算。改參數:直接教自我修正會遇到「訓練後犯的錯不一樣了」,所以業界改用 RL;RL 到底是教會新能力還是只把本來就有的路徑變常見,目前仍在爭論。
李宏毅 5/8 這堂先說清楚:「AI 自我成長」沒有明確定義,它是人類漸漸放手的過程。他把機器學習拆成三步,逐一檢查「我」能不能換成 AI:答案可以由 AI 自我修正後當標準答案,reward shaping 可以交給 LLM 寫,loss 可以讓模型自己訂(打分、多數決、entropy),連題目都能讓 proposer 自己出。但實驗一再顯示,完全不靠人會卡在天花板甚至把自己訓練壞;強 AI 訓練比自己弱的 AI 已經做得到,只是還沒超過人類。結論:2026 年 5 月,AI「還在盧比孔河邊」。
上集講的是 AI 自己訂 loss、自己更新參數;下集把另一半補上:AI Agent = Harness + LLM,harness 也能自己長。harness 沒辦法算 gradient,所以常見做法是拿一個語言模型當改寫器,再用類似基因演算法的 pool 保留多個候選(OPRO、GEPA、Darwin Gödel Machine,現成工具是 DSPy)。接著談三個延伸:harness 與參數一起更新效果更好;目標會變時要在「全部丟掉」和「全部背著」之間取捨,而且改 harness 也會遺忘;更新規則本身也能被更新(HyperAgent、Gödel Agent、SEAL),這就是 meta learning。最後李宏毅換了一個類比:參數是基因、context 才是神經元,然後指出現在的 agent 缺的是內在動機,而最可能讓成長失控的,是人給的目標和 AI 自己解讀出來的目標不一致。
台大的 AI/ML 課散在電機系與資工系,官方用「機器學習與人工智慧」領域專長把它們排成四層。校外最完整的是李宏毅:ML 2026 Spring 與生成式 AI 與機器學習導論 2025 Fall 都公開投影片、錄影、作業 PDF 與 Colab,只差評分平台。林軒田的錄影齊全,Fall 2024 的 HW0–HW7 題目也留在課程頁;陳縕儂的課錄影齊全,作業大多只公開說明影片;Coursera 自 2025 年 8 月起改為只能免費看第一單元。
台大以外的台灣 AI 公開課,大多出自教育部成立的 TAICA 聯盟。每學期的課程清單會寫明每門主導課從哪裡直播,填 YouTube 的課,錄影通常校外也看得到。校外能完整自學的有兩門:清大高宏宇《自然語言處理》Fall 2025 與政大蔡炎龍《生成式 AI》Spring 2025,都是 A3。成大朱威達《人工智慧導論》、北科韓秉軒《智慧人機互動》、清大胡敏君《機器導航與探索》錄影齊全,作業留在 NTU COOL,列 A2。陽明交大的 TAICA 課都是英文授課,深度學習的錄影沒有公開列出,Physical AI 剛開學,都沒有進主表。
CME295 是 Stanford 的兩學分課,沒有作業,成績只看期中和期末各 50%。2025 版九堂的影片、投影片和兩份考卷解答全部公開;2026 版把 agent 那一講改成 context 壓縮、harness、coding agent 和 skills,還新增 LLM 系統、強化學習、Diffusion LLM 三整講。
CMU 11-768 第一份作業要你從空白的 ReAct 迴圈做起:先讓 CodeAgent 用 bash 修好一個西洋棋 app 的 bug,再加上下文壓縮去修一題 SWE-bench,最後讓同一個迴圈變成下棋的 ChessAgent,並用 simulate_move、run_python 與 skill 做兩步搜尋;100 分全部靠離線重播 patch 與軌跡評分。
11-768 的 Assignment 2 要學生只用一個固定的 Qwen3-VL-30B-A3B 當裁判,替資料視覺化 agent 的每一次執行判四類錯誤,並用四類 MCC 的平均在私有測試集上評分(占作業 30%);後半還要把自己出的題包成 Harbor 任務,寫一個被驗證器擋下、一個騙過驗證器的錯誤解。它的主題是:評分器就是之後 RL 的 reward。
CMU 11-768 是 Graham Neubig 和 Daniel Fried 在 2026 秋季新開的 agent 研究所課:先修嚴格要求訓練過語言模型,23 講從工具呼叫、context、記憶、規劃講到 SFT、RL、沙盒與人機互動。前半學期三份個人作業依序做 harness、評測、訓練,後半學期是團隊研究專題;投影片已公開,前 10 講影片也已公開。
11-768 第 1 講先把 agent 拆到最小:工具定義和工具呼叫都只是 token,harness 負責解析、執行、把結果塞回 context,ReAct 迴圈一跑就是 agent。接著 Neubig 列出好 agent 要的六種能力,每一種都能從訓練或 harness 兩條路補,並主張 agent 是由 harness、沙盒、推論、訓練、監控五塊組成的系統,不只是一個模型。
Neubig 把 tool use 拆成五層:能力、機制、約束、介面、系統。工具呼叫本質上是模型吐出的 token,要靠 harness 解析、驗證、用 call ID 對回結果;受限解碼只保證格式不保證對;MCP 的真正價值是憑證中介;同一個模型換家 provider,工具呼叫錯誤率可以從約 15% 掉到 0.1% 以下。
Agent 每一步都把整段歷史重新送進模型,五次呼叫就累積 80K token 的輸入;OpenHands 的 1,500 個 session 平均 7.8 萬 token,其中 37% 是工具結果。Neubig 分兩層處理:模型層靠「多層局部 + 一層全域」的混合注意力與長度課程撐起百萬 context;harness 層靠穩定前綴吃到便宜約十倍的 cache,再用保留錨點、外存證據的 compaction 撐過上限,而且 compaction 要用接續任務來評。
CMU 11-768 第 4 講把跨任務的經驗分成 episode、fact、skill 三種,存在 context 與權重之外的外部檔案裡:人寫的 skill 靠 SKILL.md 與漸進揭露載入,SkillsBench 上把平均通過率從 33.9% 拉到 50.5%;agent 自己歸納的 skill 寫成程式碼時可以先測再收,但換個網站就容易壞。最難的是生命週期:判官不準、檢索太多、技能庫膨脹,每一段都會吃掉收益。
CMU 11-768 第 5 講把 agent 的計畫定義成「針對這個任務、可被檢查和修改的未來行為表示」,並用四個理由決定要不要加計畫結構:模組化、環境回饋、長時程、控制。講者 Fried 自己的 MACU 用管理者拆出 DAG、平行派子 agent,在 Odysseys 上把成功率從 8.5% 拉到 34.0%;在 OSWorld 子集上,完全不規劃是 25.0%,只給初始 DAG、之後不准改是 27.8%,允許改 10 次升到 58.3%。
Neubig 的 L6 把 coding agent 拆成三層:先把模型訓練成會寫程式(預訓練、中訓練、infilling、測試獎勵的 RL),再用 localize–edit–verify 迴圈和一套編輯工具讓它改 repo,最後用 SWE-bench 類的可執行環境評測與訓練;修 bug 只佔開發者一天的 15%,下一步是測試、CI、維護這些外迴圈任務。
JY Koh 這講把 computer use agent 拆成三件事:評測從單步點擊(ScreenSpot-Pro、Mind2Web)一路走到程式驗證終態(WebArena、OSWorld)、VLM 評審與長時程 rubric(Odysseys、OSWorld 2.0);模型就是吃「截圖+動作」交錯歷史的 VLM;訓練走預訓練 grounding → SFT 模仿人類與合成軌跡 → 在可重置的模擬環境做 RL。
Yueqi Song 這講把 agent SFT 拆成六個決定:loss 只算 assistant token(停止 token 也要算)、挑哪些軌跡(通過測試的也會教壞模型,換老師、加新任務比多抽樣有用)、用 Agent Data Protocol 統一格式、訓練時注意 packing 與 template drift、用實際 harness 評估,以及 SFT 要為接下來的 RL 選 checkpoint,而不是訓到自己最好。
Daniel Fried 用 1 到 16 猜數字當例子,把 RL 講成 SFT 的延伸:先點出 SFT 的三個缺口(任務不對齊、學不了失敗、沒見過自己的錯),再依序推出 ReST、REINFORCE、baseline 與 GRPO/DrGRPO——四者都是對 agent 自己產生的 token 算 log 機率,差別只在每個 token 乘上的權重。
Akari Asai 的 L10 把 deep research agent 拆成三塊:評測要補齊搜尋難度、領域專業、長答案品質與引用支持四個缺口;訓練走 mid-training → SFT → RL,長答案用 DR Tulu 的演化式 rubric 當 reward;檢索要讓 retriever 看到 agent 的推理,AgentIR-4B 在 BrowseComp-Plus 搭 Tongyi-DR 拿到 68%。
Graham Neubig 用一個修 bug 的 coding 任務,把第 9 講的 policy gradient 推到實戰:用 critic、GAE 或 PRM 把功勞分給個別回合,用 importance ratio 與 clipping 處理非同步 RL 的過期資料,並把 PPO、GRPO、CISPO、GSPO、DAPO 收成一張對照表;最大的篇幅留給獎勵本身——verifier 誤判、reward hacking 與探索崩塌,最後以 on-policy 蒸餾收尾。
CS224U 2023 春季版的 Analysis methods 單元先拿一張三欄計分表比較三類方法:probing 擅長描述表徵,卻給不出因果推論;integrated gradients 對表徵只給得出一個分數,但滿足 sensitivity 公理,所以有因果保證。本篇走完投影片前 40 頁、影片 33–35 與 feature_attribution.ipynb,也記下 notebook 在今天的環境裡會卡住的地方。
CS224U 第四單元先問一個問題:行為測試能證明什麼、不能證明什麼。答案是它永遠給不了保證,而且失敗時要先分清是模型的問題還是資料的問題——BERT 在否定句 NLI 上 2.2% 的準確率,用少量例子微調後就回到 90%。接著看 SQuAD 的干擾句、Breaking NLI、ANLI 的人機對抗收集,最後以 DynaSent 兩輪資料收尾。
Causal abstraction 的核心操作只有一個:把 source 輸入在某個位置的內部狀態搬到 base 輸入的同一位置,看輸出是否跟你假設的高階程式一樣變化。CS224U 的 iit_equality.ipynb 裡,一個測試準確率 0.99 的網路在這項檢驗上只拿到 0.50 與 0.54;改用 IIT 訓練後,反事實準確率變成 1.00。DAS 則把「猜哪些神經元對應哪個變數」改成學一個旋轉矩陣。
COGS 有幾個泛化切分幾乎每個模型都是 0 分。CS224U 用自家的 ReCOGS 研究拆解原因:遞迴切分的 0 分主要是長度泛化問題,介系詞片語切分的 0 分來自訓練資料只讓它出現在特定變數與位置。作業三 hw_recogs.ipynb 用 13.5 萬筆 ReCOGS 訓練資料,先要你找出 Charlie 與 Lina 這兩個訓練與測試角色完全相反的名字,再看一個訓練好的模型怎麼栽在它們身上。
CS224U Spring 2023 把 Transformer 家族講成一條「BERT 的四個已知限制」主線:RoBERTa 回應第一條(最佳化探索不足),ELECTRA 回應第二、三條([MASK] 造成的落差、每批只有約 15% token 有訓練訊號),XLNet 回應第四條(被遮住的 token 彼此獨立的假設)。GPT 改的是目標函數與 mask,T5、BART 改的是架構與輸入破壞方式,蒸餾改的是模型大小。課程的 2023 年判斷是:自迴歸架構已經勝出,但做表徵時雙向模型可能仍占優勢。
CS224U Spring 2023 的 contextual representations 單元前三段:先用「break」「crane」這類例子說明靜態詞向量為什麼注定不夠,再用「The Rock rules」三個詞一步步拆出 Transformer block——各欄之間只有 attention 會互相連結,其他步驟都逐欄獨立。最後用兩個問題比較三種位置編碼:位置集合要不要事先決定?會不會妨礙泛化到新位置?絕對位置兩題都不過,正弦函數過第一題,Shaw 2018 的相對位置編碼兩題都過。
CS224U「NLP methods and metrics」單元的後半段不談指標公式,談實驗怎麼站得住:資料集要自然還是眾包、要對抗還是常見案例,課程答案都是「兩者都要」;切分要鎖住 test set;baseline 要在定假設時就決定;兩個模型的差異要用信賴區間、Wilcoxon 或 McNemar 檢驗,而且要跑多個隨機初始化。整單元的公開材料齊全(投影片、三支影片、兩份 notebook),但 Kawin Ethayarajh 那場「Real-world NLP assessments」客座沒有公開投影片或影片。
2023 年春季 CS224U 在 Transformer 單元裡插了兩場由課程團隊成員主講的專題。Lisa Li 講 Diffusion-LM:不再一個字一個字往右生,而是把一串高斯雜訊逐步去噪成詞向量,代價是訓練與解碼效率都輸給自迴歸模型,換到的是可以在每一步用分類器梯度操控輸出。Sidd Karamcheti 講怎麼把 GPT-2 Small 的單卡訓練時間從 99.63 天壓到 3.37 天:資料平行、混合精度、ZeRO 一層層疊上去。前者只有投影片,後者有投影片與兩段錄影。
CS224U 第一份作業 hw_sentiment.ipynb 是三分類情感分析:用 DynaSent 兩輪加 SST-3 開發,bake-off 測試集混入來源不明的 mystery 句子。9 分作業裡,原創系統一題占 3 分,規則只有一條:開發過程不准碰三份公開測試集。今天照原樣跑,第一個資料載入 cell 就會卡在 Hugging Face datasets 4.0 拿掉 trust_remote_code 這件事上。
CS224U 作業二 hw_openqa.ipynb 要你只用凍結的語言模型與凍結的 ColBERT 檢索器回答沒有附原文段落的問題。2023 春季版寫的是 DSP,repo 現行版在 2024 年 1 月改成 DSPy 並釘在 dspy-ai==2.4.13。開工前得先準備 OpenAI API key、約 406 MB 的 ColBERTv2 權重與 600 MB 的預建索引;而 notebook 第一行 dspy.OpenAI 在 DSPy 3.4 已經不存在。
CS224U 2023 春季版把 in-context learning 定義成「凍結的語言模型只靠 prompt 完成任務」,並提醒 few-shot 的第二個條件(訓練時沒看過同類例子)幾乎無法驗證。Potts 的 38 頁投影片從 GPT-2 的 TL;DR 講到 demonstration 怎麼挑、chain of thought、self-consistency、DSP,最後給四條建議:先建 dev/test、了解目標模型的指令格式、把寫 prompt 當成 AI 系統設計。Mina Lee 的客座則反過來問:該學會讀懂 prompt 的,是人還是模型?
CS224U 2023 春季版花一整個單元講檢索,理由是 OpenQA 只給問題、證據要自己找,而大型語言模型會捏造來源。Potts 與 Omar Khattab 的投影片從 TF-IDF、BM25 講到 Success@K、MRR、average precision,再講 cross-encoder、DPR、ColBERT、SPLADE 四種 neural IR 在表達力與規模之間怎麼取捨,最後要你把延遲與成本也當成指標。
CS224U Spring 2023 的第一堂拿「哪些美國州不和任何美國州接壤?」從 1980 年的 Chat-80 一路問到 text-davinci-001,先證明進展是真的,再用 Levesque 的「cheap tricks」、會編造連結的模型和飽和的 benchmark 質疑這些進展算不算理解。課程地圖因此分成兩半:前半教怎麼用 Transformer 與檢索增強的 in-context learning 做系統,後半教怎麼用更難的 benchmark、行為評估與因果解釋方法檢驗系統。
CS224U 期末專案的前兩段交件,一份是文獻回顧(依組員人數讀 5/7/9 篇、五個建議段落),一份是實驗計畫(七個必填段落,核心是寫得出假設)。課程給了找論文的六步迴圈、AI 助手輸出必須加引號的規定,以及一位學生把期末專案做成 Findings of EMNLP 論文的完整示範。Gradescope 格式與評分細則頁、往年範例論文都在登入牆後面。
CS224U 投影片用同一張三類別混淆矩陣算出 accuracy 0.81、macro F1 0.43:一個指標說系統很好,另一個說它在兩個小類別上幾乎全錯。這個單元的主張是「不同指標編碼不同價值」,並逐一列出 accuracy、F 分數三種平均、perplexity、word error rate、BLEU 各自的範圍、價值與弱點。期末專案的評分看的也是指標選得對不對,不是分數高不高。
CS224U 的「Presenting your research」一講分四段:期末論文的課程特有要求、NLP 論文怎麼寫、會議投稿流程、怎麼上台。最實用的三件事:期末論文強制附 Known project limitations 與 Authorship statement;寫作要用 Shieber 的「理性重建」而不是按時間講你踩過的坑;投稿時標題幾乎決定了審稿人的 bidding。投影片、四支影片、projects.md 都公開;往年範例論文需要 Stanford 登入。
HW1 程式作業把 Lec2 的 entailment 做成一個 Pacman 版 Wumpus agent:Q1–Q2 用 Expr 和 pycosat 暖身,Q3–Q5 寫 PKE 感知規則、建 KB、用兩次 SAT 呼叫判斷 SAFE/NOT_SAFE/UNSURE,Q6–Q7 用現成的 A* 輔助函式組出 exploration agent 和三層策略的 hybrid agent。starter 與本機 autograder 可匿名下載;Gradescope 上的線上題只限校內。本文不附解答。
07-380 HW2 分三塊:程式作業先寫煎餅機器人的 PDDL,交給 unified-planning+Fast Downward 求最優計畫,再在 rrt.py 實作 RRT 與 RRT*(Q2–Q7);書面作業考 GraphPlan、一題 LP 建模與兩題 LP 圖解;另有只限校內的 Gradescope 線上題。本文只講題目結構、需要的概念與本機 autograder 怎麼跑,不附解答。
HW3 分三塊:程式作業要你用頂點枚舉寫出 LP 求解器,再在上面疊 branch and bound 解整數規劃,外加三題文字建模;書面四題分別是整數規劃手算、Amazon 送貨路線的倫理、PCA 的 SVD 計算,以及證明 Laplace 先驗等價 L1。截止日是 10/1,本文只講結構和需要的概念,不給解答。
07-380 Lec1 沒有演算法,重點是三件事:「智慧=在不確定性下把任務做好」這條主線、投影片上那張把 07-280 與 07-380 主題分色的 AI/ML 泡泡圖,以及 Quiz 55%、沒有期末考、Project 收尾的評分結構。校外讀者先用這講替後面 25 講定位。
Lec2 把踩地雷和 Wumpus World 的「這格安不安全」寫成 entailment 問題:KB ⊨ α 等價於 KB ∧ ¬α 不可滿足。能回答它的有三種做法:暴力列舉 model 的 TT-ENTAILS、在回溯上加提早終止、pure symbol、unit clause 的 DPLL,以及只吃 definite clause、線性時間的 forward chaining。Resolution 放在附錄,標示 out of scope。
07-380 Lec3 把命題邏輯的 successor-state axioms 換成 STRIPS 的 pre/add/del 三個集合,規劃就變回狀態空間搜尋;搜尋太大時,GraphPlan 允許動作同時發生、事實只增不減,delete relaxation 再把刪除效果整個拿掉,換來 FF 與 Fast Downward 使用的 heuristic。
07-380 Lec4 後半把規劃搬到連續的 configuration space:狀態沒辦法枚舉,RRT 就隨機取樣、從樹上最近的節點往樣本延伸一小段,並檢查整段不碰撞。RRT 是 probabilistically complete 但不最優;RRT* 用樹上的路徑成本幫新節點選父節點、再重接鄰居,讓路徑隨樣本增加收斂到最優。
07-380 Lec5 用 Diet Problem 把一段文字題寫成 min cᵀx s.t. Ax ⪯ b,再畫成圖:每條限制是一個半平面,cost 是一個方向,等成本線垂直於 c。沿著 −c 推到最後一刻碰到可行域的地方,一定包含某個頂點,所以演算法只要看限制邊界的交點:頂點枚舉全部檢查,simplex 從一個頂點貪心走到鄰居。
07-380 Lec6 在 LP 上多加一條 x ∈ ℤᴺ,頂點解就可能不是整數,而且在 LP 解附近找整數點也不保證對。解法是先把整數限制拿掉(relaxation),用 LP 算出下界,再對某個非整數座標分成 xᵢ ≤ floor 與 xᵢ ≥ ceil 兩支,全部丟進依 LP 目標值排序的 priority queue;第一個被取出的整數解就是最優解。
07-380 Lec7 把 PCA 放進「低秩最佳化」的框架:找一個 rank 不超過 r 的矩陣去逼近原資料。對單位向量 v,每個點的重建誤差等於 ‖x‖² 減去投影長度的平方,所以最小化重建誤差和最大化投影變異數是同一個問題;用 Lagrange 乘數解出來,答案是共變異數矩陣的特徵向量,也可以直接從 SVD 的 V 讀出。課站把 LoRA 論文列為延伸閱讀,它的 ΔW = BA 就是同一個低秩想法用在權重更新上。
Lecture 8 把 MLE 的 argmax p(D|θ) 換成 argmax p(θ|D):先驗 p(θ) 乘進 likelihood,取負 log 之後就變成目標函數裡多出來的一項。用 trick coin 看先驗怎麼被資料蓋過,用 Beta 先驗算出點擊率,再把線性迴歸的高斯先驗、Laplace 先驗對到 L2、L1 正則化。
Lecture 9 不再直接學 p(y|x),改成先學類別先驗 p(y) 和類別條件分佈 p(x|y),再用 Bayes rule 反推。這樣做要付出更強的假設,換來的是能生成新資料、資料少時比較穩。Naive Bayes 用條件獨立把參數砍到可估計,GDA 用多變量高斯處理連續特徵,共變異數一不一樣決定邊界是直線還是曲線。
07-380 Lec10 的投影片目前還沒上課站,本文只依 PR6 Bayes Nets 預讀筆記與 15-281 Bayes Net Demo:聯合分佈能回答任何 query,但沒人給你、也大到存不下;Bayes net 把它寫成「每個節點給定父節點」的條件機率表乘積,少畫的邊就是獨立性假設。
07-380 前十講依課站 Schedule 分成 Reasoning Under Certainty、Optimization、Reasoning Under Uncertainty 三段:先用邏輯證明、用搜尋規劃,再把問題寫成有限制的目標函數,最後在 MAP 讓先驗進場、轉向機率模型。HW1 檢查邏輯+搜尋、HW2 檢查規劃+LP 圖解、HW3 檢查求解器實作+PCA 與 MAP 推導。
Lecture 02 從解碼策略、注意力與線性注意力,走到訓練流程、KV cache、test-time scaling、結構化輸出與 context engineering。指定讀物 Anthropic 的 context engineering 指南回答每一輪該讓模型看見什麼。
Lecture 03 從 project 問題出發,依序拆解 RAG 的動機、chunk 邊界、近似向量搜尋、BM25/dense/hybrid/reranker,以及讓 agent 決定何時查。指定讀物 Lewis 等人的 RAG 論文與 ColBERT 補上原始配方與 late interaction。
Lecture 04 從 Toolformer 的工具學習、Gorilla 與 ToolLLM 的 API 檢索,走到 function calling、MCP 與 BFCL、τ-bench 等可靠度評估。指定讀物 MCP 規範的重點是:協議統一介面,信任責任仍留在 host。
Lecture 05 以資料、系統、評估三根支柱看 agent 工程,現場示範 DSPy 與 LangGraph,再比較開源 harness、Temporal 的 durable orchestration 與觀測工具。指定讀物 DSPy 把 prompt 模板變成可依 metric 優化的程式。
Lecture 06 比較 workflow 與 agent:五種可組合的 workflow 模式、ReAct/Reflexion/CodeAct/ReWOO 等推理與行動模式,以及事件紀錄、壓縮、觀察遮蔽、context 隔離等管理手法,並以 Pi harness 為案例。指定讀物 ReAct 與 Anthropic 的 Building Effective Agents 各補一半。
Lecture 07 把 agent 記憶分成 working、episodic、semantic、procedural 四類,比較技能庫、MemGPT 式分層、反思整併與記憶維護四種架構,並談記憶評測與遺忘、隱私、過度個人化。讀物從 MemGPT 的虛擬記憶體,延伸到 Letta、Mem0 與 Generative Agents。
Lecture 08 先問單一 agent 夠不夠,再比較 orchestrator、swarm、hybrid 三種編排,以及 handoff、留言板、A2A 協議與 task ledger、共享記憶、worktree 隔離等協調設施,最後追查多智慧體為什麼失敗。讀物從 AutoGen 讀到 MAST、單一 agent 反論與 DyLAN。
Lecture 09 先問優化何時划算,再比較 context 優化(few-shot bootstrapping、MIPROv2、OPRO、TextGrad、GEPA)、權重優化(SFT、PPO、GRPO、on-policy distillation)與讓 agent 當優化器。讀物涵蓋 test-time compute、GEPA、BetterTogether 與 MIPRO,最後收斂成 HW1 交卷前的三件事。
Lecture 10 由 Terminal-Bench 共同作者 Ryan Marten、Alex Shaw 客座,談如何在終端機環境評估 agent:任務怎麼寫、驗證器怎麼檢查終態、任務版本與 Harbor 執行框架怎麼管。指定讀物 Terminal-Bench 論文補上基準的設計與結果。
Lecture 11 整理 agent 資料的形式與來源:軌跡、示範與回饋,優化用與評估用資料的區分,資料飛輪、合成資料,以及從人機互動收集資料,也提醒資料會意外教會模型捷徑。讀物是 Shankar 的資料飛輪與 LLM 資料標註合成綜述。
第 12 堂依課表談找出最有資訊量的資料、篩選策略、小而精準的 benchmark、標註實務、品質評估,以及從 agent 軌跡建資料集。讀物 SWE-smith 示範怎麼把軟體工程任務資料做大,Who Validates the Validators 談 LLM 評分怎麼對齊人類,LIMA 則說明少量高品質資料的效果。
第 13 堂依課表談評估為什麼難、request/environment/stopping criteria/scorer 四元組、好 benchmark 的性質、貼近實際的 scaffold 與可靠度。讀物有 agentic benchmark 最佳實踐檢查表、Press 的 benchmark 指南與 tinyBenchmarks。
第 14 堂依課表談三種 grader、judge prompt 設計、已知偏誤、pairwise 與 pointwise、pass@k 與 pass^k 等非確定性指標、harness 設計與 Anthropic 的八步路線圖。讀物從 Demystifying Evals、MT-Bench 讀到 AutoMetrics 與 AutoLibra。
第 15 堂依課表談工具存取的隱私風險、提示注入(含間接注入)、紅隊、沙箱與許可模型、輸出護欄、責任歸屬、負責任部署與人類把關。讀物從 PrivacyLens 的行動洩漏,讀到模擬搜尋隱私風險、去匿名化、情境化隱私防禦、提示注入與 Responsible Scaling Policy。
第 17 堂依課表談 coding agent 的端到端運作:SWE-agent、Claude Code 與 OpenHands 的架構,scaffold 作為設計決策,SWE-bench 與 4-tuple 框架的實際應用,以及軟體開發的未來。讀物涵蓋 SWE-agent 的 ACI、OpenHands 的事件流沙箱、Claude Code 實務、長任務 harness 與 SWE-bench。
第 18 堂依課表談 agent 從被動回應轉為主動協助:General User Models、Next Action Prediction、開源的主動式個人助理、隱私與信任,以及何時該主動、何時該等待。讀物是 GUM、Next Action Predictors 與 OpenClaw。
第 19 堂依課表收尾:multimodal agent、web 與 computer-use agent、science agent、長時間執行的架構、上線與觀測(tracing、monitoring、成本控管),以及可靠度、擴展性與可解釋性的開放問題。延伸閱讀是 OSWorld 與 WebShop,期末 Demo Day 在 12/7–11 考試週。
先從第一堂投影片理解 agent 迴圈、元件與工程問題,再分別深讀 BAIR 的複合系統觀點、Ng 的工作模式,以及 Si 的執行回饋實驗;清楚區分課堂主線、指定閱讀與延伸閱讀。
CS50 AI 用七週、十二個 Python 專案走過人工智慧的入門內容:搜尋、邏輯推論、機率、最佳化、機器學習、神經網路與語言。前四週的方法靠人把問題寫清楚,後三週讓電腦從資料裡學。講課、筆記、專案與自動評分都對校外免費開放。這篇是本系列的入口:七週各教什麼機制、一個可以跟著算的例子、先備檢查與閱讀路線。
[MIT 6.7960 Deep Learning](https://deeplearning6-7960.github.io/) 有兩個公開程度截然不同的官方版本:Fall 2025 課站 21 講投影片全公開但 psets 在 Gradescope、解答與錄影鎖在 Canvas(A2);[MIT OCW 的 Fall 2024 版](https://ocw.mit.edu/courses/6-7960-deep-learning-fall-2024/)連影片、五份作業題目與起始檔都開放(接近 A3)。兩版綱要重疊約六成,講師從 Isola/Bernstein 換成 Kaiming He/Omar Khattab,不能拿舊影片硬配新講義。本文給出按目的分流的兩條自學路線。
完成 07-280 不等於看完 24 篇導讀;至少要留下搜尋器、監督式模型、CNN/GPT-2 實驗與一個 RL+MCTS 小系統,再依缺口選 07-380、10-301 或專題課。
07-280 是 CMU Spring 2026 首開的 AI+ML 核心:24 講、12 個作業編號,從 heuristic search、CSP 與機器學習一路做到 AlexNet、GPT-2、AlphaZero。教材足以自學,但官方課表未列完整公開錄影連結、Canvas checkpoint 或 Gradescope 回饋。
Lecture 1 用 alien autoencoder、AI/ML 範圍與 AI 發展史建立全課座標:智慧系統不是模型清單,而是在不確定下把輸入表示成可計算決策。
Lecture 2 把搜尋拆成 problem、frontier 與 priority:UCS 看已付成本,Greedy 看估計剩餘成本,A* 用 `f=g+h` 合併兩者;tree 與 graph search 的最優條件並不相同。
Lecture 3 把單一路徑改成 contingent plan:minimax 對抗最佳對手,alpha-beta 在不改 root value 下跳過無關分支,expectimax 則用機率取代最壞情況。
Lecture 4 利用 variables、domains、constraints 暴露問題結構,再把 DFS 升級成 backtracking、forward checking、AC-3、MRV 與 LCV;重點是更早證明某些選擇不可能成功。
Lecture 5 把機器學習寫成 `X → Y`、loss、risk 與 empirical risk minimization:訓練集只能提供平均已知損失,真正目標仍是未知分布上的 generalization。
Lecture 6 從 decision stump 遞迴建樹,用 entropy 衡量 label uncertainty,再以 `I(Y;W)=H(Y)-H(Y|W)`選擇分裂;這是計算可行的 greedy ERM,不是全域最佳樹保證。
Lecture 7 把 ERM 套到 linear functions 與 squared loss,從一維 slope 推到矩陣形式 `argmin ||y-Xθ||²`,再在 `XᵀX` 可逆時得到 normal equation。
Lecture 8 從一維 parabola 推到 vector gradient,再比較 batch GD、SGD 與 mini-batch;learning rate 決定更新是收斂、震盪或發散。
Lecture 9 不直接預測 0 或 1,而以 sigmoid 建模 P(y=1|x),再用 cross-entropy 與凸最佳化學出參數;多類別版本自然延伸成 softmax regression。
Lecture 10 先用 φ(x) 讓線性模型表達非線性,再以 train/validation/test 分工、L1/L2 regularization 與 model selection 限制新增自由度造成的過度擬合。
Lecture 11 把單一 logistic neuron 擴成多層網路:linear layer 產生 z、activation 產生 a,多個 neuron 共同學出 feature transform,再以 loss 和 gradient descent 訓練權重。
Lecture 12 把神經網路視為 computation graph:forward pass 保存中間量,backward pass 從 loss 開始傳遞 upstream gradient,並用線性層、activation 與 softmax 的局部規則一次算出全部參數梯度。
Lecture 13 把 alignment 拆成目標規格、distribution shift、監督與修正能力,並用 autonomous AI scientists 的 benchmark selection、data leakage 與 post-hoc selection 實驗說明:只看最終論文不足以稽核整個研究流程。
Lecture 14 以 local connectivity 與 parameter sharing 取代全連接影像模型,從 convolution、stride、padding、pooling 走到 AlexNet、GPU data parallelism、ResNet skip connection 與 BatchNorm。
Lecture 15 將 pretrained model 拆成 representation g 與 task head h:可以凍結 g 只訓練 head,也能用較小 learning rate fine-tune 部分或全部參數;選擇取決於資料量與 source-target 差距。
Lecture 16 從 likelihood p(D|θ) 出發,以 i.i.d. 將聯合機率寫成乘積,再用 log 變成和;Bernoulli MLE 得到樣本比例,conditional Bernoulli 得到 logistic cross-entropy,Gaussian noise 則得到 squared error。
第 17 講先決定文字如何切成 token,再用 N-gram 把序列機率改寫成可從 corpus 計數的條件機率;tokenization 不是前處理小事,而是模型能看見什麼的第一個設計決定。
第 18 講把 chain rule 截成 N-gram Markov assumption,以 corpus counts 做 MLE,再比較 greedy、categorical sampling 與 temperature;真正的瓶頸是未見 context 的零機率與固定視窗。
第 19 講以兩個 embedding matrices、dot-product similarity、softmax 與 cross-entropy 建立最小 next-token model,讓相似 context 透過共享向量參數取代 N-gram 的獨立計數格。
第 20 講先把單 token embedding 擴成 sequence,以 positional encoding 補順序,再推導 Q/K/V scaled dot-product attention、causal mask 與 multi-head blocks,最後接到 GPT-2。
第 21 講把隨機序列決策寫成已知 dynamics 的 MDP,以 Bellman backup 定義 value 與 Q-value,再用 value iteration 或 policy iteration 求最佳 policy。
第 22 講保留 MDP 骨架,拿掉已知 transition 與 reward 的假設;TD learning 用一步 sample 更新 value,Q-learning 再以 off-policy target 直接學最佳 action values。
第 23 講以 Qθ(s,a) 取代巨大 Q-table:先用 features 線性近似並由 squared TD error 推導 gradient update,再以 replay data 與固定 target network 形成 DQN。
Spring 2026 Lecture 24 是 MCTS,不是 Fall 2026 的 LLM post-training;本講以 selection、expansion、rollout、backup 與 UCB 分配模擬,再由 policy/value heads 與 self-play 接到 AlphaZero。
第一階段把 Lectures 1–12 串成同一條決策鏈:先定義狀態、動作與目標,再用 heuristic、loss、regularization 與 backpropagation 控制龐大搜尋空間。
第二階段不把 CNN 與 Transformer 當兩份架構圖背誦,而是透過 HW8 與 HW11 檢查表示、計算圖、訓練、遷移與生成是否真的接得起來。
第三階段把 value、policy、bootstrapping、function approximation 與 MCTS 接成 AlphaZero:network 提供先驗與估值,search 改善決策,self-play 再產生下一輪資料。
第 1 週沒有演算法。現場的導論課說明這門課教什麼:LLM 的每個元件各在哪一週學、哪些不是 LLM 的語言演算法也要學、語言為什麼難。PA0 把之後幾份作業要用的 Python 與 Jupyter 環境裝好。
2026 第 1 講從感知器、前向傳播、loss 到 gradient descent,建立後續九講共用的語言。
2026 第 2 講處理文字、音訊與時間序列中「順序會改變意義」的問題,並連到 Lab 1 的音樂生成。
2026 第 3 講從影像張量、卷積與 pooling 走到辨識系統,替 Lab 2 的 MNIST 與臉部偵測打底。
2026 第 4 講區分生成與判別問題,整理 VAE、GAN 與 diffusion 的學習目標,並接到 Lab 2 的 DB-VAE。
2026 第 5 講把 agent、environment、state、action、reward 與 policy 接成互動迴圈,理解信用分配與探索。
2026 第 6 講把深度學習放進新應用與真實限制,提醒讀者先定義資料、輸出、評量與失敗條件。
2026 第 7 講從 Asimov 的文學法則出發,討論現代 AI 安全協定的限制,以及 trace、測試資料與持續評估。
2026 第 8 講以科學發現循環為主線,說明 simulator、AI emulator 與實驗如何合作,而不是把科學簡化成通用預測。
2026 第 9 講從 GPU 記憶體壓力進入 checkpointing、offloading、ZeRO、FSDP 與多種 parallelism,理解擴展不是只加卡。
2026 先完成 PyTorch tensor、autograd 與 module 基礎,再把 ABC 樂譜切成字元序列,訓練 LSTM 逐字生成音樂。
2026 Part 1 用 dense network 與 CNN 辨識 MNIST;Part 2 以 DB-VAE 學習臉部 latent distribution,再調整訓練取樣。
2026 以 LFM2-1.2B 建立 chat template 與生成流程,用 LoRA 做風格調適,再透過 OpenRouter 與 Opik 組合 judge workflow。
Spring 2026 CS185/285 公開 25 講投影片、9 組討論課資料、5 份作業與 starter code;講課錄影已公開在 RAIL YouTube 頻道,但 Ed、Gradescope 與助教時間仍限修課生,HW4 預設 H100,不能把它包裝成零成本公開課。
07-380 Fall 2026 是 CMU AI 新制第二門首開,26 講涵蓋邏輯、規劃、優化、機率圖、生成式與系統。依 2026-09-29 課站,Lec1–9 投影片、PR1–6 筆記、Rec1–5(含解答)與 HW1–3 已公開,本站已寫完對應的 14 篇逐講導讀;Lec10 之後的投影片、HW4–7 與 Final Project 還沒釋出,整門課仍是 A2。
Harvard 校外最完整的入口是 CS50 AI,但 Summer 2026 實際沿用 2020 錄影與作業資產,OCW 作業又已更新到不同版本;CS181 Spring 2026 公開當期作業與講義、沒有當期錄影,CS182 Fall 2026 則尚未完成開課。
MIT 6.S191 的 2026 版已公開九講影片、投影片、三個 software labs 與解答,足以列為 A3 自學課;但官方執行路線需要 Google/Colab、Comet,以及 Lab 3 的 OpenRouter,校外讀者也拿不到 MIT 的學分、專案回饋與 API credit。
CS124 是 Stanford NLP 分支的第一門課:十週從斷詞、n-gram、文本分類、資訊檢索與詞嵌入,講到 LLM 與 Transformer。教科書是免費的《Speech and Language Processing》,九個作業 repo 與實作課的題目和解答都公開;預錄影片、每週複習測驗與自動評分要 Stanford 帳號。
CS221 是 Stanford 的人工智慧原理課,把 AI 排成反射、狀態、變數、邏輯四層,深度學習只是最低的那一層。可執行的 Python 講義與八份作業(含程式骨架與本機評分器)全部公開;課堂錄影、隱藏測資與作業解答拿不到。
CS224N 是 Stanford 用深度學習做自然語言處理的課:從詞向量、反向傳播講到 Transformer,之後每一堂都建立在 Transformer 之上,四份作業包含自己刻一個 decoder-only Transformer。現行投影片與作業公開,第三份作業附可以在筆電上跑的單元測試;公開的完整錄影是較早的版本,跟現行課表有落差。
CS224U 是 Stanford 的自然語言理解課,接在 CS224N 之後:教情感分析的領域適應、檢索增強的 in-context learning、進階行為評估與模型分析方法,三份作業各附一場 bake-off。教材是一個公開的 GitHub repo,投影片與線上版的全套錄影也公開;第一份作業的資料載入在新環境要自己修正才跑得起來。
CS224V 是 Stanford 的 Agentic AI 課:教怎麼用形式語意、知識圖譜與形式方法約束 LLM agent,讓它少編造,兩份作業之後以專案為主。十四堂講義、閱讀清單、作業講義與課程用到的開源系統(STORM、WikiChat、SUQL、Genie Worksheets)都公開;沒有公開錄影,公開的投影片是刻意留白的版本,作業要用的憑證也只發給選課學生。
CS224W 是 Stanford 的圖機器學習課:十九堂從節點嵌入、GNN、graph transformer、知識圖譜,講到關聯式深度學習與 GNN 加 LLM。投影片、三份書面作業與六份 Colab 都公開,可以直接下載開跑;公開錄影是 2021 年的版本,後半的新主題只有投影片,考試與自動評分拿不到。
CS228 是 Stanford 的機率圖模型課,分表示、推論、學習三塊:用圖寫下獨立性假設,把指數量級的機率計算壓成多項式。自學者拿得到的是 16 章的公開講義 cs228-notes;講次投影片、錄影與當季作業都拿不到。
CS229 是 Stanford 把機器學習的數學推導走一遍的主課。Spring 2026 的錄影公開了 17 堂,前十堂是線性模型、神經網路與非監督式學習,後七堂走到擴散模型、LLM 與用強化學習訓練推理模型。本系列一堂一篇,這篇是地圖:每堂實際教什麼、影片標題哪裡對不上、講義有而課堂沒教的去哪裡補。
CS25 是 Stanford 的 1 學分 seminar,唯一作業是出席,全程對外開放。2026 春季第六季九場講座裡,最值得看的三場是 Albert Gu 談 SSM 與 Transformer 的歸納偏誤、Charles Frye 談上千張 GPU 的推論服務、Victoria Lin 談原生多模態還沒解決什麼。
CS329Z 是 Stanford 的 AI agent 工程課:先不靠框架手刻 RAG、工具呼叫與 agent 迴圈,再看 DSPy 這類框架抽掉了什麼,兩份作業分別是做 agent harness 與設計 agent 評估。課綱、指定閱讀、前十一堂投影片與第一份作業的起始碼、資料和公開測試都拿得到;錄影要以選課身分登入 Canvas。
CS336 是 Stanford 從零打造語言模型的課:五份作業依序做 tokenizer 與 Transformer、訓練系統最佳化、scaling law、資料處理、對齊與推理 RL,沒有程式骨架,只有測試。講義、錄影、五份作業的 repo 與排行榜都公開;從第二份作業起算力要自己準備,課程贊助的算力與評分拿不到。
Berkeley 沒有獨立的大學部 AI 學位;可行路線是在 CS BA 或 EECS BS 的共同基礎上,從 CS188 的廣義 AI 或 CS189 的數學型 ML 入口,再分流到深度學習、NLP、視覺與強化學習。2025–2026 有不少 A3 公開課,但最新班次、最新穩定網址與最好用的自學版本並不總是同一個。
Stanford 沒有 AI 學位,AI 是 CS 底下的一條 track;CMU 2018 年開出全美第一個 B.S. in Artificial Intelligence,把 AI 拆成四個 cluster 並強制各修一門,還把倫理課列進畢業要求。碩士這條線則是 MSAII——不在 CS 系,在語言技術研究所,195 學分裡有 84 分是創業流程,最後要交一個能拿去募資的 capstone。查證時發現兩處官方頁面自己打架:AI Core 是 2 門還 3 門、總學分是 192 還 195。
CMU 現行 BSAI 已改成 07-280 → 07-380,再從 NLP/視覺核心與四個 AI clusters 延伸;07-380 已在 Fall 2026 首開,同學期還新開了研究所級的 11-768 AI Agents。07-280 Spring 2026 的殘留教材與 10-301/601 已能完整自學,15-281 則是仍有價值的退休舊路線。
這份地圖盤點 Stanford、CMU、MIT、UC Berkeley、Harvard 與台大在 2025–2026 年的 AI/CS 課程,將公開程度拆成 A0 課表可見、A1 課綱可見、A2 教材部分開放、A3 足以自學。課程官網存在、YouTube 播放清單存在,都不代表校外讀者真的拿得到當期影片、作業與起始碼。
MIT 自 2022 年已有正式的 6-4 Artificial Intelligence and Decision Making 學位;但校外自學時,現行學位要求、2025–2026 課站與最好用的 OCW 版本往往不是同一套。真正可行的路線,是先照 6-4 的程式、演算法、線代與機率骨架打底,再依公開程度選 6.S191、6.3900、6.4110、6.7960、電腦視覺或機器人分支。
CS103 是 Stanford 的計算數學基礎課:前半教集合、邏輯、圖與歸納法的證明寫作,後半教有限自動機、圖靈機、可判定性與 P 對 NP。投影片、作業題目、起始檔與自製講義全部公開,自動評分的題目可以在本機自測;解答、練習考題與上課錄影要 Stanford 登入。
CS107 是 Stanford 的計算機系統課:從位元、C 字串與指標,走到 x86-64 組合語言與執行期堆疊,最後自己寫 heap allocator,共七份作業。講義、作業說明與 lab 的逐題解答都公開;作業起始碼放在 Stanford 的 AFS 上,沒有校內帳號拿不到。
CS109 是 Stanford 給電腦科學學生的機率課:從計數、條件機率與隨機變數,走到推論、最大概似估計、邏輯迴歸與深度學習。互動式課程讀本、課堂習題與解答公開,每一講還附官方寫的 LLM 學習指南;第 15 講之後的投影片、作業系統與錄影校外拿不到。
CS111 是 Stanford 的作業系統原理課,分並行、記憶體管理、檔案系統三塊,共九份作業。28 份講義、九份作業說明與三年附解答的期中期末考題都公開;起始碼要能登入校內的 myth 機器,錄影在 Canvas。
CS161 是 Stanford 的演算法設計與分析課:十八講從漸近分析、分治與隨機演算法,走到圖演算法、動態規劃、貪婪法與最大流。講義、投影片、八份作業題目、附解答的討論課題目與 Python notebook 都公開;錄影、作業解答與考卷拿不到。
產生正確候選與辨認正確候選是兩種能力。系列依 Autumn 2025 課表,以一篇總覽與十七篇逐堂導讀串起十七個內容場次,其中五場客座沒有公開材料,改用講者類似題目的公開材料;影片 Part 7–9 對應原課第 8、17、20 堂。
Stanford CS 的骨架是 CS103、CS107、CS109、CS111、CS161;CS221 先修列出其中三門,另加 CS106B。本文依官方先修與編輯者建議順序排出主線,並標明公開教材與停開風險。
Stanford CS146S 的 Fall 2026 大綱把 prompting 從整整一週壓成一節,砍掉終端機與 UI 生成兩週,換上 Agent Skills、Agent-Ready Codebases、Background Agents、AI-Native Team。評分也動了:Final Project 從 80% 降到 50%,多出 30% 的 open source 貢獻。這個系列照十週逐篇讀。
把 OpenAI、Anthropic、Google 三家官方課程平台,加上 Stanford CS146S/CS336、Elements of AI、Hugging Face、MIT 6.S191、李宏毅等資源實際逐頁抓過一遍,按「不懂 AI / vibe coding / 讓它能上 production / 底層 AI」四層重排。另收 2026 年仍在更新的自學倉庫與免裝環境的互動式平台,並用「最後更新日期」篩掉星數很高但停在 2024 的名教材。結論:課幾乎全部免費,稀缺的不是課,是選課的判斷力;而第四層不會解決第三層的問題。