吉布斯取樣(Gibbs sampling)
/ GIBZ SAM-pling /
吉布斯取樣,是馬可夫鏈蒙地卡羅一種簡單而流行的變體,適用於這種情形:你一下子有許多未知量,把它們一齊更新很難,但「固定住其餘的、一次只更新一個」卻很容易。這個想法,好比去調一屋子彼此影響的恆溫器:你沒法一口氣把它們全都設到完美,於是你假裝其餘的都已穩定,先撥一個,再挪到下一個、再下一個,如此循環往復。每轉一圈,都把整個系統往平衡又推近一點。
具體說來,你在各個變數間循環,對每一個,都在「以其餘所有變數的當前取值為條件」的分布裡,抽出一個新的隨機值。你從不必直接對那個糾纏的聯合分布整體取樣——只需對這些更容易的、一次一個變數的小塊下手。一圈又一圈,你所經過的那一串完整配置,便成為「你真正想要的那個聯合分布」的有效樣本——恰如一般MCMC所許諾的那樣。
它為何重要:吉布斯取樣是擬合分層貝氏模型、馬可夫隨機場與主題模型的一匹默認主力,備受喜愛,因為它不需要手調步長——每一個被提議的移動都被自動接受。它誠實的弱點,在變數之間強相關時便顯露出來:一次只改一個,逼得取樣器只能邁著細碎的、被對角線卡住的步子,就像想穿過一個房間卻只准朝南北或東西方向挪動。它於是探索得慢得令人發指,可能要走極其大量的迭代才能覆蓋整個空間——儘管每一步本身既便宜又簡單。
兩個一同變動的未知量——比方說一個人真實的身高與體重,二者相關。吉布斯取樣固定住體重,依它抽一個新的身高;再固定住那個身高,依它抽一個新的體重;如此反復。倘若身高與體重緊緊相連,每一步便只能筆直向上或筆直橫移,於是取樣器只好沿著那團對角線的雲霧慢慢曲折前進,而非大步穿越它。
吉布斯一次只更新一個變數,所以強相關的變數會讓它曲折緩行,而不能自由移動。
吉布斯取樣的誘人之處,在於它沒有調節旋鈕、又對每一步照單全收,但這份便利也藏著它的致命弱點:當變數高度相關時,「一次一個」的更新混合得極慢,這條鏈可能需要遠比表面看上去多得多的迭代。