ギブスサンプリング完全ガイド:条件付き分布から実装・応用まで

はじめに — ギブスサンプリングとは何か

ギブスサンプリング(Gibbs sampling)は、確率分布からのサンプリングを目的とするマルコフ連鎖モンテカルロ法(MCMC: Markov Chain Monte Carlo)の代表的手法の一つです。多次元の複雑な同時分布 p(x1, x2, …, xd) のサンプルを得る際に、各変数の条件付き分布 p(xi | x−i)(x−i は xi 以外の変数群)から順次サンプリングすることで、元の同時分布に従うマルコフ連鎖を構成します。

起源と位置づけ

  • 初期のアイデアは物理学のギブス分布(Gibbs distribution)に由来し、画像復元などの分野で Geman & Geman により確率的緩和法として提案されました(1984)。
  • 統計学におけるサンプリング手法としての普及は、Gelfand & Smith (1990) による紹介が大きな契機となり、ベイズ推定や階層モデルで広く用いられるようになりました。
  • ギブスサンプリングは MCMC の一種であり、メトロポリス法(Metropolis)と比べると、各ステップで受容判定が不要になる点(完全条件分布から直接サンプリングできる場合)で扱いやすいことが多いです。

基本アルゴリズム(単純版)

d 次元確率変数 X = (X1, X2, …, Xd) を考える。ギブスサンプリングは以下の反復を行うことでマルコフ連鎖を生成する。

  • 初期値 x(0) = (x1(0), …, xd(0)) を与える。
  • t 回目の反復で i = 1 から d まで順に(あるいはランダム順に)次を行う:
    • xi(t+1) ~ p(xi | x1(t+1), …, x{i-1}(t+1), x{i+1}(t), …, xd(t))
  • この操作により (x1(t+1), …, xd(t+1)) が得られる。

条件付き分布が閉形式(解析的にサンプリング可能)であれば各ステップは直接サンプリングでき、受容判定は不要です。

理論的性質(簡潔に)

  • 生成される連鎖は詳細釣り合い(detailed balance)を満たし、元の同時分布を不変分布(stationary distribution)として持つ。
  • 連鎖が既約(irreducible)かつ非周期(aperiodic)であれば、漸近的に任意の初期値から不変分布へ収束する(エルゴード性)。
  • 実務上は「収束が遅い(ミキシングが悪い)」ことが問題になる。特に変数間に強い相関がある場合、各次元を逐次更新する単純ギブスは効率が悪くなる。

具体例(2変量正規分布)

簡単な解析例として、平均ベクトル μ = (μ1, μ2)、分散共分散行列 Σ = [[σ11, σ12],[σ12, σ22]] の二次元正規分布を考えると、条件付き分布は正規分布として明示的に得られます。

  • X1 | X2 = x2 ~ N( μ1 + (σ12/σ22)(x2 − μ2), σ11 − σ12^2/σ22 )
  • X2 | X1 = x1 ~ N( μ2 + (σ12/σ11)(x1 − μ1), σ22 − σ12^2/σ11 )

この場合、ギブスサンプリングは解析的に実装可能で、サンプル列は同時正規分布に収束します。ただし相関が高いと交互更新は遅くなることがあります。

代表的な応用例

  • ベイズ線形回帰(共役事前分布を用いると回帰係数と分散の条件付き分布が解析的に得られる)
  • 潜在変数モデル(混合モデル、トピックモデル LDA 等)— ラベルや潜在変数を条件付きでサンプルすることで学習が可能
  • マルコフ確率場や画像復元(ピクセルごとの条件付き分布に基づく更新)

バリエーションと拡張

  • ブロックギブス(Block Gibbs): 変数をブロック化して一括でサンプリング。相関の強い変数群を同時に更新することでミキシングを改善する。
  • コラプスト(Collapsed Gibbs): ある変数を解析的に周辺化(積分)してから残りでギブスを行い、効率を向上させる手法。LDA の学習で有名。
  • メトロポリス内挿(Metropolis-within-Gibbs): 条件付き分布が直接サンプルできない場合、各ブロックでメトロポリス・ステップを行う。
  • オーバーリラクゼーション(Overrelaxation)や系統的サンプリング順の変更、適応手法など実用上の改良が多数提案されている。

実務上の注意点と対処法

  • 初期化とバーンイン: 連鎖の初期状態に依存するため最初の数千〜数万サンプルを破棄する(バーンイン)。複数チェーンを異なる初期値で走らせるのが推奨。
  • 収束診断: トレースプロット、自己相関、Gelman–Rubin 統計量(R-hat)、有効サンプルサイズ(ESS)などを用いる。
  • 間引き(thinning): 自己相関を減らすために間引く方法だが、必ずしも有効ではなく計算効率の観点から推奨されない場合が多い。代わりに長いチェーンを得て ESS を評価する方が良い。
  • ミキシング改善: ブロック化、再パラメータ化(重合変数のスケーリング等)、スライスサンプリングやハミルトニアンモンテカルロ(HMC)など別手法の検討。
  • 数値的扱い: 連続分布の条件付きが切り捨てられた正規分布(truncated normal)や多峰性がある場合、サンプリング方法を工夫する必要がある。

実装上のヒント

  • 可能であれば共役性を利用して解析的な条件付き分布を導出する(計算が簡潔かつ高速)。
  • 各ステップは独立に発生する乱数生成が中心となるため、乱数生成器の品質とシード管理を適切に行う。
  • 計算負荷の高いモデルではベクトル化や並列チェーン実装、C++/Rust 等でのホットスポット最適化を検討する。
  • 条件付き分布から直接サンプルできない場合は、Metropolis-Hastings や slice sampling をそのステップに組み込む(Metropolis-within-Gibbs)。

ギブスを使うべき場面と代替

ギブスサンプリングは条件付き分布が取り出しやすいモデル(共役なベイズモデル、潜在変数モデルなど)で特に有効です。一方、高次元で変数間に強い線形相関がある場合や条件付き分布が複雑でサンプリング困難な場合は、ハミルトニアンモンテカルロ(HMC)や確率的変分推論(SVI)、再パラメータ化を含む別手法を検討すると良いでしょう。

まとめ — 長所と短所

  • 長所: 実装が比較的単純、条件付き分布が解析的に得られれば効率的、潜在変数モデルに親和性が高い。
  • 短所: 変数間の強い相関でミキシングが悪くなる、条件付き分布が得られない場合は代替が必要、収束診断が重要。

参考文献