SlideShare a Scribd company logo
1 of 24
Download to read offline
深層学習と確率プログラミングを
融合した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

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)Deep Learning JP
 
ノンパラメトリックベイズを用いた逆強化学習
ノンパラメトリックベイズを用いた逆強化学習ノンパラメトリックベイズを用いた逆強化学習
ノンパラメトリックベイズを用いた逆強化学習Shota Ishikawa
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use ToolsDeep Learning JP
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...Deep Learning JP
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習Deep Learning JP
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion ModelsDeep Learning JP
 
【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 SpacesDeep Learning JP
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門tmtm otm
 
方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用Ryo Iwaki
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...joisino
 
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningssuserca2822
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstmtak9029
 
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)Shota Imai
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and EditingDeep Learning JP
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured PredictionDeep Learning JP
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision TransformerYusuke Uchida
 

What's hot (20)

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
 
ノンパラメトリックベイズを用いた逆強化学習
ノンパラメトリックベイズを用いた逆強化学習ノンパラメトリックベイズを用いた逆強化学習
ノンパラメトリックベイズを用いた逆強化学習
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
 
【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
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
実装レベルで学ぶVQVAE
実装レベルで学ぶVQVAE実装レベルで学ぶVQVAE
実装レベルで学ぶVQVAE
 
方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstm
 
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 

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
 
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Shinichi Nakagawa
 
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Netwalker lab kapper
 
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 solutionKazuki Onodera
 
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj
外部委託から内製化アジャイルへの切替支援を通してわかったこと #augj満徳 関
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例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 数学カフェ Part1Kenta 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 ニューラルネットワークと深層学習 1hirokazutanaka
 
公開鍵暗号(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
 
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 OptimizationTakuya Minagawa
 
[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)[PRML] パターン認識と機械学習(第1章:序論)
[PRML] パターン認識と機械学習(第1章:序論)Ryosuke Sasaki
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2hirokazutanaka
 

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