SlideShare a Scribd company logo
1 of 22
Download to read offline
⾃動微分変分ベイズ法
吉岡琢
2016 年 4 ⽉ 10 ⽇
1
この発表で⾔いたいこと
⾃動微分変分ベイズ法が実装された Stan や PyMC3 といった
ソフトウェアを使うことで, 確率モデルを記述するだけで
変分ベイズ推定を実⾏できます.
2
これまでの変分ベイズ
確率モデル パラメータ更新則
更新則の導出とそのコーディング
3
⾃動微分変分ベイズ
確率モデル パラメータ更新則
確率モデルの記述のみ!
4
ベイズ推定
ベイズ推定は観測データに基づいて確率モデルのパラメータの不確
かさを
推定する⽅法です.
p(X|D) =
p(D|X)p(X)
p(D)
• X: 確率モデルのパラメータ
• D: 観測データ
• p(X): 確率モデルのパラメータ事前分布
• p(D|X): 尤度
• p(X|D): 確率モデルのパラメータ事後分布
事後分布を解析的に計算できるのは限られた場合であり,
複雑な確率モデルでは近似計算が必要です.
5
ベイズ推定の近似計算
MCMC
事後分布からサンプリングを⾏う⽅法です.
• ⻑所: 複雑な式の導出が不要
(尤度と事前分布を記述すれば良く, 分布に関する仮定が緩い)
• 短所: マルコフ連鎖の収束判定が難しい
変分ベイズ法
事後分布を試験分布で近似する⽅法です.
• ⻑所: MCMC と⽐べて収束が速い
• 短所: 確率モデルごとにパラメータ更新式の導出
(とコーディング)が必要
6
⾃動微分変分ベイズ法
• 確率変数の変換と確率的最適化を組み合わせることで
変分ベイズ推定を⾃動的に実⾏する⽅法です ([KRG+15]).
• Automatic differentiation variational inference
(ADVI) と呼ばれます.
• MCMC と変分ベイズ法の⻑所を兼ね備えた⽅法です:
• 複雑な式の導出が不要
• 収束が速い
• Stan, PyMC3 に実装されています.
7
ADVI の原理
確率変数の変換
• 確率変数の定義域が数直線となるような変換
• 確率変数の分布を定める変分パラメータによる変換
確率的最適化
• 周辺尤度の変分下限 (ELBO) の最⼤化
• モンテカルロ法による期待値計算の近似
8
ADVI の制限
1. 離散確率変数を扱うことができません.
• 勾配法による最適化を⾏うためです.
• 観測変数は離散値でも OK です.
2. 近似事後分布はサンプリングが簡単に実⾏できるものに
限られます.
• Stan, PyMC3 共に正規分布を仮定します.
• Stan は多変量正規分布もサポートします.
9
PyMC3 のコード例
• Automatic relevance determination (ARD)
• Gaussian mixture model
• Latent Dirichlet Allocation (LDA)
10
コード例: Automatic relevance determination (ARD)
• with ブロックで確率モデルを記述します.
• 必要な変数変換は⾃動的に適⽤されます (ここでは alphas, beta).
• pm.variational.advi() にモデルを渡すことで ADVI が実⾏されま
す.
• 戻り値 mean はパラメータ事後分布の平均値です.
with Model() as model:
# Prior precisions
alphas = Gamma('alphas', alpha=1e-6, beta=1e-6, shape=(n_features,))
beta = Gamma('beta', alpha=0.1, beta=0.1, shape=(1,))
w = Normal('w', mu=0.0, tau=alphas, shape=(n_features,))
Normal('l', mu=xs_.dot(w), tau=beta, observed=ys)
means, _, elbos = pm.variational.advi(
model=model, n=1000, learning_rate=0.1, accurate_elbo=True)
w_post = means['w']
11
実⾏結果
回帰係数の真値(⾚)と推定値
(⻘)
訓練中の ELBO
12
コード例: Gaussian mixture model
• LogSumExp を⽤いて⽣成コンポーネントを表す確率変数を周辺
消去します.
• 尤度関数を記述すれば様々な混合分布をモデル化できます
(e.g., 正規分布+⼀様分布)
from pymc3.math import LogSumExp
# Log likelihood of normal distribution
def logp_normal(mu, tau, value):
# log probability of individual samples
k = tau.shape[0]
delta = lambda mu: value - mu
return (-1 / 2.) * (k * tt.log(2 * np.pi) + tt.log(1./det(tau)) +
(delta(mu).dot(tau) * delta(mu)).sum(axis=1))
# Log likelihood of Gaussian mixture distribution
def logp_gmix(mus, pi, tau):
def logp_(value):
logps = [tt.log(pi[i]) + logp_normal(mu, tau, value)
for i, mu in enumerate(mus)]
return tt.sum(LogSumExp(tt.stacklists(logps)[:, :n_samples], axis=0))
return logp_
13
コード例(続き)および実⾏結果
• DensityDist() を使って様々な尤度関数を定義できます.
with pm.Model() as model:
mus = [MvNormal('mu_%d' % i, mu=np.zeros(2), tau=0.1 * np.eye(2), shape=(2,)
for i in range(2)]
pi = Dirichlet('pi', a=0.1 * np.ones(2), shape=(2,))
xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data)
• ミニバッチを使うことで⼤量データに対する推定も可能です.
100,000 サンプルに対する GMM の平均推定結果.
14
コード例: Latent Dirichlet Allocation (LDA)
• PyMC3 のバックエンドである Theano の機能を使って,
スパース⾏列として与えられたデータから対数尤度を計算でき
ます.
def logp_lda_f2(phi, thetas):
def ll_docs_f(tfs):
dixs, vixs = tfs.nonzero()
vfreqs = tfs[dixs, vixs]
ll_docs = vfreqs * LogSumExp(
tt.log(thetas[dixs] + 1e-10) + tt.log(phi[vixs] + 1e-10), axis=1).ra
return tt.sum(ll_docs)
return ll_docs_f
with pm.Model() as model:
thetas = pm.Dirichlet('thetas', a=1.0 * np.ones((n_topics, n_samples)), shap
phi = pm.Dirichlet('phi', a=1.0 * np.ones((n_features, n_topics)), shape=(n_
doc = pm.DensityDist('doc', logp_lda_f2(phi, thetas.T), observed=tfs.toarray
15
最後に
PyMC3 の ADVI は実装されたばかりですが, より多くの⼈に使って
頂きたいと思います.
• PyMC3 のウェブサイト:
https://pymc-devs.github.io/pymc3/getting_started/
• ADVI のコード例:
• https://gist.github.com/taku-y/d68fdc893ff808468a98b400b2e059a2
• https://gist.github.com/taku-y/a884a0ee78fb89bf5735
Stan の ADVI はより洗練されたものとなっています.
• ADVI の Python インターフェースの有無は未調査です.
16
変分ベイズ法 (1/2)
事後分布 p(X|D) を適当な分布 q(X) で近似して, 真の事後分布との
KL ダイバージェンス KL(q(X)||p(X|D)) に近づけます.
変分下限
周辺尤度 log p(D) = log
∫
p(D, X)dX と KL ダイバージェンスの間に
次の関係が成り⽴ちます:
log p(D) = L[q(X)] + KL(q(X)||p(X|D))
L[q(X)] ≡ Eq(X)[log p(D, X) − log q(X)]
KL(·||·) ≥ 0 より log L[q(X)] ≤ log p(D), つまり L[q(X)] は周辺尤度
の下限であり, Evidence lower bound (ELBO) と呼ばれます
([HBW+13]).
17
変分ベイズ法 (2/2)
変分ベイズ法による事後分布の推定
log p(D) は q(X) に依存しないので, q(X) に関する ELBO の最⼤化は
q(X) と p(X|D) の KL ダイバージェンスの最⼩化と等価であること
が
分かります.
尤度関数 p(D|X) に対して p(X) が共役事前分布の場合,
ELBO が最⼤となる q(X) は p(X) と同じ分布族となります.
q(X1, X2) = q(X1)q(X2) と仮定し, かつそれぞれが共役事前分布の
場合, ELBO を q(X1) と q(X2) について交互に最⼤化するアルゴリズ
ムを
構成できます (EM アルゴリズムと同様のパラメータ更新則を得ま
す).
18
確率的変分ベイズ法 (1/2)
q(X) に任意の分布を使うため, q(X) を θ でパラメトライズされる
分布族とし, ELBO に対して勾配法を適⽤します.
ELBO のパラメータに関する勾配 ∇θL[q(X)] を計算する⽅法として,
次の⼆つがあります ([TL15]):
1. Log-derivative trick: ∇θq(X) = q(X)∇θ log q(X) を利⽤します.
2. Reparametrization trick: パラメータを持たない分布 q(Z) と変数
変換 X = g(Z; θ) で q(X) を表現し, q(X) に関する期待値を (パ
ラメータを持たない) q(Z) に関する期待値に置き換えます.
いずれの場合も, 勾配を期待値として計算できます:
∇θL[q(X)] = Eq(X)[f(X)]
(あるいは Eq(Z)[f(Z)])
19
確率的変分ベイズ法 (2/2)
確率的勾配勾配の式に現れる期待値計算のモンテカルロ積分による
近似:
˜∇θL[q(X)] =
1
M
M∑
m=1
f(Xm
), X ∼ q(X)
確率近似法適切にスケジューリングされた学習係数 ηt
⽤いて
パラメータを確率的に更新:
θ(t+1)
← θ(t)
+ η(t+1) ˜∇
(t+1)
θ L[q(X)]
確率的勾配の期待値が真の勾配に⼀致 ⇒ 最適解に収束 ([RM51])
このような確率的最適化に基づく事後分布推定を確率的変分ベイズ
法 (stochastic variational inference; SVI) と呼びます.
20
注意
「確率的」の意味
ここでは期待値計算をサンプリングで確率的に近似する⽅法を説明
しました.
⼀⽅, ⽬的関数の計算でデータ D のサブサンプリング (ミニバッチ)
を
⽤いた⼿法も確率的変分ベイズ法と呼ばれます ([HBW+13]).
期待値とデータのサンプリングの両⽅を組み合わせたものは
⼆重確率変分ベイズ法とも呼ばれます ([TL14]).
21
参考⽂献
• [BT00] Bishop, C. M., & Tipping, M. E. (2000, June). Variational relevance
vector machines. In Proceedings of the Sixteenth conference on Uncertainty in
artificial intelligence (pp. 46-53). Morgan Kaufmann Publishers Inc.. ARD の変
⽂ベイズ版.
• [TL14] Titsias, M., & Lázaro-Gredilla, M. (2014). Doubly stochastic variational
Bayes for non-conjugate inference. In Proceedings of the 31st International
Conference on Machine Learning (ICML-14) (pp. 1971-1979). 期待値のサンプリ
ングとデータのサンプリングを組み合わせた⼿法.
• [HBW+13] Hoffman, M. D., Blei, D. M., Wang, C., & Paisley, J. (2013).
Stochastic variational inference. The Journal of Machine Learning Research,
14(1), 1303-1347. データのサンプリングによって変分ベイズ法を⼤規模データ
に適⽤する⼿法.
• [RM51] Robbins, H., & Monro, S. (1951). A stochastic approximation method.
The annals of mathematical statistics, 400-407. 確率近似法.
• [TL15] Titsias, M., & Lázaro-Gredilla, M. (2015). Local Expectation Gradients
for Black Box Variational Inference. In Advances in Neural Information
Processing Systems (pp. 2620-2628). MC サンプリングを求積法に置き換えた⼿
法.
• [KRG+15] Kucukelbir, A., Ranganath, R., Gelman, A., & Blei, D. (2015).
Automatic variational inference in stan. In Advances in Neural Information
Processing Systems (pp. 568-576). ADVI とその Stan 実装の解説.
22

More Related Content

What's hot

階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論Taiji Suzuki
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説弘毅 露崎
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデルHiroshi Shimizu
 
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )Kenji Urai
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門tmtm otm
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知Yuya Takashina
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Yamato OKAMOTO
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing FlowAkihiro Nitta
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Shohei Taniguchi
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential EquationsDeep Learning JP
 
強化学習その3
強化学習その3強化学習その3
強化学習その3nishio
 
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−Deep Learning JP
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative ModelsDeep Learning JP
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 

What's hot (20)

階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
EMアルゴリズム
EMアルゴリズムEMアルゴリズム
EMアルゴリズム
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
MCMCでマルチレベルモデル
MCMCでマルチレベルモデルMCMCでマルチレベルモデル
MCMCでマルチレベルモデル
 
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression )
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing Flow
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 

Similar to 自動微分変分ベイズ法の紹介

StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータMiki Katsuragi
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4Takeshi Sakaki
 
PRML読み会第一章
PRML読み会第一章PRML読み会第一章
PRML読み会第一章Takushi Miki
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定Hiroshi Nakagawa
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布sleipnir002
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process ModelsDeep Learning JP
 
Data assim r
Data assim rData assim r
Data assim rXiangze
 
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slidesharewada, kazumi
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)Ryosuke Sasaki
 
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)Akihiro Nitta
 
逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎ShoutoYonekura
 
PRML復々習レーン#11
PRML復々習レーン#11PRML復々習レーン#11
PRML復々習レーン#11Takuya Fukagai
 
Bishop prml 9.3_wk77_100408-1504
Bishop prml 9.3_wk77_100408-1504Bishop prml 9.3_wk77_100408-1504
Bishop prml 9.3_wk77_100408-1504Wataru Kishimoto
 
Risk based portfolio with large dynamic covariance matrices
Risk based portfolio with large dynamic covariance matricesRisk based portfolio with large dynamic covariance matrices
Risk based portfolio with large dynamic covariance matricesKei Nakagawa
 
Bishop prml 10.2.2-10.2.5_wk77_100412-0059
Bishop prml 10.2.2-10.2.5_wk77_100412-0059Bishop prml 10.2.2-10.2.5_wk77_100412-0059
Bishop prml 10.2.2-10.2.5_wk77_100412-0059Wataru Kishimoto
 
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMCベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC基晴 出井
 
ベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-oldベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-oldNaoki Hayashi
 
PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論Akihiro Nitta
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでしたHaruka Ozaki
 

Similar to 自動微分変分ベイズ法の紹介 (20)

StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
PRML読み会第一章
PRML読み会第一章PRML読み会第一章
PRML読み会第一章
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
 
Data assim r
Data assim rData assim r
Data assim r
 
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
 
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison)
 
逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎
 
PRML復々習レーン#11
PRML復々習レーン#11PRML復々習レーン#11
PRML復々習レーン#11
 
Bishop prml 9.3_wk77_100408-1504
Bishop prml 9.3_wk77_100408-1504Bishop prml 9.3_wk77_100408-1504
Bishop prml 9.3_wk77_100408-1504
 
主成分分析
主成分分析主成分分析
主成分分析
 
Risk based portfolio with large dynamic covariance matrices
Risk based portfolio with large dynamic covariance matricesRisk based portfolio with large dynamic covariance matrices
Risk based portfolio with large dynamic covariance matrices
 
Bishop prml 10.2.2-10.2.5_wk77_100412-0059
Bishop prml 10.2.2-10.2.5_wk77_100412-0059Bishop prml 10.2.2-10.2.5_wk77_100412-0059
Bishop prml 10.2.2-10.2.5_wk77_100412-0059
 
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMCベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC
ベイズ推定でパラメータリスクを捉える&優れたサンプラーとしてのMCMC
 
ベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-oldベイズ統計学の概論的紹介-old
ベイズ統計学の概論的紹介-old
 
PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでした
 

More from Taku Yoshioka

More from Taku Yoshioka (9)

20191123 bayes dl-jp
20191123 bayes dl-jp20191123 bayes dl-jp
20191123 bayes dl-jp
 
20191026 bayes dl
20191026 bayes dl20191026 bayes dl
20191026 bayes dl
 
20191019 sinkhorn
20191019 sinkhorn20191019 sinkhorn
20191019 sinkhorn
 
20181221 q-trader
20181221 q-trader20181221 q-trader
20181221 q-trader
 
20181125 pybullet
20181125 pybullet20181125 pybullet
20181125 pybullet
 
20180722 pyro
20180722 pyro20180722 pyro
20180722 pyro
 
20171207 domain-adaptation
20171207 domain-adaptation20171207 domain-adaptation
20171207 domain-adaptation
 
20171025 pp-in-robotics
20171025 pp-in-robotics20171025 pp-in-robotics
20171025 pp-in-robotics
 
20160611 pymc3-latent
20160611 pymc3-latent20160611 pymc3-latent
20160611 pymc3-latent
 

自動微分変分ベイズ法の紹介

  • 2. この発表で⾔いたいこと ⾃動微分変分ベイズ法が実装された Stan や PyMC3 といった ソフトウェアを使うことで, 確率モデルを記述するだけで 変分ベイズ推定を実⾏できます. 2
  • 5. ベイズ推定 ベイズ推定は観測データに基づいて確率モデルのパラメータの不確 かさを 推定する⽅法です. p(X|D) = p(D|X)p(X) p(D) • X: 確率モデルのパラメータ • D: 観測データ • p(X): 確率モデルのパラメータ事前分布 • p(D|X): 尤度 • p(X|D): 確率モデルのパラメータ事後分布 事後分布を解析的に計算できるのは限られた場合であり, 複雑な確率モデルでは近似計算が必要です. 5
  • 6. ベイズ推定の近似計算 MCMC 事後分布からサンプリングを⾏う⽅法です. • ⻑所: 複雑な式の導出が不要 (尤度と事前分布を記述すれば良く, 分布に関する仮定が緩い) • 短所: マルコフ連鎖の収束判定が難しい 変分ベイズ法 事後分布を試験分布で近似する⽅法です. • ⻑所: MCMC と⽐べて収束が速い • 短所: 確率モデルごとにパラメータ更新式の導出 (とコーディング)が必要 6
  • 7. ⾃動微分変分ベイズ法 • 確率変数の変換と確率的最適化を組み合わせることで 変分ベイズ推定を⾃動的に実⾏する⽅法です ([KRG+15]). • Automatic differentiation variational inference (ADVI) と呼ばれます. • MCMC と変分ベイズ法の⻑所を兼ね備えた⽅法です: • 複雑な式の導出が不要 • 収束が速い • Stan, PyMC3 に実装されています. 7
  • 8. ADVI の原理 確率変数の変換 • 確率変数の定義域が数直線となるような変換 • 確率変数の分布を定める変分パラメータによる変換 確率的最適化 • 周辺尤度の変分下限 (ELBO) の最⼤化 • モンテカルロ法による期待値計算の近似 8
  • 9. ADVI の制限 1. 離散確率変数を扱うことができません. • 勾配法による最適化を⾏うためです. • 観測変数は離散値でも OK です. 2. 近似事後分布はサンプリングが簡単に実⾏できるものに 限られます. • Stan, PyMC3 共に正規分布を仮定します. • Stan は多変量正規分布もサポートします. 9
  • 10. PyMC3 のコード例 • Automatic relevance determination (ARD) • Gaussian mixture model • Latent Dirichlet Allocation (LDA) 10
  • 11. コード例: Automatic relevance determination (ARD) • with ブロックで確率モデルを記述します. • 必要な変数変換は⾃動的に適⽤されます (ここでは alphas, beta). • pm.variational.advi() にモデルを渡すことで ADVI が実⾏されま す. • 戻り値 mean はパラメータ事後分布の平均値です. with Model() as model: # Prior precisions alphas = Gamma('alphas', alpha=1e-6, beta=1e-6, shape=(n_features,)) beta = Gamma('beta', alpha=0.1, beta=0.1, shape=(1,)) w = Normal('w', mu=0.0, tau=alphas, shape=(n_features,)) Normal('l', mu=xs_.dot(w), tau=beta, observed=ys) means, _, elbos = pm.variational.advi( model=model, n=1000, learning_rate=0.1, accurate_elbo=True) w_post = means['w'] 11
  • 13. コード例: Gaussian mixture model • LogSumExp を⽤いて⽣成コンポーネントを表す確率変数を周辺 消去します. • 尤度関数を記述すれば様々な混合分布をモデル化できます (e.g., 正規分布+⼀様分布) from pymc3.math import LogSumExp # Log likelihood of normal distribution def logp_normal(mu, tau, value): # log probability of individual samples k = tau.shape[0] delta = lambda mu: value - mu return (-1 / 2.) * (k * tt.log(2 * np.pi) + tt.log(1./det(tau)) + (delta(mu).dot(tau) * delta(mu)).sum(axis=1)) # Log likelihood of Gaussian mixture distribution def logp_gmix(mus, pi, tau): def logp_(value): logps = [tt.log(pi[i]) + logp_normal(mu, tau, value) for i, mu in enumerate(mus)] return tt.sum(LogSumExp(tt.stacklists(logps)[:, :n_samples], axis=0)) return logp_ 13
  • 14. コード例(続き)および実⾏結果 • DensityDist() を使って様々な尤度関数を定義できます. with pm.Model() as model: mus = [MvNormal('mu_%d' % i, mu=np.zeros(2), tau=0.1 * np.eye(2), shape=(2,) for i in range(2)] pi = Dirichlet('pi', a=0.1 * np.ones(2), shape=(2,)) xs = DensityDist('x', logp_gmix(mus, pi, np.eye(2)), observed=data) • ミニバッチを使うことで⼤量データに対する推定も可能です. 100,000 サンプルに対する GMM の平均推定結果. 14
  • 15. コード例: Latent Dirichlet Allocation (LDA) • PyMC3 のバックエンドである Theano の機能を使って, スパース⾏列として与えられたデータから対数尤度を計算でき ます. def logp_lda_f2(phi, thetas): def ll_docs_f(tfs): dixs, vixs = tfs.nonzero() vfreqs = tfs[dixs, vixs] ll_docs = vfreqs * LogSumExp( tt.log(thetas[dixs] + 1e-10) + tt.log(phi[vixs] + 1e-10), axis=1).ra return tt.sum(ll_docs) return ll_docs_f with pm.Model() as model: thetas = pm.Dirichlet('thetas', a=1.0 * np.ones((n_topics, n_samples)), shap phi = pm.Dirichlet('phi', a=1.0 * np.ones((n_features, n_topics)), shape=(n_ doc = pm.DensityDist('doc', logp_lda_f2(phi, thetas.T), observed=tfs.toarray 15
  • 16. 最後に PyMC3 の ADVI は実装されたばかりですが, より多くの⼈に使って 頂きたいと思います. • PyMC3 のウェブサイト: https://pymc-devs.github.io/pymc3/getting_started/ • ADVI のコード例: • https://gist.github.com/taku-y/d68fdc893ff808468a98b400b2e059a2 • https://gist.github.com/taku-y/a884a0ee78fb89bf5735 Stan の ADVI はより洗練されたものとなっています. • ADVI の Python インターフェースの有無は未調査です. 16
  • 17. 変分ベイズ法 (1/2) 事後分布 p(X|D) を適当な分布 q(X) で近似して, 真の事後分布との KL ダイバージェンス KL(q(X)||p(X|D)) に近づけます. 変分下限 周辺尤度 log p(D) = log ∫ p(D, X)dX と KL ダイバージェンスの間に 次の関係が成り⽴ちます: log p(D) = L[q(X)] + KL(q(X)||p(X|D)) L[q(X)] ≡ Eq(X)[log p(D, X) − log q(X)] KL(·||·) ≥ 0 より log L[q(X)] ≤ log p(D), つまり L[q(X)] は周辺尤度 の下限であり, Evidence lower bound (ELBO) と呼ばれます ([HBW+13]). 17
  • 18. 変分ベイズ法 (2/2) 変分ベイズ法による事後分布の推定 log p(D) は q(X) に依存しないので, q(X) に関する ELBO の最⼤化は q(X) と p(X|D) の KL ダイバージェンスの最⼩化と等価であること が 分かります. 尤度関数 p(D|X) に対して p(X) が共役事前分布の場合, ELBO が最⼤となる q(X) は p(X) と同じ分布族となります. q(X1, X2) = q(X1)q(X2) と仮定し, かつそれぞれが共役事前分布の 場合, ELBO を q(X1) と q(X2) について交互に最⼤化するアルゴリズ ムを 構成できます (EM アルゴリズムと同様のパラメータ更新則を得ま す). 18
  • 19. 確率的変分ベイズ法 (1/2) q(X) に任意の分布を使うため, q(X) を θ でパラメトライズされる 分布族とし, ELBO に対して勾配法を適⽤します. ELBO のパラメータに関する勾配 ∇θL[q(X)] を計算する⽅法として, 次の⼆つがあります ([TL15]): 1. Log-derivative trick: ∇θq(X) = q(X)∇θ log q(X) を利⽤します. 2. Reparametrization trick: パラメータを持たない分布 q(Z) と変数 変換 X = g(Z; θ) で q(X) を表現し, q(X) に関する期待値を (パ ラメータを持たない) q(Z) に関する期待値に置き換えます. いずれの場合も, 勾配を期待値として計算できます: ∇θL[q(X)] = Eq(X)[f(X)] (あるいは Eq(Z)[f(Z)]) 19
  • 20. 確率的変分ベイズ法 (2/2) 確率的勾配勾配の式に現れる期待値計算のモンテカルロ積分による 近似: ˜∇θL[q(X)] = 1 M M∑ m=1 f(Xm ), X ∼ q(X) 確率近似法適切にスケジューリングされた学習係数 ηt ⽤いて パラメータを確率的に更新: θ(t+1) ← θ(t) + η(t+1) ˜∇ (t+1) θ L[q(X)] 確率的勾配の期待値が真の勾配に⼀致 ⇒ 最適解に収束 ([RM51]) このような確率的最適化に基づく事後分布推定を確率的変分ベイズ 法 (stochastic variational inference; SVI) と呼びます. 20
  • 21. 注意 「確率的」の意味 ここでは期待値計算をサンプリングで確率的に近似する⽅法を説明 しました. ⼀⽅, ⽬的関数の計算でデータ D のサブサンプリング (ミニバッチ) を ⽤いた⼿法も確率的変分ベイズ法と呼ばれます ([HBW+13]). 期待値とデータのサンプリングの両⽅を組み合わせたものは ⼆重確率変分ベイズ法とも呼ばれます ([TL14]). 21
  • 22. 参考⽂献 • [BT00] Bishop, C. M., & Tipping, M. E. (2000, June). Variational relevance vector machines. In Proceedings of the Sixteenth conference on Uncertainty in artificial intelligence (pp. 46-53). Morgan Kaufmann Publishers Inc.. ARD の変 ⽂ベイズ版. • [TL14] Titsias, M., & Lázaro-Gredilla, M. (2014). Doubly stochastic variational Bayes for non-conjugate inference. In Proceedings of the 31st International Conference on Machine Learning (ICML-14) (pp. 1971-1979). 期待値のサンプリ ングとデータのサンプリングを組み合わせた⼿法. • [HBW+13] Hoffman, M. D., Blei, D. M., Wang, C., & Paisley, J. (2013). Stochastic variational inference. The Journal of Machine Learning Research, 14(1), 1303-1347. データのサンプリングによって変分ベイズ法を⼤規模データ に適⽤する⼿法. • [RM51] Robbins, H., & Monro, S. (1951). A stochastic approximation method. The annals of mathematical statistics, 400-407. 確率近似法. • [TL15] Titsias, M., & Lázaro-Gredilla, M. (2015). Local Expectation Gradients for Black Box Variational Inference. In Advances in Neural Information Processing Systems (pp. 2620-2628). MC サンプリングを求積法に置き換えた⼿ 法. • [KRG+15] Kucukelbir, A., Ranganath, R., Gelman, A., & Blei, D. (2015). Automatic variational inference in stan. In Advances in Neural Information Processing Systems (pp. 568-576). ADVI とその Stan 実装の解説. 22