Skip to content

機率圖模型:把指數量級的推論壓成多項式|Stanford CS228 課程總覽

2026年8月21日1 分鐘
TL;DRCS228 是 Stanford 的機率圖模型課,分表示、推論、學習三塊:用圖寫下獨立性假設,把指數量級的機率計算壓成多項式。自學者拿得到的是 16 章的公開講義 cs228-notes;講次投影片、錄影與當季作業都拿不到。

🌏 English version

影片狀態:錄影需登入或課程授權。 影片來源與說明

CS 228: Probabilistic Graphical Models: Principles and Techniques 教的是一件在 2026 年很不流行的事:把一個大到不可能寫下來的機率分布,用一張圖壓成可以計算的東西。貝氏網路、馬可夫隨機場、變數消除、信念傳播、取樣、變分推論、參數與結構學習——一個學期十週走完表示、推論、學習三塊。

它在 Stanford 的 AI 課程地圖裡位置很特別:所有人都知道它存在,很少人真的修。障礙不在門檻。它的官方先修沒有指定任何前置課程,而隔壁的 CS 234 要求 CS229 或同等程度,低了一整層。真正的障礙是它已經兩年沒有開課,官網也凍結在最後一次開課的樣子。

這篇先回答三個自學問題:獨立性假設怎麼縮小機率表、表示/推論/學習如何接在一起,以及該從哪一章開始練。下面用一個另設的小例子算一次 Naive Bayes,再用三種圖形檢查條件獨立。先修、公開材料與歷史查核放在對應說明及文末備註;本文不取代講義的逐章數學推導。系列順序見《Stanford CS 課程導讀》地圖文。

這門課的硬事實

先修條件原文只有一句,逐字抄自 ExploreCourses 的 CS 228 條目:

Prerequisites: basic probability theory and algorithm design and analysis.

沒有指定課號、沒有要求機器學習背景、沒有要求 PyTorch。課程官網的版本多了兩個詞(statistics、programming),並補上一條自我檢查:

If you are able to comfortably complete homework 1 then you likely have all the relevant background knowledge.

課的規格:三到四學分、只在冬季開、講師 Stefano Ermon。ExploreCourses 的 2026-2027 學年頁面顯示這門課已經排進 Winter 2027,但講師欄與上課時間都還空著。

真正該注意的是它中間空掉的那一段:在兩個較早學年的頁面上,這門課的狀態都是 Last offered: Winter 2024——它連續兩個學年沒開。ExploreCourses 沒有說明原因,課程官網也沒有任何公告,這裡只有現象,沒有解釋。

順帶一提,這門課在 Stanford 的課表裡還有一個側面存在感:MATH 151 的條目寫著,CS 主修可以申請用它抵掉 CS109,條件是「預期也會修 CS 228 或 CS 229」。它被寫進了另一門課的抵免規定裡。

旁聽政策查不到。官網只留了 SCPD 學生的聯絡窗口(scpdsupport@stanford.edu),對校內旁聽一個字都沒寫。

它真正在教的那個東西:把指數壓成多項式

講義第一章用垃圾郵件分類把整門課的問題意識立起來,這是最省時間的入口。你要對 n 個英文單字的出現與否加上「是不是垃圾郵件」建一個聯合分布,得寫下 2 的 n+1 次方個數字。存不下,也估不準。

接著它做一件事:假設所有單字在給定標籤之後條件獨立(Naive Bayes 假設),分布就拆成一堆小因子的乘積,參數量掉到 O(n)。講義的說法是:機率本質上是指數大小的物件,能操作它的唯一方式就是對它的結構做簡化假設。

整門課就是把這個動作系統化。圖用來寫下你做了哪些獨立假設,這是表示;圖的性質決定你問得起哪些問題,這是推論;而學習又反過來把推論當子程序反覆呼叫。三塊互相咬住,這也是講義的目錄結構。

這個框架的實用價值在於它給了一把尺:看到任何機率模型,先問它假設了什麼獨立性,再問這個假設讓哪些查詢從指數變成多項式。 Transformer、diffusion、HMM 都能放進這把尺裡量——講義自己就這麼做了,下面會講到。

那份公開講義的實際狀態

自學者真正拿得到的東西是 cs228-notes,由 Volodymyr Kuleshov 與 Stefano Ermon 撰寫,掛在 GitHub Pages 上、MIT 授權、原始碼公開。它不是投影片的附件,是一份可以獨立讀完的教材。

規模是 16 章加一份延伸閱讀清單,對齊課程的三塊:

區塊章節
PreliminariesIntroduction、Probability Review、Real-World Applications
RepresentationBayesian networks、Markov random fields
InferenceVariable elimination、Belief propagation、MAP inference、Sampling、Variational inference
LearningDirected、Undirected、Latent variable、Bayesian、Structure
收尾The variational autoencoder

講義自己怎麼安置 Transformer 和 diffusion

「2026 年還要不要學圖模型」是讀者真正會問的問題。這裡不自己編答案,直接看材料怎麼定位自己——而課程的兩份材料給的答案不一樣。

官方課程描述沒有回答這個問題。 ExploreCourses 的條目列的應用是「語音辨識、生物模型與發現、醫療診斷、訊息編碼、視覺、機器人運動規劃」。課程官網的版本則是「機器學習、電腦視覺、自然語言處理與計算生物」。兩份都沒有提到深度學習、生成模型或 LLM。

講義有回答,而且是明確地把現代模型收編進圖模型的框架。 應用那章談 diffusion 時的說法是「Diffusion models are a class of PGMs that build upon the directed Markov chain structure」——把它當成有向馬可夫鏈結構上的一類圖模型。談語言模型時更直接:

Many modern language models do not make strong independence assumptions and instead learn a fully connected PGM with a large quantity of data in order to avoid overfitting. Recent successes in commerical language products such as ChatGPT are based on the Transformer Architecture which is a fully connected graphical model.

(commerical 是原文拼字,逐字照抄。)

這段話的立場很清楚:Transformer 不是圖模型的替代品,是圖譜上「不做獨立假設」的那個極端——用資料量換掉結構假設。這正好是第一章那把尺的另一端。

而整份講義的收尾章節是變分自編碼器,首頁自己寫明課程「從最基本的地方開始,最後從第一原理解釋變分自編碼器」。VAE 那章把 EM、mean field、取樣三種課堂學過的做法逐一試過、逐一說明為什麼行不通,才引出 Kingma 與 Welling 的 AEVB 與重參數化技巧。這是這份講義最好的一段,因為它示範了整門課的方法論怎麼推導出一個現代結果。

但要注意時間戳。 這些現代化的段落最新引用停在 2023 年(ChatGPT、Child et al. 2021 的 Very Deep VAE),之後沒有再更新。所以講義回答的是「到 2023 年為止,現代生成模型怎麼放進圖模型框架」,不是 2026 年的版本。

算一次:兩個詞的 Naive Bayes

這是本站另設的二元分類例子,不是課堂或作業的實際數據。令 Y 表示垃圾郵件,O 表示有 offer,M 表示有 meeting。假設 O、M 在給定 Y 後獨立;P(Y=1)=0.4,且 P(O=1|Y=1)=0.75、P(M=1|Y=1)=0.4;非垃圾信的兩項機率分別是 0.25、0.8。

一封信兩個詞都有,垃圾信的未正規化分數為 0.4×0.75×0.4=0.12,非垃圾信為 0.6×0.25×0.8=0.12。兩者除以總和 0.24,得到垃圾信機率 0.5。即使 offer 偏向垃圾信,meeting 的訊號也可能抵銷它;不能只看某個詞就下結論。

先自己算「有 offer、沒有 meeting」:垃圾信為 0.4×0.75×0.6=0.18,非垃圾信為 0.6×0.25×0.2=0.03,正規化後是 6/7≈0.857。核對判準是兩類機率和為 1,且你能說明為什麼要把 meeting 的條件機率取補數。這個答案只在我們假設的獨立模型裡成立;若詞在各類別內仍相關,乘積模型就可能給錯機率。

怎麼開始

今晚就能做的一件事,用來判斷你到底進不進得去:

打開貝氏網路那章,讀到 d-separation 那一節,然後蓋住頁面,自己回答三個三變數結構的獨立性——X → Z → Y、X ← Z → Y、X → Z ← Y——在 Z 有沒有被觀測的兩種情況下,X 和 Y 各是獨立還是相依。

第三個(v-structure,講義叫 explaining away)跟前兩個不同:在只有這三個節點的圖中,Z 未被觀測時,圖保證 X 與 Y 獨立;觀測 Z 後,圖不再保證兩者獨立,通常可能出現 explaining away,但特定參數仍可能讓它們獨立。 以草地為例,Z 是草濕了,X 是下雨,Y 是灑水器開過。知道草濕、又知道灑水器沒開,可能提高下雨的機率;只有再假設草濕完全由這兩個原因決定、沒有其他原因或量測雜訊,才可把雨的機率推到 1。圖形本身不給出這個數字。

核對時,chain 與 fork 在給定 Z 後保證 X、Y 條件獨立,未給定 Z 則不保證;collider 的保證方向相反。能說清楚「圖保證獨立」與「不保證獨立」的差別,就完成這個閱讀檢查;它是繼續學推論的一項基礎,不代表已掌握每種推論演算法。若仍混淆,先重讀該章的三種結構與條件化例子。

教材與版本備註

講義維護與歷史查核細節

首頁上那句「The notes are still under construction」值得單獨講,因為它會誤導人。索引頁在四個地方標了 under construction:機率複習、應用、Bayesian learning 的例子、以及結構學習的 Bayesian structure learning。把這四頁全部打開讀過之後,這些標記大多已經對不上內容了:

  • 機率複習不但寫完了,還寫得比課程需要的更深——它從 σ-algebra 與測度講起,明講材料改寫自 CS229 的機率講義與 STATS310 的講義。
  • 應用那章是整份講義最長的一章,涵蓋影像、語言、音訊、因果推論、錯誤更正碼、計算生物、生態、經濟與醫療診斷。
  • Bayesian learning 標的是「Examples(under construction)」,但那頁開頭就擺著兩個完整的例子。一個是偏心硬幣的 MLE 為什麼不會隨資料量變得更有信心,另一個是 bag-of-words 語言模型碰到未見詞時整句機率變成零。後面接共軛先驗、Beta、Dirichlet,最後把 Laplace smoothing 收成 Dirichlet 先驗的特例。
  • 唯一還真的缺的是結構學習那章。score-based、Chow-Liu、AIC/BIC、BD score、constraint-based、order search 與 ILP 都在,但沒有獨立的 Bayesian structure learning 一節。

維護狀態就誠實一點。這個 repo 有兩千多顆星、沒有被封存,但最後一次推送停在 2025 年 6 月,而且那筆改動只是一則錯字修正。再往前翻,實質內容的編輯集中在 2023 到 2024 年初。它現在還掛著幾個沒被合併的 PR,最舊的那個開在六年前(精確數字見附錄)。

腐蝕開始出現,但也有人在補。講義裡有三處推薦「一位前 CS228 學生做的互動模擬」,全部指向同一個已經下線的 pgmlearning.herokuapp.com。其中兩處已經被改成 Wayback Machine 的封存版:d-separation 與變數消除。repo 裡有一筆 2024 年初的 commit 名字就叫「Update variable elimination web app link with archived version」。只有結構學習那章的 K3 演算法模擬還指著原網址,實測回 404。

作業長什麼樣

課程官網沒有公開作業內容(都在 Ed 上),但公開了完整的時程表,而時程表本身有資訊。五份作業,寫明「both written and programming parts」,每份都圍繞一個應用。搭配十週的講次表是這樣排的:

作業開放區間對應主題
HW11/9 – 1/23機率理論、貝氏網路
HW21/24 – 2/2無向模型、學習貝氏網路
HW32/1 – 2/13精確推論、訊息傳遞
HW42/13 – 2/27MAP 推論、結構化預測、取樣
HW52/27 – 3/12參數學習、貝氏學習、結構學習

HW2 是唯一的異數:只有九天,而其他四份都是十二天以上。 它同時也是唯一一份「還沒截止、下一份就已經開放」的作業——時程表上 HW2 與 HW3 的區間直接疊在一起。課程網站沒有說明為什麼這樣排。

另一條可以直接讀的線索是加開的助教課。官網列了五場、全部在週五下午、寫明「optional but encouraged」,主題依序是 d-separation、變數消除、junction tree、Metropolis-Hastings 與 Gibbs 取樣、EM。五場全部落在第二到第七週,也就是表示與推論那一段。

規定也寫得很硬。遲交有六天額度、單份作業最多用兩天,超過之後每多一天扣 25%;官網還特地舉例算給你看:四天全押在同一份作業上,那份直接砍半。往年解答不准看,原文是「It is an honor code violation to intentionally refer to a previous year's solutions, either official or written up by another student」。評分是作業 70%、期末考 30%,另有最多 3% 加分——加分的兩種拿法之一是對 GitHub 上的課程講義送 PR。也就是說,你在網路上讀到的那份公開講義,有一部分是被課程用加分餵出來的。

期末考是一場三小時的考試。沒有期末專案——這跟同一位講師的 CS236 是相反的安排,那門課的課程專案占四成。

自學者實際拿得到什麼

逐項講,拿得到與拿不到分開:

  • 講義:拿得到。16 章全公開、MIT 授權、可以 fork。這是本篇的重點,也是這門課對自學者最大的價值。
  • 教科書:拿不到(免費的話)。指定書是 Koller 與 Friedman 的 Probabilistic Graphical Models: Principles and Techniques(MIT Press),要買。官網列的六本延伸閱讀裡,只有 MacKay 的 Information Theory, Inference, and Learning Algorithms 是作者自己放的免費線上版。Bishop、Murphy、Darwiche 三本走 Stanford 圖書館入口,校外進不去。而 Wainwright 與 Jordan 那份 Graphical Models, Exponential Families, and Variational Inference 的官方連結現在回 404——那是第九週指定要配著讀的材料。穩定的公開版本在 Princeton 課程檔案庫(2026-08-26 實測 200)。
  • 講次投影片:拿不到。官網的 syllabus 只有主題與課本章節,沒有掛任何 PDF。
  • 錄影:拿不到。官網的 Lecture Videos 指向 canvas.stanford.edu 的一個外部工具,要登入。等價替代有兩層:CMU 10-708 Probabilistic Graphical Models 的 Eric Xing Spring 2020 完整錄影(同主題、更進階,Spring 2019 版共 55 支);以及 Ermon 與 Kuleshov 本人在 2025 年 7 月出的官方教程 Probabilistic Graphical Models: A Concise Tutorial——直接以 CS228 notes 為基底改寫,是「當季內容」最權威的公開版本。
  • 作業:官方版拿不到——近年全部發在 Ed 上,公開的只有一份 LaTeX 作答模板。但歷屆題目有社群 mirror:florist-notes/CS228_PGM 收了 hw1–hw5 的題目 PDF 與 programming 部分,外加 2006–2016 五份期末考(2016 年那份含解答),自述收集自公開資源。題目年代與當前版本有落差,練習取向夠用、對答案不行。
  • 自動評分器:拿不到,Gradescope 需要課程邀請。
  • 往年課程網站:拿不到。這門課的網站不在 web.stanford.edu/class/archive/ 底下(那個路徑回 404),它是 GitHub Pages,所以只有一個版本——最新的那個。要看歷史只能翻 git commit 或 Wayback Machine。

所以自學路徑其實很清楚,也很受限:你有一份完整的教材,沒有錄影、沒有評分器;作業只能靠年代有落差的歷屆 mirror。 官網那句「能舒服地做完 HW1 就代表你的背景夠了」對校外的人是半失效的——當季的 HW1 你拿不到。

順帶一提,網路上關於這門課的二手介紹要小心。連 Ermon 自己的 Stanford 首頁也不準——那份教學列表最新只到 Winter 2022/2023,但 ExploreCourses 與課程官網都記錄了 Winter 2024 那次開課,講師是他本人。

跟 CS236 的關係:兩門課現在都停著

CS228 和 CS236: Deep Generative Models 出自同一個人。很多人以為 CS228 是 CS236 的前置,這件事在官方頁面上不成立。CS236 的先修原文是「Basic knowledge about machine learning from at least one of CS 221, 228, 229 or 230」。CS228 只是四選一的其中一個,不是必經。

比較有訊息量的是兩門課現在的狀態。ExploreCourses 上 CS236 的狀態是 Last offered: Autumn 2023,它的課程官網標題也還寫著「CS236 - Fall 2023」——跟 CS228 官網凍結在 Winter 2023-24 是同一種樣子。兩門課現在都不在開課中,差別在於前者已經排進了下一個冬季,後者在 2025-26 學年完全沒有開(ExploreCourses 的 sections 為空),但 2026-27 學年已排進冬季學期的 catalog——enrollStatus 是 Open,講師與時間地點欄位空白,屬於「系上有意開、講師未指派」的狀態而非確認開課(2026-08-26 查)。至於停開的原因,官方從未解釋,但時間軸自己會說話:兩門課最後一次都是 Ermon 本人教,而他在 2024 年 7 月起出任 diffusion LLM 新創 Inception Labs 的 CEO——停開期與創業期完全重疊(詳見文末附錄)。CS236 已排進 Spring 2027 且 PI 就是 Ermon 本人,這兩門課是暫停,不是取消。

分工倒是清楚的:CS228 教怎麼用圖寫下獨立假設、怎麼在圖上做推論與學習,結束在 VAE;CS236 從 VAE 開始,往 GAN、normalizing flow、autoregressive、energy-based 與 score-based 展開。所以講義最後那章,剛好就是兩門課的接縫。另外一個實務差異:CS236 官網明寫歡迎校內旁聽(「we are very open to sitting-in guests if you are a member of the Stanford community」),CS228 官網沒有對應的說法。

附錄:數字與查證方式

  • 學分與開課:3–4 學分、只在冬季開。ExploreCourses 的 2026-2027 學年頁面顯示 CS 228 Class # 25130、Session 2026-2027 Winter 1、In Person,講師欄與上課時間空白(2026-08-21 讀數)。2024-2025 與 2025-2026 兩個學年頁面的狀態均為 Last offered: Winter 2024。
  • 評分比重:作業 70%(五份)、期末考 30%、額外加分最多 3%。加分的兩種拿法是在 Ed 上實質回答同學問題,或對課程講義送 GitHub PR。
  • 遲交政策:六天額度,單份作業最多兩天不罰,超出後每多一天罰 25%。這是遲交規定,不是重交規定——官網沒有任何重新提交的條款。
  • 期末考時間:Winter 2024 那次是 3 月 21 日 15:30–18:30,三小時。官網目前顯示的就是這一版。CS228 沒有期末專案;作為對照,CS236 官網的比重是三份作業各 15%、期中 15%、課程專案 40%。
  • 講義 repo 數字:2,009 顆星、476 個 fork、7 個開著的 PR(2026-08-21 由 GitHub API 讀取)。repo 建於 2017-01-10,最後一次推送 2025-06-24(PR #227,機率複習的錯字修正)。最舊的未合併 PR 開於 2020-03-16。
  • 講義 under construction 標記:索引頁標了四處(Probability Review、Real-World Applications、Bayesian learning 的 Examples、Structure learning 的 Bayesian structure learning)。四頁均已逐頁讀過,前三處內容存在且完整,第四處確實沒有對應章節。
  • 死連結(皆為 2026-08-21 實測):結構學習章節的 K3 互動模擬 pgmlearning.herokuapp.com/k3LearningApp 回 HTTP 404;d-separation 與變數消除兩章的同系列連結已改指 Wayback 封存版,可開。課程官網延伸閱讀清單裡的 Wainwright & Jordan PDF www.eecs.berkeley.edu/~wainwrig/Papers/WaiJor08_FTML.pdf 回 HTTP 404,people.eecs.berkeley.edu 的常見替代路徑同樣 404,本篇未能找到該檔的官方有效鏡像。
  • 課程官網位置:cs228.stanford.edu 實際導向 ermongroup.github.io/cs228,頁首標示 Winter 2023-24。web.stanford.edu/class/archive/cs/cs228/ 回 404,這門課沒有 Stanford 封存區的歷屆版本。

未能確認的項目:(1) CS228 為何連續兩個學年停開、CS236 為何自 Autumn 2023 後未再開課——官方從未說明,但 2026-08-26 的查核把時間軸對上了:ExploreCourses XML 確認最後一次開課兩門都是 Ermon 本人教(Winter 2024 的 CS228 有 133 人、Autumn 2023 的 CS236 有 321 人),而他 2024 年 7 月起擔任 diffusion LLM 新創 Inception Labs 的 CEO,2025 年 2 月出 stealth、11 月拿 $50M seed(Menlo Ventures 領投),投資方訪談裡直接說三位創辦人「walk away from tenure」——停開期與創業期完全重疊。Stanford 的 faculty startup 政策也明文要求教授接管理職應休假(leave of absence)。這是間接證據最強的解釋,但沒有任何官方來源明文連結兩者。課程本身沒有死掉:CS236 已排進 Spring 2027 且 PI 就是 Ermon,CS228 排 Winter 2027 但講師 TBD。(2) Winter 2027 的授課者是誰,ExploreCourses 的講師欄目前空白。(3) 五份作業的實際題目與難度分布,作業內容鎖在 Ed 上,本篇對作業的描述全部來自公開的時程表與評分政策,不是作業本身。

課程影片來源

官方課程網站(cs228.stanford.edu,導向 ermongroup.github.io/cs228,頁首標示 Winter 2023-24;2026-10-10 即時讀取)的 Lecture Videos 連結指向 canvas.stanford.edu 的外部工具;我實際開啟,被導向 Stanford 登入頁,確認需要修課帳號。搜尋也沒有找到這門課的公開 YouTube 或 OCW 釋出,所以不嵌入,也不以其他課程的影片冒充。

課程與錄影入口:

查核日期:2026-10-10。

更新紀錄

  • 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
  • 2026-10-10:重查影片狀態。即時開啟官方站的 Lecture Videos 連結,確認導向 Canvas 登入頁;沒有找到公開釋出,維持需登入,並把來源說明改成實測結果。

參考資料