自動微分を用いたベイズ推定の高速化

原文:Accelerating Bayesian inference using Algorithmic Differentiation - Published 10/09/2020 By Philip Maybank

自動微分を使用すると、ハミルトニアンモンテカルロ(HMC)のサンプリングがより効率的になります

マルコフ連鎖モンテカルロ(MCMC)に関する我々の最近の論文で、時系列データからベイズ不確実性を定量化する方法をご確認下さい。またそれに付属するコードを、NAGのGitHubでご確認下さい。

NAGのADツールであるdco/c++(RWTHアーヘン大学との共同開発)はC++コードを微分化します。このツールは、明確に定義された導関数を持つ任意のC++コードの微分化が行えます。

今回は、HMC用のオープンソースStanソフトウェアとdco/c++を組み合わせ、既存のC++コードベースを使用して、ベイジアン不確かさの定量化を行いました。開発者の労力は最小限で済み、dco/c++の高度な機能を使用して性能を調整することができます。MCMCベースの不確かさ定量化は、多くの実世界の問題には計算量が高すぎると長い間考えられてきましたが、これは変わりつつあります。NAGのADツールであるdco/c++は、この問題で重要な役割を果たします。

結果

我々の論文での具体的な発見は、ADとHMCの組み合わせが、代替手法よりも3〜4倍も大きい有効サンプルサイズにつながるということでした。MCMCの生サンプル・サイズは、バーンイン段階が終了した後、サンプラーが実行する反復回数(下記の例では1,000回)を単純に表したものです。有効サンプルサイズは、同じMCMCチェインからのサンプル間の自己相関を考慮して生サンプルサイズを調整します。例えば、より高いCPU時間を持つMCMCサンプラーは、自己相関が少ないサンプルを生成し、その結果、事後分布のより正確な推定値を得ることができます。特に、我々は、No U-Turn Sampler(HMCサンプラー)が、我々がテストした他のサンプラーよりも自己相関の低いサンプルを生成することを発見した。また、HMCでの導関数の精度を上げると、より低い自己相関、すなわち、より高い有効サンプルサイズが得られることもわかりました。(表をご参照下さい) 上記の理由から、有効サンプルサイズは、MCMCサンプラーの効率を測定する際に、CPU時間よりも重要な指標であると言えます。

Table

これらの結果を生成するために使用された例には、比較的少数の入力(5個)しかありませんでした。 Adjoint自動微分のCPU時間は、入力数とは独立して変化します。 つまり、有限差分の代わりにdco/c++を使用すると、高次元の入力の問題でCPU時間は1桁速くなる可能性があります。 このベンチマークでは、dco/c++の基本機能のみが使用されています。より高度なdco/c++機能(たとえば、固有値計算のシンボリックAdjoint)を使用すれば、他にもCPU時間を削減する余地がまだあります。

C++コードベースをお持ちで、ベイズの不確かさ定量化を行う必要がある場合は、NAGのソフトウェアをご覧ください。このアプローチは、MCMCから変分推論へ、そしてC++コードベースからFortranコードベースへと拡張することができます。オープンソース・コミュニティや潜在的な産業用ユーザからのフィードバックを歓迎いたします。

関連情報
MENU
Privacy Policy  /  Trademarks