ハミルトニアンモンテカルロあれこれ

投稿日: Oct 06, 2015 10:8:14 AM

ハミルトニアンモンテカルロの解説原稿(DS用のボツ原稿を大幅強化したもの)と動画の講義をしばらく無料で提供します(1巻サポートページの松浦さんのSTANの解説のところにリンクしました).動画のほうのスライドは原稿とは別にあったものが元になっているので,説明の方向とか少し違っていますが,両方ありだと思います.原稿のほうはちょっとマニアックな話題まで触れています.

ハミルトニアンモンテカルロはSTANで有名になってしまいましたが,計算物理の人なら「(等温)分子動力学法のことじゃない」,機械学習の人なら「PRMLやマッカイの情報理論にちょっと出ていたやつを昔読んだ」とおっしゃるかもしれません.どちらも正解です.

前者についていえば,普通の分子シミュレーションだと,運動量というのはもともとあるのですが,もともとそういうのがない問題のときに,それを人工的に補助変数として入れる,というのが,ポイントになっています.詳しい歴史は原稿のほうに書きました.

後者についていえば,ベイズの計算法としてもずいぶん前から提案されていたのが,なんかいまひとつブレークせずに来て,STANでとうとう本当に普及したという感じでしょうか.MCMC自体が物理起源の手法ですが,物理から学ぶところはまだあったわけですね.

* * * * *

数値計算の専門家にメトロポリス法の説明をすると,「それは最急降下法レベルだろう.ニュートン法はないのか!アフィン不変性だ!」とよく言われました.変数のスケールを変えただけで遅くなるような方法はアカンといいうわけです.その対策を講じるのにハミルトニアンモンテカルロの形式で運動量に細工するのはどうよ,というのが,これまたかなり昔から言われています.たとえば,割りと最近に話題になったものが,このリンクにあります.Riemannian Manifold Hamiltonian Monte Carlo

ハミルトニアンモンテカルロの運動量は補助変数で勝手に手で入れたものですから.そういうところに細工をするのはある意味で王道ですね.しかし,これまたなかなかブレークしません.背景には,やはり最適化とサンプリングは違う,ということがあります.きちんとした確率でサンプリングしようとするとオーバーヘッドが大きくなるということがひとつ.もうひとつは,ニュートン法の類は最後は局所的になって特異な点以外は2次形式(多変量正規分布)を相手にすればいいのに,MCMCは最後まで本質的にグローバルな動きをするということがあります.

永久にブレークしないかもしれませんが,気になるので,原稿の後半で解説してみました.なお,まったく違う考え方でアフィン不変性を実現するというアイディアがあって,それについてはまた別の機会に触れます.

STANがらみで話題になったのは,アフィン不変性ではなくて,NUTS(No U-turn sampler)という手法です.「ハミルトン方程式を解いて作った軌道が出発点のほうにもどりはじめたらやめる」というアイディアだけ聞くと簡単に思えますが,それで詳細釣りあいを満たすようにするのはすごいと思います.自分も細部まで理解しているかどうか自信はないですが,論文をみると色々な技を投入していることがわかります.