英語記事のサマリ - PyMC開発者のThomas Wieckiさんにインタビューした記事
気分転換にベイズや確率プログラミングに関する英語記事や論文の翻訳サマリをさっくり書いていく予定.
第一回目はPyMC3の開発者のインタビュー記事.
TL;DR
PyMC3の開発者であり, かつQuantopian という投資会社で働いている Thomas Wiecki へのインタビュー記事の英語サマリ.
補足: Quantopian はクラウドソース型の投資会社で投資アルゴリズムを開発・支援している
内容
注意) 重要でなさそうな質問や回答は省略している.
確率プログラミング(Probabilistic Programming)とは?
確率プログラミングはベイズ統計モデリングをプログラミング言語のコードで表現するというパラダイムのこと. 例えばA_Bテストでモデルをコーディングして推論することで, “x%の確率でバージョンAのCVRの方がバージョンBより高い” と推論結果の分布から示すことができる. このA_Bテストの例は単純な例だが, 実際にはもっと複雑なモデルもありえる. 何かの問題を解決しようとする時, 何らかの事前情報や構造(階層構造など)があるため, それをモデルに組み込むことができる. 確率プログラミングはそれらのプロセスを支援するためのツールの一つ.
PyMCとは?
PyMC3は確率プログラミングのフレームワークの一つ. 特徴としてはPythonで記述することが可能であったり, 最先端の推論アルゴリズムを実装していることが挙げられる. また, コミュニティが活発であることも特徴の一つ.
PyMCはなぜ作られたの? 他プロジェクトのEdwardやStanとの違いは?
PyMC3はもともとMCMCアルゴリズムの上位である次世代のHMC(ハミルトンモンテカルロ)アルゴリズムを実装することも目的に作られた. HMCを実装するには勾配計算が必要だったため, そのためにTheanoが採用された.
StanはC++で書かれておりカスタムDSLでモデルを記述する必要がある. 一方, PyMC3の場合には単にPythonで記述することができ, DSLを覚える必要がない.
Edwardはtensorflow上に構築されておりPyMC3と近い. Edwardは特に変分ベイズやスケーラビリティ, 深層生成モデルに注力している(注: Tensorflow Probabilityに統合されたのでもうアクティブではない).
役割分担のまとめ
PyMCが実際に使われている例は?
主にアカデミックなさまざまな領域で使われており論文は200にのぼる. 企業のよくある例だとA/Bテストやサプライチェーン最適化など.
PyMCは深層学習の手法と連携していくことは可能?
PyMC4になるとバックエンドがTensorflow Probabilityになるからそうなるかもね.
金融分野で変分ベイズ vs MCMCを使用するトレードオフは?
変分ベイズは速いけどその分精度が落ちるから金融分野ではMCMCがおすすめ.
QuantopianではPyMC3はどのように用いられているか?
色々なところで使ってるけど, 主にポートフォリオ・ウェイティング(portfolio weighting)だね.
注) 金融周りがよくわからないのでちょっと省略
確率や統計を学ぶのにおすすめの書籍やeラーニングは?
書籍
- Bayesian Methods for Hackers: 有名なベイズハッカー本
- Doing Bayesian Data Analysis: 有名な犬の本
- Bayesian Analysis with Python: 2nd editionはpymc3+arvizに対応している
- Statistical Rethinking – Richard McElreath: 統計の本
eラーニング
- Probabilistic Programming Primer: PyMC3を使った実践的な確率プログラミングのコース