サンプリングアルゴリズム
2次元確率分布のハミルトンモンテカルロサンプリング
ハミルトンモンテカルロ アルゴリズム(元々は ハイブリッドモンテカルロ と呼ばれていました )は、直接サンプリングすることが難しい目標 確率分布 に 分布 が収束する ランダムサンプル のシーケンスを取得するための マルコフ連鎖モンテカルロ法です。このシーケンスは、 期待値 や モーメント などの目標分布の 積分を 推定するために使用できます 。
ハミルトンモンテカルロは 、 メトロポリス-ヘイスティングスアルゴリズムのインスタンスに対応し、 時間可逆 で体積を保存する数値積分器(通常は リープフロッグ積分器)を使用してシミュレートされた ハミルトン動力学の 進化 により、状態空間内の新しい点への移動が提案されます。メトロポリス-ヘイスティングスアルゴリズムで ガウスランダムウォーク提案分布を使用する場合と比較して、ハミルトンモンテカルロは、シンプレクティック積分器を使用する場合のシミュレート された ハミルトン動力学の近似 エネルギー保存 特性により、高い受け入れ確率を維持する遠い状態への移動を提案することにより、連続するサンプル状態間の相関を減らします。相関が減るということは、特定の モンテカルロ 誤差に対するターゲット確率分布に関して積分を近似するために必要な マルコフ連鎖 サンプルが少なくなることを意味します 。
このアルゴリズムはもともと、Simon Duane、Anthony Kennedy、Brian Pendleton、Duncan Rowethによって1987年に 格子量子色力学 の計算用に提案されました。 [1] 1996年に、 Radford M. Nealは 、この手法をより広範な統計問題、特に 人工ニューラルネットワーク に使用できることを示しました。 [2]しかし、 ベイジアンネットワーク の 勾配を 提供しなければならないという負担により、 統計学やその他の定量的分野でのアルゴリズムの幅広い採用は遅れ、2010年代半ばに Stanの開発者がHMCを 自動微分 と組み合わせて実装しました 。 [3]
アルゴリズム
サンプルするターゲット分布が ( ) であり 、サンプルのチェーンが 必要であるとします。
ふ
(
x
)
{\displaystyle f(\mathbf {x} )}
x
∈
R
d
{\displaystyle \mathbf {x} \in \mathbb {R} ^{d}}
d
≥
1
{\displaystyle d\geq 1}
バツ
0
、
バツ
1
、
バツ
2
、
…
{\displaystyle \mathbf {X} _{0},\mathbf {X} _{1},\mathbf {X} _{2},\ldots }
ハミルトン 方程式 は
d
x
私
d
t
=
∂
H
∂
p
私
そして
d
p
私
d
t
=
−
∂
H
∂
x
私
{\displaystyle {\frac {{\text{d}}x_{i}}{{\text{d}}t}}={\frac {\partial H}{\partial p_{i}}}\quad {\text{and}}\quad {\dfrac {{\text{d}}p_{i}}{{\text{d}}t}}=-{\dfrac {\partial H}{\partial x_{i}}}}
ここで 、およびは それぞれ 位置ベクトル と 運動量 ベクトルの 番目の成分 であり、は ハミルトニアンである。 対称かつ正定値の
質量行列 を とすると、ハミルトニアンは
x
私
{\displaystyle x_{i}}
p
私
{\displaystyle p_{i}}
私
{\displaystyle i}
H
{\displaystyle H}
ま
{\displaystyle M}
H
(
x
、
p
)
=
あなた
(
x
)
+
1
2
p
T
ま
−
1
p
{\displaystyle H(\mathbf {x} ,\mathbf {p} )=U(\mathbf {x} )+{\dfrac {1}{2}}\mathbf {p} ^{\text{T}} M^{-1}\mathbf {p} }
ここで は 位置エネルギー です 。ターゲットの位置エネルギーは次のように与えられます。
あなた
(
x
)
{\displaystyle U(\mathbf {x} )}
あなた
(
x
)
=
−
行
ふ
(
x
)
{\displaystyle U(\mathbf {x} )=-\ln f(\mathbf {x} )}
これはボルツマン因子 から来ています。 指数確率の重みは明確に定義する必要があるため、この定式化では ハミルトニアンは無次元であることに注意してください 。たとえば、有限 温度 でのシミュレーションでは、因子 ( ボルツマン定数 ) は直接および に吸収されます 。
H
{\displaystyle H}
経験
(
−
H
)
{\displaystyle \exp \left(-H\right)}
T
{\displaystyle T}
け
B
T
{\displaystyle k_{\text{B}}T}
け
B
{\displaystyle k_{\text{B}}}
あなた
{\displaystyle U}
ま
{\displaystyle M}
このアルゴリズムでは、リープフロッグステップの数に正の整数 、ステップサイズに正の数が必要です 。チェーンが にあると仮定します 。 とします 。まず、 ランダムな ガウス 運動量 が から引き出されます 。次に、粒子はハミルトン力学の下で時間 の間動きます。これは、 リープフロッグアルゴリズムを 使用してハミルトン方程式を数値的に解くことによって行われます 。リープフロッグアルゴリズムを使用した時間後の位置と運動量ベクトルは次の とおりです。 [4]
ら
{\displaystyle L}
Δ
t
{\displaystyle \Delta t}
バツ
ん
=
x
ん
{\displaystyle \mathbf {X} _{n}=\mathbf {x} _{n}}
x
ん
(
0
)
=
x
ん
{\displaystyle \mathbf {x} _{n}(0)=\mathbf {x} _{n}}
p
ん
(
0
)
{\displaystyle \mathbf {p} _{n}(0)}
いいえ
(
0
、
ま
)
{\displaystyle {\text{N}}\left(\mathbf {0},M\right)}
ら
Δ
t
{\displaystyle L\Delta t}
Δ
t
{\displaystyle \Delta t}
p
ん
(
t
+
Δ
t
2
)
=
p
ん
(
t
)
−
Δ
t
2
∇
あなた
(
x
)
|
x
=
x
ん
(
t
)
{\displaystyle \mathbf {p} _{n}\left(t+{\dfrac {\Delta t}{2}}\right)=\mathbf {p} _{n}(t)-{\dfrac {\デルタ t}{2}}\nabla \left.U(\mathbf {x} )\right|_{\mathbf {x} =\mathbf {x} _{n}(t)}}
x
ん
(
t
+
Δ
t
)
=
x
ん
(
t
)
+
Δ
t
ま
−
1
p
ん
(
t
+
Δ
t
2
)
{\displaystyle \mathbf {x} _{n}(t+\Delta t)=\mathbf {x} _{n}(t)+\Delta tM^{-1}\mathbf {p} _{n}\left(t+{\dfrac {\Delta t}{2}}\right)}
p
ん
(
t
+
Δ
t
)
=
p
ん
(
t
+
Δ
t
2
)
−
Δ
t
2
∇
あなた
(
x
)
|
x
=
x
ん
(
t
+
Δ
t
)
{\displaystyle \mathbf {p} _{n}(t+\Delta t)=\mathbf {p} _{n}\left(t+{\dfrac {\Delta t}{2}}\right)-{\ dfrac {\Delta t}{2}}\nabla \left.U(\mathbf {x} )\right|_{\mathbf {x} =\mathbf {x} _{n}(t+\デルタ t)}}
これらの方程式をおよび回 適用して および を 取得します 。
x
ん
(
0
)
{\displaystyle \mathbf {x} _{n}(0)}
p
ん
(
0
)
{\displaystyle \mathbf {p} _{n}(0)}
ら
{\displaystyle L}
x
ん
(
ら
Δ
t
)
{\displaystyle \mathbf {x} _{n}(L\Delta t)}
p
ん
(
ら
Δ
t
)
{\displaystyle \mathbf {p} _{n}(L\Delta t)}
リープフロッグ アルゴリズムは、相互作用しない古典粒子の運動に対する近似解です。正確であれば、古典的な位置エネルギー場が存在する場合、各粒子のエネルギーは保存されるため、解はランダムに生成された初期のエネルギー分布を変更することはありません。熱力学的平衡分布に到達するには、粒子が、たとえば周囲の熱浴と何らかの相互作用をする必要があります。これにより、システム全体がボルツマン分布に従った確率で異なるエネルギーを引き受けることができます。
システムを熱力学的平衡分布に近づける方法の 1 つは、メトロポリス-ヘイスティングス アルゴリズムを 使用して粒子の状態を変更することです 。まず、リープフロッグ ステップを適用し、次にメトロポリス-ヘイスティングス ステップを適用します。
からへ の移行 は
バツ
ん
=
x
ん
{\displaystyle \mathbf {X} _{n}=\mathbf {x} _{n}}
バツ
ん
+
1
{\displaystyle \mathbf {X} _{n+1}}
バツ
ん
+
1
|
バツ
ん
=
x
ん
=
{
x
ん
(
ら
Δ
t
)
確率的に
α
(
x
ん
(
0
)
、
x
ん
(
ら
Δ
t
)
)
x
ん
(
0
)
さもないと
{\displaystyle \mathbf {X} _{n+1}|\mathbf {X} _{n}=\mathbf {x} _{n}={\begin{cases}\mathbf {x} _{n} (L\Delta t)&{\text{確率付き }}\alpha \left(\mathbf {x} _{n}(0),\mathbf {x} _{n}(L\Delta t)\right)\\\mathbf {x} _{n}(0)&{\text{otherwise}}\end{cases}}}
どこ
α
(
x
ん
(
0
)
、
x
ん
(
ら
Δ
t
)
)
=
分
(
1
、
経験
[
−
H
(
x
ん
(
ら
Δ
t
)
、
p
ん
(
ら
Δ
t
)
)
]
経験
[
−
H
(
x
ん
(
0
)
、
p
ん
(
0
)
)
]
)
。
{\displaystyle \alpha \left(\mathbf {x} _{n}(0),\mathbf {x} _{n}(L\Delta t)\right)={\text{min}}\left(1,{\dfrac {\exp \left[-H(\mathbf {x} _{n}(L\Delta t),\mathbf {p} _{n}(L\Delta t))\right]}{\exp \left[-H(\mathbf {x} _{n}(0),\mathbf {p} _{n}(0))\right]}}\right).}
完全な更新は、最初に運動量をランダムにサンプリングし (以前の反復とは無関係に)、次に運動方程式を積分し(たとえば、リープフロッグを使用して)、最後にメトロポリス-ヘイスティングスの受け入れ/拒否ステップから新しい構成を取得することから構成されます。この更新メカニズムが繰り返されて、 が得られます 。
p
{\displaystyle \mathbf {p} }
バツ
ん
+
1
、
バツ
ん
+
2
、
バツ
ん
+
3
、
…
{\displaystyle \mathbf {X} _{n+1},\mathbf {X} _{n+2},\mathbf {X} _{n+3},\ldots }
Uターンなしサンプラー
No U-Turn Sampler (NUTS) [5] は、自動制御による拡張です 。チューニング は重要です。たとえば、1次元の場合 、ポテンシャルは、 単純な調和振動子 のポテンシャルに対応します 。 大きすぎると、粒子が振動し、計算時間が無駄になります。 小さすぎると、粒子はランダムウォークのように動作します。
ら
{\displaystyle L}
ら
{\displaystyle L}
いいえ
(
0
、
1
/
け
)
{\displaystyle {\text{N}}(0,1/{\sqrt {k}})}
あなた
(
x
)
=
け
x
2
/
2
{\displaystyle U(x)=kx^{2}/2}
ら
{\displaystyle L}
ら
{\displaystyle L}
大まかに言えば、NUTS は U ターン条件が満たされるまで、ハミルトン力学をランダムに時間的に前方と後方の両方に実行します。U ターン条件が満たされると、パスからランダムなポイントが MCMC サンプル用に選択され、その新しいポイントからプロセスが繰り返されます。
詳細には、 二分木を 構築して、蛙跳びのステップの経路をトレースします。MCMC サンプルを生成するために、反復手順が実行されます。スライス変数 がサンプリングされます。 前方粒子の位置と運動量をそれぞれとします。同様に、 後方粒子について も、とととします 。各反復では、二分木は、前方粒子を時間的に前方に移動するか、後方粒子を時間的に後方に移動するかをランダムに一様に選択します。また、各反復では、蛙跳びのステップの数は 2 倍に増加します。たとえば、最初の反復では、前方粒子は 1 つの蛙跳びのステップを使用して時間を前方に移動します。次の反復では、後方粒子は 2 つの蛙跳びのステップを使用して時間を後方に移動します。
あなた
ん
〜
ユニフォーム
(
0
、
経験
(
−
H
[
x
ん
(
0
)
、
p
ん
(
0
)
]
)
)
{\displaystyle U_{n}\sim {\text{Uniform}}(0,\exp(-H[\mathbf {x} _{n}(0),\mathbf {p} _{n}(0)]))}
x
n
+
{\displaystyle \mathbf {x} _{n}^{+}}
p
n
+
{\displaystyle \mathbf {p} _{n}^{+}}
x
n
−
{\displaystyle \mathbf {x} _{n}^{-}}
p
n
−
{\displaystyle \mathbf {p} _{n}^{-}}
この反復手順はUターン条件が満たされるまで継続されます。つまり、
(
x
n
+
−
x
n
−
)
⋅
p
n
−
<
0
or
.
(
x
n
+
−
x
n
−
)
⋅
p
n
+
<
0
{\displaystyle (\mathbf {x} _{n}^{+}-\mathbf {x} _{n}^{-})\cdot \mathbf {p} _{n}^{-}<0\quad {\text{or}}\quad .(\mathbf {x} _{n}^{+}-\mathbf {x} _{n}^{-})\cdot \mathbf {p} _{n}^{+}<0}
あるいはハミルトニアンが不正確になったとき
exp
[
−
H
(
x
n
+
,
p
n
+
)
+
δ
]
<
U
n
{\displaystyle \exp \left[-H(\mathbf {x} _{n}^{+},\mathbf {p} _{n}^{+})+\delta \right]<U_{n}}
または
exp
[
−
H
(
x
n
−
,
p
n
−
)
+
δ
]
<
U
n
{\displaystyle \exp \left[-H(\mathbf {x} _{n}^{-},\mathbf {p} _{n}^{-})+\delta \right]<U_{n}}
ここで、例えば、 .
δ
=
1000
{\displaystyle \delta =1000}
Uターン条件が満たされると、次のMCMCサンプルは、 二分木によって描かれたリープフロッグパスを均一にサンプリングすることによって得られ 、これは次式を満たす。
x
n
+
1
{\displaystyle \mathbf {x} _{n+1}}
{
x
n
−
,
…
,
x
n
(
−
Δ
t
)
,
x
n
(
0
)
,
x
n
(
Δ
t
)
,
…
,
x
n
+
}
{\displaystyle \{\mathbf {x} _{n}^{-},\ldots ,\mathbf {x} _{n}(-\Delta t),\mathbf {x} _{n}(0),\mathbf {x} _{n}(\Delta t),\ldots ,\mathbf {x} _{n}^{+}\}}
U
n
<
exp
[
−
H
(
x
n
+
1
,
p
n
+
1
)
]
{\displaystyle U_{n}<\exp \left[-H(\mathbf {x_{n+1}} ,\mathbf {p_{n+1})} \right]}
残りの HMC パラメータが適切であれば、これは通常満たされます。
参照
参考文献
^ Duane, Simon; Kennedy, Anthony D.; Pendleton, Brian J.; Roweth, Duncan (1987). 「ハイブリッドモンテカルロ」. Physics Letters B. 195 ( 2): 216–222. Bibcode :1987PhLB..195..216D. doi :10.1016/0370-2693(87)91197-X.
^ Neal, Radford M. (1996). 「 モンテカルロ実装」。 ニューラルネットワークのベイズ学習。統計 学 講義ノート。第 118 巻。Springer。pp. 55–98。doi :10.1007/978-1-4612-0745-0_3。ISBN 0-387-94724-8 。
^ゲルマン、アンドリュー; リー、ダニエル; 郭、ジチアン (2015)。「Stan: ベイズ推論と 最適 化のための確率的プログラミング言語」。 教育行動統計ジャーナル 。40 (5): 530–543。doi : 10.3102 /1076998615606113。S2CID 18351694 。
^ Betancourt, Michael (2018-07-15). 「ハミルトニアンモンテカルロの概念的入門」. arXiv : 1701.02434 [stat.ME].
^ Hoffman, Matthew D; Gelman, Andrew (2014). 「No-U-turn sampler: Hamiltonian Monte Carlo におけるパス長の適応的設定」. Journal of Machine Learning Research . 15 (1): 1593–1623 . 2024-03-28 閲覧 。
さらに読む
Betancourt, Michael; Girolami, Mark (2015)。「階層モデルのためのハミルトンモンテカルロ」。Upadhyay, Satyanshu Kumar; et al. (eds.)。 ベイジアン手法の最新動向とその応用 。CRC Press。pp. 79–101。ISBN 978-1-4822-3511-1 。
ベタンコート、マイケル (2018)。「ハミルトンモンテカルロの概念的入門」。arXiv : 1701.02434 [ stat.ME]。
バルブ、エイドリアン; チュー、ソンチュン (2020)。「ハミルトニアンとランジュバンモンテカルロ」。 モンテカルロ法 。シンガポール:シュプリンガー。pp. 281–326。ISBN 978-981-13-2970-8 。
Neal, Radford M (2011)。「ハミルトン力学を用いた MCMC」 (PDF) 。Steve Brooks、Andrew Gelman、Galin L. Jones、Xiao-Li Meng (編)。 マルコフ連鎖モンテカルロハンドブック 。Chapman and Hall/ CRC。ISBN 9781420079418 。
外部リンク
ベタンコート、マイケル。「ハミルトンモンテカルロによる効率的なベイズ推論」。MLSS アイスランド 2014 – YouTube 経由。
McElreath、リチャード。「マルコフ連鎖モンテカルロ」。 統計的再考 2022 – YouTube 経由。
ハミルトンモンテカルロ法をゼロから学ぶ
最適化とモンテカルロ法