M1.4 去噪就是取 Posterior Mean(Tweedie)
本篇重用M1.1從鞋子猜身高:Conditional Expectation·M1.3快篩陽性:Bayes 與 Posterior·M0.3漂流的溫度計:全導數、微分穿過積分與 JVP
起點:讀數是 72.3
全班量體重。用的體重計雜訊已知:每次讀數是真實體重加上一個標準差 1 kg 的 Gaussian 抖動,沒有系統偏差。全班的體重分佈也已知——老師去年量過,大致是平均 62 kg、標準差 8 kg 的鐘形。
某位同學站上去,讀數 72.3 kg。
你對他真實體重的最佳猜測是幾公斤?
多數人會說「72.3,還能是什麼?雜訊是對稱的,往上往下機率一樣。」寫下你的答案與確定程度。
這一篇會算出:最佳猜測是 72.14,比讀數低一點。差得不多——但這個「一點」有一條精確的公式,而且當體重計更差時(雜訊 ±3 kg),最佳猜測會變成 71.0,差超過一公斤。直覺「雜訊對稱所以不用修正」漏掉了一件事,而那件事正是前面幾篇準備好的工具要處理的。
課堂提問Q1
把情境翻成數學:隨機變數是什麼?「最佳猜測」的標準是什麼?「全班分佈已知」在這個問題裡扮演什麼角色?
先想一想,再展開看整理後的答案
最直覺的答案是「猜 72.3,因為雜訊平均是零」。這句話對了一半:它正確描述了 給定 的分佈,卻回答錯了問題。
兩個隨機變數。 這位同學是從全班隨機挑出來的一個人,他的真實體重 因此是隨機的,分佈 就是全班的分佈(這是 prior)。讀數 ,、——這是 likelihood:已知 ,讀數落在 的密度是 ,一個以 為中心的鐘形。
最佳猜測的標準。 用平方誤差計分,M1.2 說最佳猜測是 :已知讀數是 ,真實體重的桶內平均。注意方向:直覺說的「雜訊平均是零」是 ——已知真實值,讀數的平均;我們要的是反過來,。這兩個條件方向相反,正是 M1.3 那個「有病的人裡多少陽性」與「陽性的人裡多少有病」的差別。
全班分佈的角色。 反過來的條件需要 prior。「讀到 72.3」的人,有的是 71 kg 的人加了 的雜訊,有的是 74 kg 的人加了 ——而全班裡 71 kg 的人比 74 kg 的人多(62 是中心,離得越遠越少),所以「讀到 72.3」的人裡偏輕的佔多數。桶內平均因此略低於 72.3。問題變成:這個修正量到底是多少、有沒有一條不必逐一算 posterior 的公式?
站在密度的斜坡上
想像全班的體重密度是一座山,山頂在 62。讀數 72.3 落在山的右坡上——往左(更輕)人比較多,往右(更重)人比較少。
雜訊把每個人的真實體重往左右隨機推 1 kg 左右。站在 72.3 這個位置往回看:從左邊被推過來的人(本來更輕)比從右邊被推過來的人(本來更重)多,因為左邊本來就人多。所以「讀到 72.3」這一群人的真實體重,重心在 72.3 的左邊——往山頂方向。
這就是修正的方向:往密度高的方向修正。修正多少取決於兩件事:坡有多斜(斜坡越陡,左右兩邊的人數差越大),以及雜訊推得多遠(推得越遠,越多遠處的人混進來)。山頂上坡度為零,讀數不用修;山腳下坡很陡、修得多。
三個工具接起來:Tweedie 公式
把「讀數」的密度寫出來。,所以
現在對 微分,三步。
第一步(微分穿過積分,M0.3)。 積分變數是 、微分變數是 ,Leibniz 法則讓 直接進到被積函數:
第二步(Gaussian 的 ,M0.0)。 。代入並把 提出:
第三步(Bayes,M1.3)。 posterior 是 。兩邊除以 ,第一項就變成用 posterior 加權的平均:
整理,就是 Tweedie 公式:
多維時一字不改, 換成 gradient:。
讀法:最佳猜測=讀數+(雜訊的 variance)×(讀數密度的相對斜率)。 「往密度高處修正」是 的方向;「坡越陡修越多」是它的大小;「雜訊越大修越多」是前面的 。三個直覺各對應公式的一個因子。
展開細節兩件值得多看一眼的事:只需要 p_Y;以及 ∇log 不在乎正規化
只需要讀數的分佈。 公式右邊出現的是 ——讀數的密度——而不是 。這表示你其實不需要老師去年量的那張表:只要有夠多的讀數(帶雜訊的那種),畫出它們的 histogram、估出斜率,就能算出每個讀數該修多少。Robbins [1] 把這個想法叫 empirical Bayes:prior 不用假設,從資料的邊際分佈裡「借」出來。Efron [2] 在這篇文章裡把它正式命名為 Tweedie’s formula,並用它解釋為什麼「被選出來的最大值」通常高估(selection bias)——被選中的讀數多半站在密度稀疏的坡上,該往回修。
不在乎正規化。 M0.0 說過 。所以估 時不需要它的積分等於 1,只要形狀對就夠——這在實務上省掉了一個最難算的量。
回到情境:72.14,還是 71.0
代數字。 全班 、雜訊 。讀數 是兩個獨立 Gaussian 的和,由 M1.0,。它的 。代 :
換一台雜訊 的體重計:,修正 ,最佳猜測 71.03 kg。
對照直覺。 「72.3 就是最佳猜測」隱含的假設是 是平的——全班每個體重的人一樣多,斜率為零,修正為零。真實的班級不是這樣。在 時直覺只差 0.16 kg,因為雜訊小、 這個因子壓住了修正;換到 時 變九倍,直覺就差了一公斤以上。直覺什麼時候夠好:雜訊的 variance 相對於 prior 的寬度很小的時候。 什麼時候不夠好:體重計差、或這位同學的讀數落在全班分佈很稀疏的尾端。
這個結論依賴什麼。 第一,雜訊是 Gaussian——第二步用了 Gaussian 的 是線性的;換別種雜訊,公式的形狀會變。第二, 要對——修正乘的是 ,所以 估成一半,修正只剩四分之一。第三,prior 要是這個人所屬的母體——如果站上去的是來訪的老師,全班的分佈就不是他的 prior,公式會把他往學生的體重拉。第四,這是平方誤差下的最佳猜測;換計分方式,答案不再是 posterior mean(M1.2)。
回到情境:模擬全班兩百萬次
import numpy as np
rng = np.random.default_rng(4); n = 2_000_000
def run(noise, sigma=1.0, ys=(66.0, 72.3, 78.0)):
X = rng.normal(62, 8, n) # 全班體重(prior)
if noise == "gauss": eps = rng.normal(0, 1, n)
else: eps = np.where(rng.random(n) < 0.95, rng.normal(0, 1, n), rng.normal(0, 10, n)) # 5% 機率跳格
Y = X + sigma*eps
emp = [X[np.abs(Y - y) < 0.1].mean() for y in ys] # 標準答案:讀數≈y 的人的平均真實體重
hist, edges = np.histogram(Y, bins=350, range=(30, 100), density=True)
c = 0.5*(edges[1:] + edges[:-1]); dlogp = np.gradient(np.log(hist + 1e-12), c)
tweedie = np.array(ys) + sigma**2*np.interp(ys, c, dlogp) # Tweedie:只用讀數的 histogram
print(f"{noise:6s} σ={sigma}: 分桶平均 {np.round(emp, 2)} Tweedie {np.round(tweedie, 2)}")
run("gauss", 1.0); run("gauss", 3.0); run("glitch", 1.0)
第一行:讀數 72.3 的分桶平均約 72.14、Tweedie 也給 72.14——公式在沒看過 的情況下,只靠讀數的 histogram 就算出了正確的修正;讀數 78 修得更多(),66 修得少(),「坡越陡修越多」兌現。第二行 :72.3 修到約 71.0。第三行是刻意違反「雜訊是 Gaussian」:體重計有 5% 的機率跳出 kg 的離譜值。這時分桶平均(標準答案)與 Tweedie 分岔——讀數 78 的人有相當比例其實是跳格的普通同學,標準答案把他們大幅往回拉,而 Tweedie 用 只修一點點。公式沒有錯,是它的前提沒了。
先消化一下
參考文獻
- Robbins, H. An Empirical Bayes Approach to Statistics. Proceedings of the Third Berkeley Symposium on Mathematical Statistics and Probability, Vol. 1, 1956.(公式的出處之一;Robbins 將其歸功於 M. C. K. Tweedie 的私人通訊。全文在 Project Euclid 的 Berkeley Symposium 專輯裡,這裡不附連結——那個站的網址結構常變。)
- Efron, B. Tweedie’s Formula and Selection Bias. Journal of the American Statistical Association 2011.(正式命名「Tweedie’s formula」、empirical Bayes 的估法、以及 selection bias 的解釋。)
- Stein, C. M. Estimation of the Mean of a Multivariate Normal Distribution. Annals of Statistics 1981.(Stein’s lemma——Gaussian 下「微分穿過期望」的同一個代數——與多維的收縮估計。)