Skip to content

CMU 07-380 Lecture 8 導讀:MAP,先驗怎麼進入估計,為什麼等價於正則化

2026年9月29日1 分鐘
TL;DRLecture 8 把 MLE 的 argmax p(D|θ) 換成 argmax p(θ|D):先驗 p(θ) 乘進 likelihood,取負 log 之後就變成目標函數裡多出來的一項。用 trick coin 看先驗怎麼被資料蓋過,用 Beta 先驗算出點擊率,再把線性迴歸的高斯先驗、Laplace 先驗對到 L2、L1 正則化。

🌏 English version

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。

官方材料與讀取範圍

我實際打開並讀過的材料:

讀取限制要先講清楚。投影片的文字層只有標題、公式骨架和 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.00.20.50.81.0
p(ϕ)0.200.250.400.050.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),和筆記一致。讀這張表時注意三件事:

  1. 擲出第一個正面,ϕ = 0.0 的後驗立刻歸零,因為 likelihood 乘上了 0。
  2. 只擲一次正面時,MAP 還是 0.5(0.512821)。一筆資料蓋不過先驗。
  3. 再加四個反面,MAP 就移到 0.2。資料越多,likelihood 的因子越多,先驗的影響越小。

投影片的 Poll 4 問的正是第三點:資料量增加時,MAP 會怎樣、後驗會靠近誰。Recitation 5 的解答給出同樣的結論:資料越多,先驗的相對影響越小,MLE 和 MAP 會收斂到同一個值。

估計食譜:MAP 只比 MLE 多一項

投影片和 PR5 都把兩者寫成四步驟,差別只在第一步:

步驟MLEMAP
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」四格:

MLEMAP
判別式線性迴歸、邏輯迴歸、帶多項式特徵的邏輯迴歸加 L2 的線性迴歸、加 Laplace 先驗的邏輯迴歸
生成式Naive Bayes加 Laplace smoothing 的 Naive Bayes

後半的 Gaussian Discriminant Analysis 和 Naive Bayes 屬於下一講的內容,放到 Lecture 9 導讀再談。這裡只先記一個容易搞混的點:解答特別說明 Laplace smoothing 的「Laplace」跟 Laplace 分佈無關;對 Bernoulli 來說,Laplace smoothing 等價於一個 Beta 先驗。

延伸對照

今晚可以做的動作

  1. 跑上面那段 trick coin 程式,把擲幣序列改成 HHHHH,看 MAP 什麼時候從 0.5 跳到 1.0。
  2. 手算 Recitation 5 的點擊率題,再把 α、β 同時乘以 10(先驗更有把握),看 MAP 往 0.06 靠多少。
  3. 自己推一次高斯先驗等價 L2,確認 λ = σ²/τ²;做完再去寫 HW3 的 Laplace 版。

參考資料