オーストラリアで勉強してきたMLデザイナーの口語自由詩

主に、データ分析・機械学習・ベイズ・統計について自由に書く。

英語記事のサマリ - 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に統合されたのでもうアクティブではない).

役割分担のまとめ

  • ML研究者で深層学習や変分ベイズがやりたい: Tensorflow Probability
  • 統計知識があるRユーザ: Stan
  • Pythonが好きなデータサイエンティスト: PyMC3

PyMCが実際に使われている例は?

主にアカデミックなさまざまな領域で使われており論文は200にのぼる. 企業のよくある例だとA/Bテストやサプライチェーン最適化など.

PyMCは深層学習の手法と連携していくことは可能?

PyMC4になるとバックエンドがTensorflow Probabilityになるからそうなるかもね.

金融分野で変分ベイズ vs MCMCを使用するトレードオフは?

変分ベイズは速いけどその分精度が落ちるから金融分野ではMCMCがおすすめ.

QuantopianではPyMC3はどのように用いられているか?

色々なところで使ってるけど, 主にポートフォリオ・ウェイティング(portfolio weighting)だね.

注) 金融周りがよくわからないのでちょっと省略

確率や統計を学ぶのにおすすめの書籍やeラーニングは?

書籍

eラーニング

参考資料