HMC:ディメンションが多すぎますか?


9

私が読んだハミルトニアンモンテカルロは、MCMC問題が高次元である場合の"goto" メソッドです。

実際には、10、100、1,000、10,000、100,000などのディメンションの数は多すぎますか?計算コストが問題になることは間違いありません。使用するモデルを検討することが重要だと思いますが、それを別にして、目的の分布を使用して適切なサンプルを取得する場合、次元数に実際的な制限はありHMCますか?

また、個々のパラメーターのトレースプロット、実行平均、自己相関などをチェックするにはパラメーターの数が多すぎる問題について、収束(または私が推測できないこと)をどのように監視できますか?

更新:非視覚的診断に言及しているこの投稿を見つけました

回答:


2

パラメータの最大数

問題の構造に大きく依存します。たとえば、スタンでのさまざまな階層線形モデルに関する私の経験では、約10 000から30 000のパラメーターで非常に遅くなった(完了までに数時間または数日)(いくつかの再現可能な数値は、スタン対INLAに関する私のブログにあります)。常微分方程式と複雑な構造を含むモデルを操作する場合、10個のパラメーターが多すぎる可能性があります。独立した法線のベクトルのみをフィッティングする場合(下記を参照)、スタンは、デフォルト設定(1000イターウォームアップ、1000イターサンプリング、4チェーン)を使用して、1e5パラメーターで完了するのに約40分かかります。したがって、1e5よりもはるかに多くのパラメータを持つことは、実際的でない可能性が非常に高くなります。

ただし、アルゴリズムのハイパーパラメータを微調整するとき、スタンランの最も長い部分はウォームアップフェーズです。自分で適切な値を提供できる場合(これは難しい)、パフォーマンスをさらに向上させることができます。

また、チェーン内並列処理とGPUへのマトリックス操作のオフロードのためのMPIのサポートをすぐにStanに追加する必要があります(たとえば、ここhttp://discourse.mc-stan.org/t/parallelization-again-mpi-to- the-rescue / 455/11、およびここhttp://discourse.mc-stan.org/t/stan-on-the-gpu/326/10)ので、さらに大きなモデルでも近い将来実用的になる可能性があります。

高次元の診断

StanのHMC実装は、多数のパラメーターn_eff(発散遷移、効果的なサンプルサイズ)、分割Rhat(潜在的なスケール削減)でも機能する複数の有用な診断を提供します。これらの詳細な説明については、Stanマニュアルの「Initialization and Convergence Monitoring」のセクションを参照してください。


単純なモデルのRコード-スタンにフィットする、パラメーターの数をスケールできる独立した法線のセット:

library(rstan)
model_code = "
data {
 int N;
}

parameters {
 vector[N] a;
}

model {
 a ~ normal(0,1);
}
"

model = stan_model(model_code = model_code)

fit_large = sampling(model, data = list(N = 1e5))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.