← 回機率統計專區

Chapter 3 · 模擬與資訊

🚶 馬可夫鏈與 MCMC

沒有閉式解的後驗,怎麼畫?讓一個點按 Metropolis–Hastings 規則亂跳 — 它的軌跡會在長期下符合目標分布。

熱圖:目標分布 p(x, y) 最近 200 步軌跡 累積樣本(白點) 目前位置
🎯 目標分布
提議步長 0.50
速度(每 frame 步數) 4
🧮 即時統計
總步數0
接受率
目前位置

📖 為什麼亂跳會收斂到目標分布

很多時候我們知道一個機率密度長什麼樣(用 Bayes 算出後驗),但不知道怎麼從它抽樣。Beta-Binomial 那種共軛先驗很罕見,真實的後驗通常是奇形怪狀的。

Metropolis–Hastings (M-H) 演算法解這個問題。一個迴圈:

  1. 從目前位置 ,提議一個附近的新位置
  2. 計算接受率
  3. 以機率 α 接受新位置:;否則留在原地

為什麼這樣能對:規則設計上滿足 detailed balance — 機率密度高的地方比較容易停下,停留時間比例最終會等於目標機率比例。

🎮 動手試試

  1. 切到 單峰常態、按開始。看軌跡很快聚到峰附近,白點累積出鐘形雲。
  2. 切到 雙峰,看軌跡在兩個峰之間「跳島」。如果提議步長 σ 太小、可能很久才跳一次。這就是 mode-collapse 問題的早期版本
  3. 切到 香蕉形,把提議步長拉到 1.5 — 接受率會掉很多(提議跑出可行區域)。再拉到 0.2 — 接受率高但步太碎,要很久才能走完整個香蕉。「step size 怎麼調」是 MCMC 的核心工程
  4. 切到 甜甜圈,看軌跡沿著高密度的環走,內部低密度區域幾乎沒人去。

💡 接受率的「黃金值」

實務上,2D-3D 的 random-walk M-H 接受率調到 ~25–40% 通常效果最好(Roberts–Gelman–Gilks 1997 的著名結果,高維是 0.234)。太高表示步太小、樣本太相關;太低表示步太大、提議常被拒絕。

觀察右上的「接受率」— 你可以靠拉步長把它推向那個範圍。

🚀 在現實中

  • Bayes 後驗推論 — Stan、PyMC、JAGS 都靠 MCMC 取樣後驗
  • 物理模擬 — 統計物理裡的 Monte Carlo(Ising model、Boltzmann distribution)
  • 生成模型 — Diffusion models 反向過程其實是一種 Langevin MCMC
  • HMC / NUTS(PyMC 預設)是 M-H 的升級版,用梯度引導提議方向,接受率高得多

留言 0

留言載入中…