HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

PyTorchのベイズ周辺ライブラリ

 

 

follow us in feedly

PyTorch

pytorch.org

いわずとしれたディープラーニングフレームワークです。最近、国産のフレームワークであるChainerの開発元であるPFNが、PyTorchへの移行を示したこともあり、一層認知度が高まったように思います。すでに研究分野ではTensorFlowよりも高いシェアを誇っている状態であり、今後、プロダクション方向にも整備が行くようで更に注目しておくべきでしょう。

ディープラーニングフレームワークと言いつつ、多次元配列の計算を自在に行うことが可能な自動微分ライブラリとして活用することも可能であり(その点はTensorFlowも同様だが)、PyTorchをバックエンドとした色々なライブラリができていたりします。TensorFlowに比べ、そのような使われ方がなされる大きな要因は、PyTorchがResearcher first、Python firstな構成を取っているからでしょう。素早くプロトタイプを作成でき、Pythonの書き方を崩すことなくコーディングできるため、プログラミング言語それ自体に深く精通することなく、実施したい計算を研究者が柔軟にコードに落とし込めます。

TorchScriptを利用すれば、これをグラフとしてコンパイルし、C++へ変換、あるいはTVMやTRTを通してハードウェアでのアクセラレーションの恩恵を受けることも可能です。また、C++での記述をサポートするLibTorchもあり、ほとんどPyTorchと同じようなデザインC++のコードを直接書くこともできます。

GPyTorch

gpytorch.ai

PyTorchをバックエンドとしたGaussian Processのライブラリです。標準的なGPからSparse GP、Variational GP、MultiTask GPなどの応用モデルも簡単に扱うことができます。当然PyTorchのコードとシームレスに繋げることで、カーネルへの入力をニューラルネットワークで構成するDeep Kernel Learningや、GP自体を多層化するDeep Gaussian Processなども利用できます。

また後述するPyroと連携することで、Pyroが提供する変分推論、MCMCを利用することも可能です。加えて、GPyTorchの優れた機能は、後述するベイズ最適化ライブラリBoTorchのバックエンドとして活用されています。

www.hellocybernetics.tech

Pyro

pyro.ai

PyTorchをバックエンドとした確率的プログラミングライブラリです。階層モデルの記述を容易にし、強力な変分推論のフレームワークを提供します。深層学習のベイズ化も容易です。またHMCとNUTSを利用したMCMCも利用可能なため、ベイズモデリングでの統計分析も最低限のことが実施できます(ただし、この領域はTensorFlow ProbabilityやStan、PyMCの方が手厚いです)。

www.hellocybernetics.tech

www.hellocybernetics.tech

BoTorch

botorch.org

GPyTorchをバックエンドとしたベイズ最適化ライブラリです。ベイズ最適化はブラックボックス最適化、特にハイパーパラメータ探索に利用されることが多く、PyTorchの学習をラッピングすることに活用できます(もちろん、その他の最適化問題にも別途利用可能です)。BoTorchは後述する学習管理ライブラリAxの低レベルAPIとして利用することが可能です。

Ax

ax.dev

Adaptive Experimetation Platformと題された実験支援プラットフォームです。 最も単純な利用形態は、ニューラルネットワークのハイパーパラメータ探索になるでしょう。BoTorchをバックエンドとしたハイパーパラメータ探索戦略を非常に簡単に実行できます。可視化などのライブラリも同梱されており、PFNのOptunaのように、とりあえずブラックボックス最適化に使ってみるということが手軽に出来ます。