SlideShare a Scribd company logo
深層学習と確率プログラミングを
融合したEdwardについて
小島 諒介(京都大学)
人工知能セミナー
確率プログラミングの世界:論理と確率をつなぐ人工知能
自己紹介
深層学習と確率プログラミングを融合した についてEdward 1
• 名前:小島 諒介
• 略歴:
2014年 東京工業大学 修士課程修了
2017年 東京工業大学 博士(工学)
京都大学 医学研究科 人間健康科学系専攻
ビッグデータ医科学分野 特定助教
• 興味:
人工知能の手法開発と実世界応用(特に時系列データ分析)
• 好きな確率プログラミング言語:
PRISM, Edward, PyMC3, Anglican, ProPPR
PRISM(開発メンバー)
深層学習と確率プログラミング
• 深層学習
– 人間が明確なモデルが与えられないような状況で学習するような問題
に適している.入力・出力のペアからモデルを学習するような状況.
2
入力
出力
ニンジン切ってる
• 確率プログラミング
– 明確にデータの生成過程(モデル)をプログラミング言語を用いて
柔軟に設計できる.規則・法則があるものに適している.
「野菜を切って炒める」 「野菜を炒めて切る」
得意分野が異なる →組み合わせたら面白そう
“Multimodal Scene Understanding Framework and Its Application to Cooking Recognition”
R.Kojima, O.Sugiyama, K.Nakadai, Applied Artificial Intelligence, 30(3) :181--200 2016.
深層学習と確率プログラミングを組み合わせた例
3
深層学習
(画像+音)
深層学習
+PRISM
(画像+音
+レシピ) 答え
各認識器の出力
(動作)
各認識器の出力
(対象)
深層学習と確率プログラミングを組み合わせた例
深層学習と確率プログラミングを融合した についてEdward 4
深層学習と確率プログラミングのシステムが分離している
• システム全体の最適化が難しい
• デバッグ・チューニングが困難
レシピモデル
出力
ニンジン切ってる
玉ねぎ焼いてる
時間 ニンジン切ってる
玉ねぎ切ってる
玉ねぎ切ってる
時間 ニンジン切ってる
玉ねぎ切ってる
深層学習ツール(Theano)
確率プログラミング(PRISM)
統合したツールが欲しい!!
認識ミスをレシピから修正
• Python / Tensorflow 上に実装
された確率プログラミング言語
– Tensorflow 上の他の便利なライブラ
リ(Keras, slim, etc.)を活用可能
– GPUによる高速化の恩恵が受けられる
確率プログラミング言語Edward
Edward
深層学習と確率プログラミングを融合した についてEdward 5
• モデル・推論・評価の3ステップを
設計するための機能を提供
“Edward: A library for probabilistic modeling, inference, and criticism”
Dustin Tran, Alp Kucukelbir, Adji B. Dieng, Maja Rudolph, Dawen Liang,
and David M. Blei. 2016. . arXiv preprint arXiv:1610.09787.
http://edwardlib.org
Tensorflow の基本的な仕組み
import tensorflow as tf
with tf.Session() as sess:
a=tf.Variable(1.0, name="a")
b=tf.Variable(2.0, name="b")
c=tf.Variable(3.0, name="c")
output=a * b + c
深層学習と確率プログラミングを融合した についてEdward 6
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(output))
> 5
計算グラフ
実際の計算は run の
ところで行われる
(CPU, GPU への計算の割り振
りも計算グラフ上で計画する)
Edward の基本的な仕組み
深層学習と確率プログラミングを融合した についてEdward 7
import tensorflow as tf
from edward.models import *
with tf.Session() as sess:
a=tf.Variable(1.0, name="a")
b=tf.Variable(2.0, name="b")
c=Normal(loc=0.0,
scale=1.0, name="c")
output=a * b + c
print(sess.run(output))
> 4.2449 #実行するごとに異なる結果
計算グラフ
Edwardを用いると
Tensorflow の計算グラフ上に「確率変数」が入れることが可能
確率モデリングと推論
𝑝𝑝 𝐱𝐱 = � 𝑝𝑝 𝐱𝐱, 𝐳𝐳 𝑑𝑑𝐳𝐳
推論問題
𝑝𝑝 𝐳𝐳|𝐱𝐱 = 𝑝𝑝(𝐱𝐱, 𝐳𝐳)/𝑝𝑝(𝐱𝐱)
潜在変数:𝐳𝐳
観測変数:𝐱𝐱
潜在変数すべてについての積分
が必要なので計算困難
確率モデリングでは同時分布 𝑝𝑝(𝐱𝐱, 𝐳𝐳) を規定する
(実際にはいくつかの条件付き分布に分解してモデリング)
深層学習と確率プログラミングを融合した についてEdward 8
𝑝𝑝 𝐳𝐳|𝐱𝐱 の代わりに𝑞𝑞 𝐳𝐳 を計算
• MCMC
• 変分推論
Edwardによる確率モデリングと推論
𝑝𝑝 𝐱𝐱 = � 𝑝𝑝 𝐱𝐱, 𝐳𝐳 𝑑𝑑𝐳𝐳
推論問題
𝑝𝑝 𝐳𝐳|𝐱𝐱 = 𝑝𝑝(𝐱𝐱, 𝐳𝐳)/𝑝𝑝(𝐱𝐱)
潜在変数:𝐳𝐳
観測変数:𝐱𝐱
潜在変数すべてについての積分
が必要なので計算困難
同時分布 𝑝𝑝(𝐱𝐱, 𝐳𝐳) を計算グラフで表現
深層学習と確率プログラミングを融合した についてEdward 9
𝑝𝑝 𝐳𝐳|𝐱𝐱 の代わりに利用する𝑞𝑞 𝐳𝐳 を計算グラフで表現
• MCMC
• 変分推論
推論を行うための計算グラフを自動生成
例1 混合ガウス
𝑝𝑝 𝐱𝐱𝑛𝑛 𝝅𝝅, 𝝁𝝁, 𝝈𝝈 = �
𝑘𝑘=1
𝐾𝐾
𝜋𝜋𝑘𝑘 Normal 𝐱𝐱𝑛𝑛|𝝁𝝁𝑘𝑘, 𝝈𝝈𝑘𝑘
深層学習と確率プログラミングを融合した についてEdward 10
𝝅𝝅 = 𝜋𝜋1, 𝜋𝜋2, … , 𝜋𝜋𝑘𝑘, … , 𝜋𝜋𝐾𝐾
𝑎𝑎, 𝑏𝑏, 𝛼𝛼: ハイパーパラメータ
0 ≤ 𝑛𝑛 < 𝑁𝑁
𝑝𝑝 𝝅𝝅 = Dirichlet 𝝅𝝅|𝛼𝛼𝟏𝟏𝐾𝐾
𝑝𝑝 𝝁𝝁𝑘𝑘 = Normal 𝝁𝝁𝑘𝑘|𝟎𝟎, 𝟏𝟏
𝑝𝑝 𝝈𝝈𝑘𝑘
2
= InverseGamma 𝝈𝝈𝑘𝑘
2
|𝑎𝑎, 𝑏𝑏
データセット𝐗𝐗 中の𝑛𝑛番目のデータ𝐱𝐱 𝑛𝑛
𝐷𝐷 = 2, 𝐾𝐾 = 2
(𝐷𝐷次元, 0 ≤ 𝑛𝑛 < 𝑁𝑁 )
例1 混合ガウス:Edward によるモデリング
from edward.models import *
K = 2
N = 100
D = 2
pi = Dirichlet(tf.ones(K))
mu = Normal(tf.zeros(D), tf.ones(D), sample_shape=K)
sigmasq = InverseGamma(tf.ones(D), tf.ones(D),
sample_shape=K)
x = ParamMixture(pi,
{'loc': mu, 'scale_diag': tf.sqrt(sigmasq)},
MultivariateNormalDiag,
sample_shape=N)
深層学習と確率プログラミングを融合した についてEdward 11
𝑝𝑝 𝝅𝝅 = Dirichlet 𝝅𝝅|𝛼𝛼𝟏𝟏𝐾𝐾
𝑝𝑝 𝝁𝝁 = Normal 𝝁𝝁|𝟎𝟎, 𝟏𝟏
𝑝𝑝 𝝈𝝈𝑘𝑘
2
= InverseGamma 𝝈𝝈𝑘𝑘
2
|𝑎𝑎, 𝑏𝑏
𝑝𝑝 𝐱𝐱 𝑛𝑛 𝝅𝝅, 𝝁𝝁, 𝝈𝝈 = �
𝑘𝑘=1
𝐾𝐾
𝜋𝜋𝑘𝑘 Normal 𝐱𝐱 𝑛𝑛|𝝁𝝁𝑘𝑘, 𝝈𝝈𝑘𝑘
例1 混合ガウス:Edward によるモデリング
深層学習と確率プログラミングを融合した についてEdward 12
Edward による混合ガウスモデルの計算グラフ
ParamMixtureの詳細
例1 混合ガウス: Edward による推論
深層学習と確率プログラミングを融合した についてEdward 13
T = 500 # サンプル数
qpi = Empirical(tf.Variable(tf.ones([T, K]) / K))
qmu = Empirical(tf.Variable(tf.zeros([T, K, D])))
qsigmasq = Empirical(tf.Variable(tf.ones([T, K, D])))
qz = Empirical(tf.Variable(tf.zeros([T, N], dtype=tf.int32)))
𝑝𝑝 𝐳𝐳|𝐱𝐱 を近似するための分布𝑞𝑞 𝐳𝐳 を定義
inference = ed.Gibbs(
{pi: qpi, mu: qmu, sigmasq: qsigmasq, z: qz},
data={x: x_train})
近似する分布のペアを与えてGibbsサンプリングのための計算グラフを作成
inference.run()
計算を実行
もう一つの手法:変分推論
𝝓𝝓∗
= argmin𝝓𝝓 𝐾𝐾𝐾𝐾 𝑞𝑞 𝐳𝐳; 𝝓𝝓 | 𝑝𝑝(𝐳𝐳|𝐱𝐱))
𝑝𝑝 𝐳𝐳|𝐱𝐱 に KL-divergence の意味で“近い” 𝑞𝑞 𝐳𝐳; 𝝓𝝓 で近似する
深層学習と確率プログラミングを融合した についてEdward 14
𝐿𝐿 𝝓𝝓 = 𝐸𝐸𝑞𝑞(𝐳𝐳; 𝝓𝝓) log 𝑝𝑝(𝐱𝐱, 𝐳𝐳) − 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑞𝑞(𝐳𝐳; 𝝓𝝓)
𝐾𝐾𝐾𝐾 𝑞𝑞 𝐳𝐳 | 𝑝𝑝(𝐳𝐳|𝐱𝐱)) = 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑝𝑝 𝐳𝐳 𝐱𝐱 − 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑞𝑞(𝐳𝐳; 𝝓𝝓)
𝝓𝝓∗ = argmax 𝝓𝝓 𝐿𝐿 𝝓𝝓
𝛻𝛻𝜙𝜙 𝐿𝐿 𝝓𝝓 = 𝛻𝛻𝜙𝜙 �
�𝐳𝐳
𝑞𝑞(�𝐳𝐳; 𝝓𝝓) log 𝑝𝑝(𝐱𝐱, �𝐳𝐳) − log 𝑞𝑞(�𝐳𝐳; 𝝓𝝓)
Edward ではこの最適化問題をnoisy gradient を用いた勾配
法で解く(Black Box VariationaI Inference)
�𝐳𝐳~𝑞𝑞(�𝐳𝐳; 𝝓𝝓)
以下の問題を解く
𝑞𝑞(�𝐳𝐳; 𝝓𝝓)と𝑝𝑝(𝐱𝐱, �𝐳𝐳)の計算グラフが与えられれば,
Tensorflowの自動微分により勾配が計算可能
実例2 : VAE (Variational Auto Encoder)
𝐳𝐳
𝝁𝝁
𝚺𝚺
深層学習と確率プログラミングを融合した についてEdward 15
N=100
D=2
Mu=tf.zeros([N, D])
sigma=tf.ones([N, D])
z = Normal(loc=mu,scale=sigma)
hidden = Dense(256)(z.value())
x = Bernoulli(logits=hidden)
Kerasによる
ニューラルネット
のコード
モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ)
𝐱𝐱
実例2 : VAE (Variational Auto Encoder)
x_ph = tf.placeholder(tf.float32, [N, 256])
mu = Dense(256)(x_ph)
sigma = Dense(256, activation='softplus')(x_ph)
qz = Normal(loc=mu, scale=sigma)
深層学習と確率プログラミングを融合した についてEdward 16
𝐳𝐳
𝝁𝝁
𝚺𝚺
推論𝑞𝑞(𝐳𝐳|𝐱𝐱)(エンコーダ)
𝑞𝑞(𝐳𝐳|𝐱𝐱ph)
Kerasによる
ニューラルネット
のコード
𝐱𝐱ph 𝐱𝐱
inference = ed.KLqp({z: qz}, data={x: x_ph})
inference.run()
実例2 : VAE (Variational Auto Encoder)
深層学習と確率プログラミングを融合した についてEdward 17
𝐳𝐳
𝝁𝝁
𝚺𝚺
𝑞𝑞(𝐳𝐳|𝐱𝐱ph)
𝐱𝐱ph 𝐱𝐱
変分推論を使って推論を行う
グラフを構築する
z = Normal(loc=mu,scale=sigma)
hidden = Dense(4*4*128,activation=None)(z.value())
hidden=Reshape([4,4,128])(hidden)
hidden=Conv2DTranspose(64,(2,2),strides=(2, 2)) (hidden)
hidden=BatchNormalization() (hidden)
hidden=LeakyReLU(alpha=0.2)(hidden)
……
x = Bernoulli(logits=hidden)
実例2 : VAE (Variational Auto Encoder)
18
Kerasを用いてより複雑なニューラルネットのコードを書く
ことも可能
モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ)
z = Normal(loc=mu,scale=sigma)
hidden = Dense(4*4*128,activation=None)(z.value())
hidden=Reshape([4,4,128])(hidden)
hidden=Conv2DTranspose(64,(2,2),strides=(2, 2)) (hidden)
hidden=BatchNormalization() (hidden)
hidden=LeakyReLU(alpha=0.2)(hidden)
……
x = Bernoulli(logits=hidden)
実例2 : VAE (Variational Auto Encoder)
19
Kerasを用いてより複雑なニューラルネットのコードを書く
ことも可能
モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ)
学習データ
アニメイラストの顔データセット
http://www.nurs.or.jp/~nagadomi/
animeface-character-dataset/
生成したデータ
実例3 : GAN (Generative Adversarial Network)
深層学習と確率プログラミングを融合した についてEdward 20
min
𝜃𝜃
max
𝜙𝜙
𝐸𝐸𝑝𝑝∗(𝐱𝐱) log 𝐷𝐷(𝐱𝐱; 𝝓𝝓) + 𝐸𝐸𝑝𝑝(𝐱𝐱;𝜽𝜽) log 1 − 𝐷𝐷(𝐱𝐱; 𝝓𝝓)
目的関数
inference = ed.GANInference( data={x: x_ph},
discriminator=discriminative_network)
モデルから生成されたデータと学習データを識別する識別器と
生成モデルを競わせることでデータの分布を学習させる手法
実例3 : GAN (Generative Adversarial Network)
深層学習と確率プログラミングを融合した についてEdward 21
min
𝜃𝜃
max
𝜙𝜙
𝐸𝐸𝑝𝑝∗(𝐱𝐱) log 𝐷𝐷(𝐱𝐱; 𝝓𝝓) + 𝐸𝐸𝑝𝑝(𝐱𝐱;𝜽𝜽) log 1 − 𝐷𝐷(𝐱𝐱; 𝝓𝝓)
目的関数
inference = ed.GANInference( data={x: x_ph},
discriminator=discriminative_network)
モデルから生成されたデータと学習データを識別する識別器と
生成モデルを競わせることでデータの分布を学習させる手法
生成したデータ学習データ(MNIST)
Edward (現バージョン)でのノウハウ
• 大きいモデルをいきなり書かくと危険
– サンプルにあるモデルから徐々に変数を追加していくのが吉
• 現状ではデバッグの手段が限られている(Tensorboad は利用可能)
• 計算結果がNanとなってしまうことを回避
• 学習法はモデルに応じて適切に選ぶ必要がある
– ニューラルネット色の濃いモデルなら変分推論,確率モデル
色の濃いモデルならMCMC
– 未実装の機能やいくつかあるが,どんどん実装されている
深層学習と確率プログラミングを融合した についてEdward 22
まとめ
• 確率モデルをTensorflow上で計算・実装できる
Python ライブラリEdwardを紹介
– MCMCによる推論の例:混合ガウスモデル
– 変分推論の例:VAE
– GAN
• 今後,Edwardを用いたアプリケーションが期待される
– ハードウェアによる高速化(GPUによる高速な行列計算)の活用
– 大量・高次元のデータ処理への可能性
深層学習と確率プログラミングを融合した についてEdward 23

More Related Content

What's hot

SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
Eiji Uchibe
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
cvpaper. challenge
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
Satoshi Hara
 
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFNNeural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
emakryo
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
Deep Learning JP
 
深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定
Masaaki Imaizumi
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
Taiji Suzuki
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
弘毅 露崎
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
Deep Learning JP
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法
Tatsuya Shirakawa
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
Yusuke Uchida
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
joisino
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
joisino
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
Deep Learning JP
 
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
 

What's hot (20)

SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFNNeural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
 
深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
 
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 

Viewers also liked

Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Yahoo!デベロッパーネットワーク
 
データサイエンティスト協会スキル委員会4thシンポジウム講演資料
データサイエンティスト協会スキル委員会4thシンポジウム講演資料データサイエンティスト協会スキル委員会4thシンポジウム講演資料
データサイエンティスト協会スキル委員会4thシンポジウム講演資料
The Japan DataScientist Society
 
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化
Isao Takaesu
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Yahoo!デベロッパーネットワーク
 
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
Shinichi Nakagawa
 
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Netwalker lab kapper
 
スキルチェックリスト 2017年版
スキルチェックリスト 2017年版スキルチェックリスト 2017年版
スキルチェックリスト 2017年版
The Japan DataScientist Society
 
Kaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solutionKaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solution
Kazuki Onodera
 
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
満徳 関
 
Pycon2017
Pycon2017Pycon2017
Pycon2017
Yuta Kashino
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
Tetsutaro Watanabe
 
エンジニアのための経営学
エンジニアのための経営学エンジニアのための経営学
エンジニアのための経営学
Michitaka Yumoto
 
これからはじめるインフラエンジニア
これからはじめるインフラエンジニアこれからはじめるインフラエンジニア
これからはじめるインフラエンジニア外道 父
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
 
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか? Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
Google Cloud Platform - Japan
 

Viewers also liked (15)

Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
 
データサイエンティスト協会スキル委員会4thシンポジウム講演資料
データサイエンティスト協会スキル委員会4thシンポジウム講演資料データサイエンティスト協会スキル委員会4thシンポジウム講演資料
データサイエンティスト協会スキル委員会4thシンポジウム講演資料
 
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
 
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
 
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
 
スキルチェックリスト 2017年版
スキルチェックリスト 2017年版スキルチェックリスト 2017年版
スキルチェックリスト 2017年版
 
Kaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solutionKaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solution
 
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
 
Pycon2017
Pycon2017Pycon2017
Pycon2017
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
 
エンジニアのための経営学
エンジニアのための経営学エンジニアのための経営学
エンジニアのための経営学
 
これからはじめるインフラエンジニア
これからはじめるインフラエンジニアこれからはじめるインフラエンジニア
これからはじめるインフラエンジニア
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか? Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
Cloud OnAir #04 今話題の機械学習・GCP で何ができるのか?
 

Similar to 深層学習と確率プログラミングを融合したEdwardについて

20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1
Kenta Oono
 
東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 ClusteringHiroshi Ono
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能
Hiroshi Nakagawa
 
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
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
hirokazutanaka
 
公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号
Joe Suzuki
 
行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術
Yoshihiro Mizoguchi
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号
Joe Suzuki
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"
Isao Takaesu
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
Deep Learning JP
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
遺伝的アルゴリズム(Genetic Algorithm)を始めよう! 【簡略版】遺伝的アルゴリズム(Genetic Algorithm)を始めよう! 【簡略版】
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
Kazuhide Okamura
 
20200704 bsp net
20200704 bsp net20200704 bsp net
20200704 bsp net
Takuya Minagawa
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
magoroku Yamamoto
 
Integrating different data types by regularized unsupervised multiple kernel...
Integrating different data types by regularized  unsupervised multiple kernel...Integrating different data types by regularized  unsupervised multiple kernel...
Integrating different data types by regularized unsupervised multiple kernel...
Y-h Taguchi
 
20170806 Discriminative Optimization
20170806 Discriminative Optimization20170806 Discriminative Optimization
20170806 Discriminative Optimization
Takuya Minagawa
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
Ryosuke Sasaki
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
hirokazutanaka
 

Similar to 深層学習と確率プログラミングを融合したEdwardについて (20)

20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1
 
東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能
 
PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論PRML 1.5-1.5.5 決定理論
PRML 1.5-1.5.5 決定理論
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
 
公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号
 
行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
遺伝的アルゴリズム(Genetic Algorithm)を始めよう! 【簡略版】遺伝的アルゴリズム(Genetic Algorithm)を始めよう! 【簡略版】
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
 
20200704 bsp net
20200704 bsp net20200704 bsp net
20200704 bsp net
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
 
Integrating different data types by regularized unsupervised multiple kernel...
Integrating different data types by regularized  unsupervised multiple kernel...Integrating different data types by regularized  unsupervised multiple kernel...
Integrating different data types by regularized unsupervised multiple kernel...
 
20170806 Discriminative Optimization
20170806 Discriminative Optimization20170806 Discriminative Optimization
20170806 Discriminative Optimization
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
 

深層学習と確率プログラミングを融合したEdwardについて

  • 2. 自己紹介 深層学習と確率プログラミングを融合した についてEdward 1 • 名前:小島 諒介 • 略歴: 2014年 東京工業大学 修士課程修了 2017年 東京工業大学 博士(工学) 京都大学 医学研究科 人間健康科学系専攻 ビッグデータ医科学分野 特定助教 • 興味: 人工知能の手法開発と実世界応用(特に時系列データ分析) • 好きな確率プログラミング言語: PRISM, Edward, PyMC3, Anglican, ProPPR PRISM(開発メンバー)
  • 3. 深層学習と確率プログラミング • 深層学習 – 人間が明確なモデルが与えられないような状況で学習するような問題 に適している.入力・出力のペアからモデルを学習するような状況. 2 入力 出力 ニンジン切ってる • 確率プログラミング – 明確にデータの生成過程(モデル)をプログラミング言語を用いて 柔軟に設計できる.規則・法則があるものに適している. 「野菜を切って炒める」 「野菜を炒めて切る」 得意分野が異なる →組み合わせたら面白そう
  • 4. “Multimodal Scene Understanding Framework and Its Application to Cooking Recognition” R.Kojima, O.Sugiyama, K.Nakadai, Applied Artificial Intelligence, 30(3) :181--200 2016. 深層学習と確率プログラミングを組み合わせた例 3 深層学習 (画像+音) 深層学習 +PRISM (画像+音 +レシピ) 答え 各認識器の出力 (動作) 各認識器の出力 (対象)
  • 5. 深層学習と確率プログラミングを組み合わせた例 深層学習と確率プログラミングを融合した についてEdward 4 深層学習と確率プログラミングのシステムが分離している • システム全体の最適化が難しい • デバッグ・チューニングが困難 レシピモデル 出力 ニンジン切ってる 玉ねぎ焼いてる 時間 ニンジン切ってる 玉ねぎ切ってる 玉ねぎ切ってる 時間 ニンジン切ってる 玉ねぎ切ってる 深層学習ツール(Theano) 確率プログラミング(PRISM) 統合したツールが欲しい!! 認識ミスをレシピから修正
  • 6. • Python / Tensorflow 上に実装 された確率プログラミング言語 – Tensorflow 上の他の便利なライブラ リ(Keras, slim, etc.)を活用可能 – GPUによる高速化の恩恵が受けられる 確率プログラミング言語Edward Edward 深層学習と確率プログラミングを融合した についてEdward 5 • モデル・推論・評価の3ステップを 設計するための機能を提供 “Edward: A library for probabilistic modeling, inference, and criticism” Dustin Tran, Alp Kucukelbir, Adji B. Dieng, Maja Rudolph, Dawen Liang, and David M. Blei. 2016. . arXiv preprint arXiv:1610.09787. http://edwardlib.org
  • 7. Tensorflow の基本的な仕組み import tensorflow as tf with tf.Session() as sess: a=tf.Variable(1.0, name="a") b=tf.Variable(2.0, name="b") c=tf.Variable(3.0, name="c") output=a * b + c 深層学習と確率プログラミングを融合した についてEdward 6 init = tf.global_variables_initializer() sess.run(init) print(sess.run(output)) > 5 計算グラフ 実際の計算は run の ところで行われる (CPU, GPU への計算の割り振 りも計算グラフ上で計画する)
  • 8. Edward の基本的な仕組み 深層学習と確率プログラミングを融合した についてEdward 7 import tensorflow as tf from edward.models import * with tf.Session() as sess: a=tf.Variable(1.0, name="a") b=tf.Variable(2.0, name="b") c=Normal(loc=0.0, scale=1.0, name="c") output=a * b + c print(sess.run(output)) > 4.2449 #実行するごとに異なる結果 計算グラフ Edwardを用いると Tensorflow の計算グラフ上に「確率変数」が入れることが可能
  • 9. 確率モデリングと推論 𝑝𝑝 𝐱𝐱 = � 𝑝𝑝 𝐱𝐱, 𝐳𝐳 𝑑𝑑𝐳𝐳 推論問題 𝑝𝑝 𝐳𝐳|𝐱𝐱 = 𝑝𝑝(𝐱𝐱, 𝐳𝐳)/𝑝𝑝(𝐱𝐱) 潜在変数:𝐳𝐳 観測変数:𝐱𝐱 潜在変数すべてについての積分 が必要なので計算困難 確率モデリングでは同時分布 𝑝𝑝(𝐱𝐱, 𝐳𝐳) を規定する (実際にはいくつかの条件付き分布に分解してモデリング) 深層学習と確率プログラミングを融合した についてEdward 8 𝑝𝑝 𝐳𝐳|𝐱𝐱 の代わりに𝑞𝑞 𝐳𝐳 を計算 • MCMC • 変分推論
  • 10. Edwardによる確率モデリングと推論 𝑝𝑝 𝐱𝐱 = � 𝑝𝑝 𝐱𝐱, 𝐳𝐳 𝑑𝑑𝐳𝐳 推論問題 𝑝𝑝 𝐳𝐳|𝐱𝐱 = 𝑝𝑝(𝐱𝐱, 𝐳𝐳)/𝑝𝑝(𝐱𝐱) 潜在変数:𝐳𝐳 観測変数:𝐱𝐱 潜在変数すべてについての積分 が必要なので計算困難 同時分布 𝑝𝑝(𝐱𝐱, 𝐳𝐳) を計算グラフで表現 深層学習と確率プログラミングを融合した についてEdward 9 𝑝𝑝 𝐳𝐳|𝐱𝐱 の代わりに利用する𝑞𝑞 𝐳𝐳 を計算グラフで表現 • MCMC • 変分推論 推論を行うための計算グラフを自動生成
  • 11. 例1 混合ガウス 𝑝𝑝 𝐱𝐱𝑛𝑛 𝝅𝝅, 𝝁𝝁, 𝝈𝝈 = � 𝑘𝑘=1 𝐾𝐾 𝜋𝜋𝑘𝑘 Normal 𝐱𝐱𝑛𝑛|𝝁𝝁𝑘𝑘, 𝝈𝝈𝑘𝑘 深層学習と確率プログラミングを融合した についてEdward 10 𝝅𝝅 = 𝜋𝜋1, 𝜋𝜋2, … , 𝜋𝜋𝑘𝑘, … , 𝜋𝜋𝐾𝐾 𝑎𝑎, 𝑏𝑏, 𝛼𝛼: ハイパーパラメータ 0 ≤ 𝑛𝑛 < 𝑁𝑁 𝑝𝑝 𝝅𝝅 = Dirichlet 𝝅𝝅|𝛼𝛼𝟏𝟏𝐾𝐾 𝑝𝑝 𝝁𝝁𝑘𝑘 = Normal 𝝁𝝁𝑘𝑘|𝟎𝟎, 𝟏𝟏 𝑝𝑝 𝝈𝝈𝑘𝑘 2 = InverseGamma 𝝈𝝈𝑘𝑘 2 |𝑎𝑎, 𝑏𝑏 データセット𝐗𝐗 中の𝑛𝑛番目のデータ𝐱𝐱 𝑛𝑛 𝐷𝐷 = 2, 𝐾𝐾 = 2 (𝐷𝐷次元, 0 ≤ 𝑛𝑛 < 𝑁𝑁 )
  • 12. 例1 混合ガウス:Edward によるモデリング from edward.models import * K = 2 N = 100 D = 2 pi = Dirichlet(tf.ones(K)) mu = Normal(tf.zeros(D), tf.ones(D), sample_shape=K) sigmasq = InverseGamma(tf.ones(D), tf.ones(D), sample_shape=K) x = ParamMixture(pi, {'loc': mu, 'scale_diag': tf.sqrt(sigmasq)}, MultivariateNormalDiag, sample_shape=N) 深層学習と確率プログラミングを融合した についてEdward 11 𝑝𝑝 𝝅𝝅 = Dirichlet 𝝅𝝅|𝛼𝛼𝟏𝟏𝐾𝐾 𝑝𝑝 𝝁𝝁 = Normal 𝝁𝝁|𝟎𝟎, 𝟏𝟏 𝑝𝑝 𝝈𝝈𝑘𝑘 2 = InverseGamma 𝝈𝝈𝑘𝑘 2 |𝑎𝑎, 𝑏𝑏 𝑝𝑝 𝐱𝐱 𝑛𝑛 𝝅𝝅, 𝝁𝝁, 𝝈𝝈 = � 𝑘𝑘=1 𝐾𝐾 𝜋𝜋𝑘𝑘 Normal 𝐱𝐱 𝑛𝑛|𝝁𝝁𝑘𝑘, 𝝈𝝈𝑘𝑘
  • 13. 例1 混合ガウス:Edward によるモデリング 深層学習と確率プログラミングを融合した についてEdward 12 Edward による混合ガウスモデルの計算グラフ ParamMixtureの詳細
  • 14. 例1 混合ガウス: Edward による推論 深層学習と確率プログラミングを融合した についてEdward 13 T = 500 # サンプル数 qpi = Empirical(tf.Variable(tf.ones([T, K]) / K)) qmu = Empirical(tf.Variable(tf.zeros([T, K, D]))) qsigmasq = Empirical(tf.Variable(tf.ones([T, K, D]))) qz = Empirical(tf.Variable(tf.zeros([T, N], dtype=tf.int32))) 𝑝𝑝 𝐳𝐳|𝐱𝐱 を近似するための分布𝑞𝑞 𝐳𝐳 を定義 inference = ed.Gibbs( {pi: qpi, mu: qmu, sigmasq: qsigmasq, z: qz}, data={x: x_train}) 近似する分布のペアを与えてGibbsサンプリングのための計算グラフを作成 inference.run() 計算を実行
  • 15. もう一つの手法:変分推論 𝝓𝝓∗ = argmin𝝓𝝓 𝐾𝐾𝐾𝐾 𝑞𝑞 𝐳𝐳; 𝝓𝝓 | 𝑝𝑝(𝐳𝐳|𝐱𝐱)) 𝑝𝑝 𝐳𝐳|𝐱𝐱 に KL-divergence の意味で“近い” 𝑞𝑞 𝐳𝐳; 𝝓𝝓 で近似する 深層学習と確率プログラミングを融合した についてEdward 14 𝐿𝐿 𝝓𝝓 = 𝐸𝐸𝑞𝑞(𝐳𝐳; 𝝓𝝓) log 𝑝𝑝(𝐱𝐱, 𝐳𝐳) − 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑞𝑞(𝐳𝐳; 𝝓𝝓) 𝐾𝐾𝐾𝐾 𝑞𝑞 𝐳𝐳 | 𝑝𝑝(𝐳𝐳|𝐱𝐱)) = 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑝𝑝 𝐳𝐳 𝐱𝐱 − 𝐸𝐸𝑞𝑞 𝐳𝐳; 𝝓𝝓 log 𝑞𝑞(𝐳𝐳; 𝝓𝝓) 𝝓𝝓∗ = argmax 𝝓𝝓 𝐿𝐿 𝝓𝝓 𝛻𝛻𝜙𝜙 𝐿𝐿 𝝓𝝓 = 𝛻𝛻𝜙𝜙 � �𝐳𝐳 𝑞𝑞(�𝐳𝐳; 𝝓𝝓) log 𝑝𝑝(𝐱𝐱, �𝐳𝐳) − log 𝑞𝑞(�𝐳𝐳; 𝝓𝝓) Edward ではこの最適化問題をnoisy gradient を用いた勾配 法で解く(Black Box VariationaI Inference) �𝐳𝐳~𝑞𝑞(�𝐳𝐳; 𝝓𝝓) 以下の問題を解く 𝑞𝑞(�𝐳𝐳; 𝝓𝝓)と𝑝𝑝(𝐱𝐱, �𝐳𝐳)の計算グラフが与えられれば, Tensorflowの自動微分により勾配が計算可能
  • 16. 実例2 : VAE (Variational Auto Encoder) 𝐳𝐳 𝝁𝝁 𝚺𝚺 深層学習と確率プログラミングを融合した についてEdward 15 N=100 D=2 Mu=tf.zeros([N, D]) sigma=tf.ones([N, D]) z = Normal(loc=mu,scale=sigma) hidden = Dense(256)(z.value()) x = Bernoulli(logits=hidden) Kerasによる ニューラルネット のコード モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ) 𝐱𝐱
  • 17. 実例2 : VAE (Variational Auto Encoder) x_ph = tf.placeholder(tf.float32, [N, 256]) mu = Dense(256)(x_ph) sigma = Dense(256, activation='softplus')(x_ph) qz = Normal(loc=mu, scale=sigma) 深層学習と確率プログラミングを融合した についてEdward 16 𝐳𝐳 𝝁𝝁 𝚺𝚺 推論𝑞𝑞(𝐳𝐳|𝐱𝐱)(エンコーダ) 𝑞𝑞(𝐳𝐳|𝐱𝐱ph) Kerasによる ニューラルネット のコード 𝐱𝐱ph 𝐱𝐱
  • 18. inference = ed.KLqp({z: qz}, data={x: x_ph}) inference.run() 実例2 : VAE (Variational Auto Encoder) 深層学習と確率プログラミングを融合した についてEdward 17 𝐳𝐳 𝝁𝝁 𝚺𝚺 𝑞𝑞(𝐳𝐳|𝐱𝐱ph) 𝐱𝐱ph 𝐱𝐱 変分推論を使って推論を行う グラフを構築する
  • 19. z = Normal(loc=mu,scale=sigma) hidden = Dense(4*4*128,activation=None)(z.value()) hidden=Reshape([4,4,128])(hidden) hidden=Conv2DTranspose(64,(2,2),strides=(2, 2)) (hidden) hidden=BatchNormalization() (hidden) hidden=LeakyReLU(alpha=0.2)(hidden) …… x = Bernoulli(logits=hidden) 実例2 : VAE (Variational Auto Encoder) 18 Kerasを用いてより複雑なニューラルネットのコードを書く ことも可能 モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ)
  • 20. z = Normal(loc=mu,scale=sigma) hidden = Dense(4*4*128,activation=None)(z.value()) hidden=Reshape([4,4,128])(hidden) hidden=Conv2DTranspose(64,(2,2),strides=(2, 2)) (hidden) hidden=BatchNormalization() (hidden) hidden=LeakyReLU(alpha=0.2)(hidden) …… x = Bernoulli(logits=hidden) 実例2 : VAE (Variational Auto Encoder) 19 Kerasを用いてより複雑なニューラルネットのコードを書く ことも可能 モデル𝑝𝑝(𝐱𝐱, 𝐳𝐳) (デコーダ) 学習データ アニメイラストの顔データセット http://www.nurs.or.jp/~nagadomi/ animeface-character-dataset/ 生成したデータ
  • 21. 実例3 : GAN (Generative Adversarial Network) 深層学習と確率プログラミングを融合した についてEdward 20 min 𝜃𝜃 max 𝜙𝜙 𝐸𝐸𝑝𝑝∗(𝐱𝐱) log 𝐷𝐷(𝐱𝐱; 𝝓𝝓) + 𝐸𝐸𝑝𝑝(𝐱𝐱;𝜽𝜽) log 1 − 𝐷𝐷(𝐱𝐱; 𝝓𝝓) 目的関数 inference = ed.GANInference( data={x: x_ph}, discriminator=discriminative_network) モデルから生成されたデータと学習データを識別する識別器と 生成モデルを競わせることでデータの分布を学習させる手法
  • 22. 実例3 : GAN (Generative Adversarial Network) 深層学習と確率プログラミングを融合した についてEdward 21 min 𝜃𝜃 max 𝜙𝜙 𝐸𝐸𝑝𝑝∗(𝐱𝐱) log 𝐷𝐷(𝐱𝐱; 𝝓𝝓) + 𝐸𝐸𝑝𝑝(𝐱𝐱;𝜽𝜽) log 1 − 𝐷𝐷(𝐱𝐱; 𝝓𝝓) 目的関数 inference = ed.GANInference( data={x: x_ph}, discriminator=discriminative_network) モデルから生成されたデータと学習データを識別する識別器と 生成モデルを競わせることでデータの分布を学習させる手法 生成したデータ学習データ(MNIST)
  • 23. Edward (現バージョン)でのノウハウ • 大きいモデルをいきなり書かくと危険 – サンプルにあるモデルから徐々に変数を追加していくのが吉 • 現状ではデバッグの手段が限られている(Tensorboad は利用可能) • 計算結果がNanとなってしまうことを回避 • 学習法はモデルに応じて適切に選ぶ必要がある – ニューラルネット色の濃いモデルなら変分推論,確率モデル 色の濃いモデルならMCMC – 未実装の機能やいくつかあるが,どんどん実装されている 深層学習と確率プログラミングを融合した についてEdward 22
  • 24. まとめ • 確率モデルをTensorflow上で計算・実装できる Python ライブラリEdwardを紹介 – MCMCによる推論の例:混合ガウスモデル – 変分推論の例:VAE – GAN • 今後,Edwardを用いたアプリケーションが期待される – ハードウェアによる高速化(GPUによる高速な行列計算)の活用 – 大量・高次元のデータ処理への可能性 深層学習と確率プログラミングを融合した についてEdward 23