吉布斯抽樣器(Gibbs sampler)
/ GIBZ /
假設你的未知不是一個數字而是同時好幾個——比如一個均值與一個變異數,或一個模型裡上千個參數。一口氣對整個聯合分布抽樣很難,但你常常能輕鬆地對「每一個」座標抽樣,只要你假裝其他的都已知。吉布斯抽樣器利用的正是這點:它一次一個地輪過各變數,給定其餘所有變數的當前值,從每個變數的完整條件分布重新抽出它。
具體地說,要對 (X, Y, Z) 的聯合分布抽樣,你重複一個掃描:用最新的 Y 與 Z,從 P(X given Y, Z) 抽出新的 X;再用剛更新的 X,從 P(Y given X, Z) 抽出新的 Y;再從 P(Z given X, Y) 抽出新的 Z。一個完整掃描更新每個座標;多個掃描產生一個序列,其分布收斂到聯合目標。它是梅特羅波利斯-黑斯廷斯的一個特例,其中提議就是那個完整條件本身——而這個選擇使接受機率恰好為 1,所以每個提議的移動都被接受。它行得通的原因是,那些完整條件與聯合彼此一致,所以依它們操舵會把鏈驅向正確的平穩分布。
吉布斯廣受喜愛,是因為每一步都從一個一維(或低維)的條件抽樣,那往往是個你能直接抽的標準分布——不必調校、不會被拒絕。它與共軛先驗完美搭配,那裡的條件會有封閉形式。誠實的提醒:跟所有 MCMC 一樣,抽樣是相關的,需要暖機與收斂檢查;而當變數彼此強相關時,吉布斯混合得很差——它只能沿著座標軸踏步,所以在一條窄窄的對角脊上會爬得很慢。而且它需要每一個完整條件都能拿來抽樣;只要有一個是棘手的,單靠吉布斯就不適用。
配適一個均值 mu 與精度 tau 都未知的常態模型。給定 tau,mu 的條件是一個你能直接抽的常態;給定 mu,tau 的條件是一個你能直接抽的伽瑪。所以你交替進行:給定當前 tau 抽 mu,給定新的 mu 抽 tau,重複。這串 (mu, tau) 配對的鏈完全不需拒絕就收斂到它們的聯合後驗。
輪過各變數,從每個的完整條件重新抽出它;每個移動都被接受。
吉布斯只沿著座標軸踏步,所以當變數強相關時混合得痛苦地慢;重新參數化以降低相關,往往比跑得更久更有用。