CMU 07-380 AI & ML II 的第 8 講 MAP 在 2026 年 9 月 21 日(週一)上課,是 Schedule 上「Reasoning Under Uncertainty」這個段落的第一講。前面三講都在解確定性的優化問題(LP、ILP、PCA),這一講開始把機率放回來:資料不夠時,我們手上還有什麼資訊可以用?答案是先驗(prior),而把先驗放進估計的方法就是 maximum a posteriori(MAP)。
本文依 2026-09-29 的課站狀態寫成,課站標明 schedule subject to change。
官方材料與讀取範圍
我實際打開並讀過的材料:
- Lec8 投影片 pdf(另有 pptx 與 inked 版)。講師是 Pat Virtue 與 Mohammad Salameh。
- Pre-reading PR5 MAP.pdf:trick coin 與「修課時數」兩個完整例子。
- Desmos:Bernoulli Likelihood and Posterior,可以自己調先驗與擲幣結果。
- Recitation 5 與解答(9/25 週五,和 Quiz 2 同一堂)。
- 課站指定的 07-280 背景筆記:Notation Guide、Probability Background、MLE Pre-reading;延伸讀物是 MML 9.2.3–9.2.4 與 Mitchell 的 Estimating Probabilities。
讀取限制要先講清楚。投影片的文字層只有標題、公式骨架和 poll 題目,「Regularization and MAP」那幾頁的推導大多是課堂手寫,inked 版的墨跡是圖片,我沒有逐頁轉錄。所以下面凡是寫「投影片」的地方,只代表投影片上印出來的文字。Pre-reading checkpoint 在 Canvas 上,只限校內;課站沒有錄影連結。以本站 A0–A3 分級來看,這一講的材料(投影片、筆記、recitation 與解答)已經到 A3 的程度,整門課還是 A2(進行中)。
承上問題:MLE 在資料少的時候會出事
MLE 本身不在這裡重講,請先看 07-280 Lecture 16 的 MLE 導讀。只需要記得一件事:MLE 找的是讓 p(D|θ) 最大的 θ,它只看資料。
PR5 開頭那張 MLE/MAP 對照表把問題講得很直接:沒有先驗假設時,蒐集資料前我們對參數一無所知;資料少的時候過擬合的風險比較大。MAP 的立場相反:一筆資料都沒有,也能先有一個估計值,代價是要多做一個建模假設(先驗)。如果先驗假設大致正確,少量資料就能得到不錯的估計。
Bayes rule 有兩種用法,這一講用第一種
投影片把 Bayes rule 並排寫成兩種:
p(θ|D) = p(D|θ) p(θ) / p(D) ← 資料與參數:這一講
p(y|x) = p(x|y) p(y) / p(x) ← 輸入與輸出:下一講的生成式模型
第一種的三個名詞分別是 posterior p(θ|D)、likelihood p(D|θ)、prior p(θ)。求最佳參數時 p(D) 跟 θ 無關,可以丟掉,寫成:
p(θ|D) ∝ p(D|θ) p(θ)
Recitation 5 的概念題也是問這件事:為什麼算 MAP 可以不管 p(D)?因為我們對 θ 取 argmax,p(D) 只是常數。
第二種寫法下一講才會用到,但這一講先把它擺出來,是為了讓你意識到同一條公式、兩種角色。Lecture 9 生成式模型會從這裡接上。
可重做的例子一:trick coin 的後驗表
PR5 的故事是這樣:你在玩具店買了一枚「隨機配重的魔術硬幣」,還沒開始擲,就在垃圾桶撿到店家的進貨單,上面列了五種硬幣和數量。換算成先驗,正面機率 ϕ 只有五種可能:
| ϕ | 0.0 | 0.2 | 0.5 | 0.8 | 1.0 |
|---|---|---|---|---|---|
| p(ϕ) | 0.20 | 0.25 | 0.40 | 0.05 | 0.10 |
一次都還沒擲,MAP 就是 ϕ = 0.5(先驗最大,筆記寫的是 80/200 = 0.4)。之後每擲一次,就在 likelihood 多乘一個因子:正面乘 ϕ,反面乘 (1−ϕ)。最後除以所有 ϕ 的總和 Z 做正規化。
這段程式可以直接重現筆記裡 N = 0、1、5 的三張表:
prior = {0.0: 0.20, 0.2: 0.25, 0.5: 0.40, 0.8: 0.05, 1.0: 0.10}
def posterior(flips):
unnorm = {}
for phi, p in prior.items():
like = 1.0
for f in flips:
like *= phi if f == "H" else (1 - phi)
unnorm[phi] = p * like
Z = sum(unnorm.values())
return {phi: v / Z for phi, v in unnorm.items()}, Z
for flips in ["", "H", "HTTTT"]:
post, Z = posterior(flips)
print(flips or "{}", round(Z, 6), {k: round(v, 6) for k, v in post.items()})
HTTTT 的結果是 Z = 0.033044,後驗在 ϕ = 0.2 最大(0.619780),和筆記一致。讀這張表時注意三件事:
- 擲出第一個正面,ϕ = 0.0 的後驗立刻歸零,因為 likelihood 乘上了 0。
- 只擲一次正面時,MAP 還是 0.5(0.512821)。一筆資料蓋不過先驗。
- 再加四個反面,MAP 就移到 0.2。資料越多,likelihood 的因子越多,先驗的影響越小。
投影片的 Poll 4 問的正是第三點:資料量增加時,MAP 會怎樣、後驗會靠近誰。Recitation 5 的解答給出同樣的結論:資料越多,先驗的相對影響越小,MLE 和 MAP 會收斂到同一個值。
估計食譜:MAP 只比 MLE 多一項
投影片和 PR5 都把兩者寫成四步驟,差別只在第一步:
| 步驟 | MLE | MAP |
|---|---|---|
| 1 | 寫出 likelihood `p(D | θ)` |
| 2 | `J(θ) = −log p(D | θ)` |
| 3 | 求 ∂J/∂θ | 同左 |
| 4 | 令導數為 0 解出 θ,或用(隨機)梯度下降 | 同左 |
把第二步展開就能看到重點:
J(θ) = −log p(D|θ) − log p(θ)
第一項是原本的損失,第二項是先驗貢獻的額外項。後面講正則化時,全部都從這一行出發。
trick coin 只有五個候選值,可以逐一算後驗再挑最大的;參數連續時沒辦法窮舉,才需要第三、四步的微分或梯度下降。
可重做的例子二:Beta 先驗與廣告點擊率
投影片接著介紹 Beta 分佈:
p(ϕ; α, β) = ϕ^(α−1) (1−ϕ)^(β−1) / B(α, β)
Bernoulli likelihood 乘上 Beta 先驗,後驗還是 Beta:Beta(α + N_{y=1}, β + N_{y=0})。先驗和後驗屬於同一族,就叫 conjugate prior。投影片還列了另外兩組:Categorical 配 Dirichlet、Gaussian 配 Gaussian。投影片給的記憶法是「把 Beta 想成已經看過 α−1 個正面、β−1 個反面」。它也點出特例:先驗是均勻分佈時,MLE 和 MAP 完全相同。
Recitation 5 第 2 題把這些接成一題計算。廣告給 N 個人看,N₁ 人點了。MLE 是 N₁/N。加上 Beta(α, β) 先驗後,負 log 後驗整理成:
argmin −(N₁ + α − 1) log ϕ − (N − N₁ + β − 1) log(1 − ϕ)
令導數為 0 得到:
ϕ̂_MAP = (N₁ + α − 1) / (N + α + β − 2)
題目給 N = 100、N₁ = 10,並依「一般廣告點擊率約 6%」設 α = 7、β = 95,所以 MAP = 16/200 = 0.08,MLE 則是 0.10。解答沒有說哪個一定比較好:如果這支廣告和過去那些 6% 的廣告很像,MAP 比較可信;如果投放情境不同,MLE 可能比較合適。先驗是一個需要辯護的假設。
打開 Desmos 的 Bernoulli 後驗圖調 α、β 和擲幣次數,比看公式更快建立直覺。
可重做的例子三:高斯先驗與修課時數
PR5 第 5 節是連續參數版。你問了四位同學一門系統課每週花多少小時,得到 D = {18, 20, 14, 10}。過去幾年的課程評鑑平均是 ν = 23.9、標準差 τ = 1.56,拿來當 μ 的高斯先驗。照食譜推到最後:
μ̂_MAP = (σ² ν + τ² Σx⁽ⁱ⁾) / (σ² + N τ²)
筆記接著做了一個「有點天真」的假設 σ = τ,式子就簡化成把先驗平均當成多一筆資料:(ν + Σx⁽ⁱ⁾) / (1 + N)。這個直覺和 Beta 的「假想擲幣」是同一件事。
動手驗算時會發現一個小筆誤:筆記最後寫 (23.9 + 18 + 20 + 14 + 10) / 5 = 17.8,實際算出來是 85.9 / 5 = 17.18。結論不變:MLE 是 15.5,先驗把估計往 23.9 拉了一點。
線性迴歸:MAP 就是正則化
投影片後半回到線性迴歸。先複習機率解釋:假設 y ~ N(wᵀx + b, σ²),conditional MLE 就是最小化平方誤差(07-280 已推過,見 Lecture 7 線性迴歸與 Lecture 16)。接著投影片問:用多項式特徵做迴歸時,我們想對參數做什麼假設?然後在權重上放高斯先驗。
Recitation 5 的「Regularization and MAP」小表把對應關係寫得最清楚:
| 正則化 | 懲罰項 | 等價的先驗 |
|---|---|---|
| Ridge regression | ‖w‖₂² | w_j ~ N(0, τ²) |
| Lasso | ‖w‖₁ | w_j ~ Laplace(0, b) |
為什麼成立?回到食譜第二步那一行 J = −log p(D|w) − log p(w)。下面是我照食譜推的高斯先驗版(投影片這幾頁是手寫,我沒有照抄課堂推導):
−log p(D|w) = (1/2σ²) Σ (y⁽ⁱ⁾ − wᵀx⁽ⁱ⁾)² + 常數
−log p(w) = (1/2τ²) ‖w‖₂² + 常數
乘上 2σ²: Σ (y⁽ⁱ⁾ − wᵀx⁽ⁱ⁾)² + (σ²/τ²) ‖w‖₂²
所以 ridge 的 λ 就是 σ²/τ²。先驗越窄(τ 越小),λ 越大,權重被壓得越緊。這就是 07-280 Lecture 10 正則化的機率來源:你以為在調一個懲罰係數,其實是在選一個先驗。
Laplace 先驗對應 L1 的推導,是 HW3 書面第 4 題要你自己做的,這裡不寫。
Recitation 5 還整理了什麼
Recitation 5 前三節都是 MAP:定義、點擊率題、三題概念題(為什麼忽略 p(D)、資料增加時兩者怎麼變、什麼時候兩者相同)。第三題的解答值得記下來:先驗是均勻分佈時兩者相等,所以可以把 MLE 看成 MAP 的一個特例。
第 5 節有一張 2×2 表,把目前學過的模型分到「判別式/生成式 × MLE/MAP」四格:
| MLE | MAP | |
|---|---|---|
| 判別式 | 線性迴歸、邏輯迴歸、帶多項式特徵的邏輯迴歸 | 加 L2 的線性迴歸、加 Laplace 先驗的邏輯迴歸 |
| 生成式 | Naive Bayes | 加 Laplace smoothing 的 Naive Bayes |
後半的 Gaussian Discriminant Analysis 和 Naive Bayes 屬於下一講的內容,放到 Lecture 9 導讀再談。這裡只先記一個容易搞混的點:解答特別說明 Laplace smoothing 的「Laplace」跟 Laplace 分佈無關;對 Bernoulli 來說,Laplace smoothing 等價於一個 Beta 先驗。
延伸對照
- MLE 的完整推導:07-280 Lecture 16。
- 從損失函數角度看正則化:07-280 Lecture 10。
- 上一講是 Lecture 7 PCA 與低秩優化,下一篇是 HW3 導讀,它把 LP、ILP、PCA 和這一講的 MAP 收在同一份作業裡。
今晚可以做的動作
- 跑上面那段 trick coin 程式,把擲幣序列改成
HHHHH,看 MAP 什麼時候從 0.5 跳到 1.0。 - 手算 Recitation 5 的點擊率題,再把 α、β 同時乘以 10(先驗更有把握),看 MAP 往 0.06 靠多少。
- 自己推一次高斯先驗等價 L2,確認 λ = σ²/τ²;做完再去寫 HW3 的 Laplace 版。
參考資料
- CMU 07-380 Fall 2026 課站(Schedule、Recitation、Policies)
- 07-380 Lec8 MAP 投影片 pdf
- 07-380 Pre-reading:Maximum a posteriori Estimation(PR5)
- 07-380 Recitation 5、Recitation 5 Solutions
- Desmos:Bernoulli Likelihood and Posterior
- 07-280 Notation Guide、07-280 Probability Background、07-280 MLE Pre-reading
- Tom Mitchell, Estimating Probabilities: MLE and MAP
- Deisenroth, Faisal, Ong, Mathematics for Machine Learning
- CMU 07-380 Fall 2026 總覽
Loading...