SlideShare a Scribd company logo
Pythonとベイズ統計
株式会社ウィズメーティス
渡邉 博文@HW_a_Pythonista
1
Pycon mini Hiroshima 2020
自己紹介(お前、誰よ)
 氏名:渡邉 博文
Twitterアカウント: @HW_a_pythonista
 アカデミアと企業の間にいる人
 専門:生体高分子シミュレーション、医薬品分子設計
4月に起業し、ベイズ統計・機械学習とシミュレーションを組み合わせたツールを開発中
 Python歴は、15年ぐらい(使い始めたときはPython2.3)
 研究者として、Pythonを使って、2つのシミュレーション手法を組み合わせた手法開発など
 Pythonプログラマとして、企業で、ケムインフォマティクスライブラリのサポート
 実は、PyconAPAC2013 in Japan 登壇者
2
Contents
 背景
 ベイズ統計の基本的な考え方と機械学習との関係
 ベイズ統計や確率プログラミングを行うPythonライブラリについての情報
 Pythonによるベイズ統計プログミングの例:PyMC3
 今後の期待
 関連書籍、Webサイトの情報
 まとめ
3
背景
 AIブーム
 ビッグデータ
 ディープラーニング
など、大量データ、複雑なモデルが牽引
⇒画像認識、音声認識などについては、確かにその通り
 MLのAuto-tunerなど、分析支援ツールの向上
⇒Black Box的な使用が可能。
エンジニア、データサイエンティストは、汎化性能、応答時間、前処理さえ気にしていればよい?
4
背景
そもそも、大量のラベル付きデータが集まらない場所も多い。
複雑なモデルは、推定すべきパラメータ数が多く、パラメータが多いと、十分な精度で推定するには、大
量のデータが必要。
ディープニューラルネットワークは複雑で巨大な内挿式を作るようなものであって、その外挿性を期待す
るのは難しい。
(平たく言えば、ある種、データの丸暗記的な側面がある。)
⇒ Black Box的に機械学習を使っていて大丈夫?
5
背景
汎化性能、応答時間、前処理などを気にしていれば十分?
 実応用したときの汎化性能(クロスバリデーションで測りきれている?)
 データの誤差の性質の考慮
 データ数が少ない時への対応
 解釈性
⇒ ベイズ統計・ベイズモデリングが一つの答え
6
ベイズ統計と機械学習
 多くの機械学習法には、ベイズ統計の概
念が使われている。
 例えば、正則化は、ベイズ統計の枠組み
では、事前分布を導入することに相当す
る。
 時には、Black Box的な使用でなく、原理
に戻って、モデリング、チューニングを
行うことが重要になる。
PRML
7
ベイズの定理とベイズ統計
事前分布、事後分布の導入
𝑃 𝐵|𝐴 =
𝑃(𝐴|𝐵)𝑃(𝐵)
𝑃(𝐴)
事後分布:データが得
られた後の確率
事前分布:データが得
られる前の信念を反映
した分布を反
周辺尤度:
確率分布の規格化因子
尤度:データがモデル
にどれだけ当てはまっ
ているかを表すを反
事後分布は、(データが得られる前)の事前
分布と、データのモデルへの当てはまり具合
を表す尤度との積に比例した形で表される。
⇒事前分布の導入により最尤推定に比べて、データ点が少ない時の挙動がよい
8
ベイズの定理の導出
 確率の情報定理
𝑃 𝐴, 𝐵 = 𝑃 𝐴 𝑃 𝐵 𝐴 = 𝑃(𝐵)𝑃(𝐴|𝐵)
𝑃 𝐵|𝐴 =
𝑃(𝐴|𝐵)𝑃(𝐵)
𝑃(𝐴)
AとBが同時に起こる確率は、
= Aが起こる確率 × Aが起こるという条件のものでBが起こる確率
= Bが起こる確率 × Bが起こるという条件のもとでAが起こる確率
ベイズの定理
9
学習(モデルパラメータ推定)の方法
変分法
• 事後分布にある関数形で近似して、
ELBO(周辺尤度下限)を最大化する。
• 一般に計算は高速に行える。
• 近似の入れ方(変分関数の選び方)
によっては、系統誤差が生じる恐れ
がある。
• 一般にはそれぞれのモデル特定のア
ルゴリズムが必要になる。
• ADVI(自動微分変分推論)は正規
分布を用いた近似を行い一般の分布
への適用を行う方法。
MCMC法(マルコフ連鎖モンテカルロ法)
• モンテカルロ法:乱数を使って計算する方法
• マルコフ連鎖:次の状態への遷移確率は、現
在の状態にのみ依存する状態の列を生成する。
• 正しく行えば、サンプリングが不十分なこと
による誤差はあるが、系統誤差が生じない。
• 変数の数や、問題の性質により、サンプリン
グにかかる時間が多くなる。
• NUTSは、効率のよいMCMC法の一つ。
10
ベイズ統計を扱うPythonのライブラリ(1)
PyStan:
• StanのPythonラッパー
• モデルは、Stan言語で記述。
• Stan言語は、数式との対応がわかりやすい。
• NUTSによるサンプリング。ADVIも可能。
• StanのRラッパーであるRstanもよく使われてい
る。
• RStanには、解説書が多く市販されており、
Stanコードはそのまま、利用することが可能。
PyMC3:
• Theanoを基盤としている。
(Theanoは開発終了したが、PyMC3に関連
する部分のメンテナンスは継続中)
• モデルはPythonで記述。
• コードは、Pythonらしく書ける。
• NUTS、ADVIも可能
• 公式サイトにチュートリアル。
• 日本語や洋書で情報が手に入る。
実績があり、書籍などで情報が入手しやすいもの
後ほど
解説
11
ベイズ統計を扱うPythonのライブラリ(2)
今後の注目株
TensorFlowを基盤とするもの
TensorFlow Probability(TFP):
TensorFlow2を基盤にGoogleによ
り開発中。Bijectorによる柔軟な分布
の利用や速度などは、期待できるが、
書きにくい?
PyMC4:
TFPを基盤に開発中、現在、開発版
Edward:
TensorFlow1を基盤として、構築さ
れる。変分計算が得意。
Edward2:
TFPの一部として、開発中。
PyTorchを基盤とするもの
Pyro:
Uberにより開発中。記述は
TFPに比べてシンプル。
変分計算が速いよう。
Pixyz: 深層生成モデルの構築
Jax(Google製のより簡易な
自動微分ライブラリ、numpy
の感覚で使える)を基盤とす
るもの
NumPyro:
Pyroの一部機能をJaxを基
盤に構築。Pyroよりも高速。
12
PyMC3コードの例
ベイジアン線形回帰
MCMCのサンプリングを行う
𝑦 = 𝛼 + 𝛽𝑥 + 𝜀
𝜀には正規分布を仮定
ラベルの値を指定
𝜀が正規分布(平均:𝛼 + 𝛽𝑥, 標準偏差:𝜎)を指定
𝛼、𝛽、𝜎(𝜀の標準偏差)の事前分布を指定
13
特徴量の値を指定
PyMC3コードの例
ベイジアン線形回帰の改良
外れ値があることを考慮して、𝜀にスチューデントのt分布を使用
⇒外れ値以外の点で、当てはまりがよくなった。
𝑦 = 𝛼 + 𝛽𝑥 + 𝜀
𝜀にはスチューデントのt分布を仮定
14
データ点が少ない場合
データ点が少ない⇒学習モデルを得るのが難しい
15
階層モデルの導入
𝛼𝑖 = 𝛼 + 𝜀𝑖
𝛼
𝛽𝑖= 𝛽 + 𝜀𝑖
𝛽
෤𝑦𝑖 = 𝛼𝑖 + 𝛽𝑖 ෤𝑥𝑖 + 𝜀𝑖
点が少なくても
モデルが得られる。
16
今後の期待
鈴木雅大特任助教(東京大学松尾豊研)
博士論文「深層学習と生成モデルによるマルチモーダル学習に関する研究」より
17
関連書籍
PyMC3のサンプルコードが付いている
 「Pythonで体験するベイズ推論-PyMCによるMCMC入門-」キャメロン・デビッドソン=ピロン著
玉木徹訳 森北出版 (Git Hubから可、PyMC2、PyMC3、TensorFlow Probability)
 複雑なモデルは扱わないが基本的な概念や応用例などが豊富
 「Pythonによるベイズ統計モデリング」 Osvaldo Martin著 金子武久訳 共立出版 (出版社のサ
イトから可)
 階層モデルなどの比較的複雑なモデルの解説も含んでおりバランスが取れている。
 「Pythonによるベイズ統計モデリング」中妻輝夫著 朝倉書店(Git Hubから可)
 時系列モデル、回帰モデル、判別モデルの解説がある。
PyStanの学習には、Rstanの解説本が使える
 「StanとRでベイズ統計モデリング」松浦健太郎著 石田基広監修 共立出版
18
関連書籍とWebサイト
ベイズ統計の理論
 「機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)」須山敦志著 講談社
 式の導出が丁寧にされている。以下のPRMLが難しいと思う人におすすめ。変分法の解説も。
 「パターン認識と機械学習」上下 C.M. ビショップ著 元田 浩、栗田多喜夫、樋口知之、松本裕治、村田昇監訳 丸善
 いわゆるPRML(Pattern Recognition and Machine Learning)、ベイズ統計と機械学習の定番本。
Webサイト
 PyMC3のサイト(チュートリアル、サンプルコードあり) https://docs.pymc.io/
 Hello Cybernetics (NumPyro, Pyro, jax, Edwardsなど最新のライブラリの情報や理論面に詳しい)
https://www.hellocybernetics.tech/
 作って遊ぶ機械学習(須山さんによるベイズ統計の解説) http://machine-learning.hatenablog.com/
動画
 TensorFlow User Group Meetup - ベイズ推定分科会 2020/9/5に行われた5時間のWebセミナー、登録者700名超
https://www.youtube.com/watch?v=7rBI11Rze2c
19
まとめ
 AIの普及
 Auto-tunerの普及 ⇒ エンジニア、データサイエンティストとしての差別化は?
⇒ ベイズ統計・ベイズモデリング
 細かな調整が行える。実応用したときの汎化性能、データの誤差の性質の考慮。デー
タ数が少ない時への対応。解釈性。
 PyMC3、PyStanなどを利用すれば、比較的容易に可能。
 ベイズモデリングとニューラルネットワークなどの組み合わせは、今後の発展が期待
される分野。
 ベイズモデリングは、マーケティングなどの分野においてはすでに、多くの実績があ
る。
20

More Related Content

PPTX
Improving Language Understanding by Generative Pre-Training
PPTX
Mixed Precision Training
PDF
弁理士が知っておきたいPython①
PDF
Pythonを使った機械学習の学習
PDF
Pythonで機械学習をやってみる(bizpy 1/19 2022)
PDF
S08 t0 orientation
PDF
S10 t1 spc_by_nowfromnow
PDF
まとめ
Improving Language Understanding by Generative Pre-Training
Mixed Precision Training
弁理士が知っておきたいPython①
Pythonを使った機械学習の学習
Pythonで機械学習をやってみる(bizpy 1/19 2022)
S08 t0 orientation
S10 t1 spc_by_nowfromnow
まとめ

What's hot (7)

PPTX
数理最適化とPython
PDF
「長野で語るStapyのビジョン」
PDF
正しいプログラミング言語の覚え方
PDF
Sapporo20140709
PDF
WindowsでPython
PDF
機械学習ゴリゴリ派のための数学とPython
PDF
Japan.r ver1.2 20171202_ota
数理最適化とPython
「長野で語るStapyのビジョン」
正しいプログラミング言語の覚え方
Sapporo20140709
WindowsでPython
機械学習ゴリゴリ派のための数学とPython
Japan.r ver1.2 20171202_ota
Ad

Similar to Pythonとベイズ統計 (6)

PDF
Orientation
PPTX
Pythonで始めるベイズ最適化
PDF
20190526 bayes ml
PPTX
Pythonで入門するApache Spark at PyCon2016
PDF
機械学習の全般について 4
PDF
20190512 bayes hands-on
Orientation
Pythonで始めるベイズ最適化
20190526 bayes ml
Pythonで入門するApache Spark at PyCon2016
機械学習の全般について 4
20190512 bayes hands-on
Ad

Pythonとベイズ統計