0
Variational Autoencoder
1
論文
Auto-Encoding Variational Bayes
D.P. Kingma, M. Welling, ICLR 2014.
Tutorial on Variational Autoencoders
CARL DOERSCH, 2016 https://arxiv.org/abs/1606.05908
元論文
元論文の解説
2
生成モデル
VAEはデータ𝑥の生成モデルを学習する。
0~9の手書き文字を生成するモデルがある場合、そのモデルは
「0~9の文字の中から、予め生成する文字を決定しておき、その決定のも
とでデータを生成する」
と仮定する。
このときの事前に決定しておくパラメータのことを
「潜在変数(latent variable)」とよぶ。
6
潜在変数
生成
3
学習するモデル
データの空間 : 𝒳 ⊂ 𝑅 𝑛
潜在変数空間 : 𝒵 ⊂ 𝑅 𝑚
パラメータ空間 : 𝛩
関数𝑓を 𝑓: 𝒵 × 𝛩 → 𝒳とする
つまり、𝑥 ∈ 𝒳, 𝑧 ∈ 𝒵, 𝜃 ∈ 𝛩 において、𝑥 = 𝑓(𝑧; 𝜃)である
このようなパラメータ 𝜃を学習したい!
𝑧
𝑓
𝜃1
𝜃2 𝜃3
𝑥
𝜃4
生成モデル
(Decoder部分)
4
学習するモデル
VAEはデータ𝑥を生成するモデルを作りたい
→固定のパラメータ𝜃のもと、確率分布𝑝(𝑧)に基づいて決まる潜在変数𝑧が
与えられたときに、生成されたデータ𝑥が訓練データに近いものになるよ
うなモデルを作りたい。
𝑥を生成するモデルを𝑝 𝜃 𝑥 𝑧 とおく。VAEは
𝑝 𝑧 = 𝒩 𝑧 0, 𝐼
𝑝 𝜃 𝑥 𝑧 = 𝑙 𝑥; 𝑧, 𝜃
を仮定している。
ここで𝑙 𝑥; 𝑧, 𝜃 は𝑧の尤度関数で、𝑙 𝑥; 𝑧, 𝜃 = 𝒩 𝑥 𝑓 𝑧; 𝜃 , 𝜎2
∙ 𝐼 を仮定する。
(𝜎2
はハイパーパラメータ)
最適な𝑝 𝜃 𝑥 𝑧 を探すために、以下に示す𝑝 𝜃 𝑥 𝑧 の周辺尤度
𝑝 𝜃 𝑥 = 𝑝 𝜃 𝑥 𝑧 𝑝 𝑧 𝑑𝑧
を最大化する𝜃, 𝑧を探す。
5
学習するモデル
潜在変数からデータを生成するモデル(Decoder)を、
確率分布を用いて
𝑝 𝜃(𝑥|𝑧)
とする。
計算困難である𝑧の事後確率分布𝑝 𝜃(𝑧|𝑥)の代わりに、 𝑞 𝜙(𝑧|𝑥)を導入。
データから潜在変数を見つけるモデル(Encoder)を、
𝑞 𝜙(𝑧|𝑥)
とする。
VAEのイメージ
𝑞 𝜙 𝑝 𝜃
6
パラメータ𝜃の学習
𝑝 𝜃(𝑥)を最大化するために、パラメータ𝜃を最適化したいが、
𝑝 𝜃(𝑥)は𝜃で微分できないため直接𝜃を最適化できない。
→目的関数を近似的に設定する。
→変分ベイズ同様、尤度の下限(変分下限)を最大化する
log 𝑝 𝜃 𝑥 = log 𝑝 𝜃 𝑥 𝑧 𝑝 𝑧 𝑑𝑧
= log 𝑞 𝜙 𝑧 𝑥
𝑝 𝜃 𝑥 𝑧 𝑝 𝑧
𝑞 𝜙 𝑧 𝑥
𝑑𝑧
≥ 𝑞 𝜙 𝑧 𝑥 log
𝑝 𝜃 𝑥 𝑧 𝑝 𝑧
𝑞 𝜙 𝑧 𝑥
𝑑𝑧 (イェンセンの不等式)
= 𝑞 𝜙 𝑧 𝑥 log
𝑝 𝑧
𝑞 𝜙 𝑧 𝑥
+ log 𝑝 𝜃 𝑥 𝑧 𝑑𝑧
= 𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 𝑑𝑧 − 𝑞 𝜙 𝑧 𝑥 log
𝑞 𝜙 𝑧 𝑥
𝑝 𝑧
𝑑𝑧
= 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 − 𝐷 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 𝑝(𝑧))
7
Encoderの最適化による目的関数の導出
計算困難である𝑧の事後確率分布𝑝 𝜃(𝑧|𝑥)の代わりに、 𝑞 𝜙(𝑧|𝑥)を導入。
Encoderは𝑞 𝜙(𝑧|𝑥)を予測する。
Encoderの予測が正しいかどうかは𝑞 𝜙(𝑧|𝑥)と𝑝 𝜃(𝑧|𝑥)の差をみてやればよい
→KL距離を計算する
𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝 𝜃 𝑧 𝑥 = 𝑞 𝜙 𝑧 𝑥 log
𝑞 𝜙 𝑧 𝑥
𝑝 𝑧
𝑑𝑧
= 𝑞 𝜙 𝑧 𝑥 log 𝑞 𝜙 𝑧 𝑥 − log 𝑝 𝜃 𝑧 𝑥 𝑑𝑧
= 𝑞 𝜙 𝑧 𝑥 {log𝑞 𝜙 𝑧 𝑥 − log
𝑝 𝜃 x z 𝑝 z
𝑝 𝜃(𝑥)
}𝑑𝑧
= log𝑝 𝜃 𝑥 + 𝑞 𝜙 𝑧 𝑥 log
𝑞 𝜙 𝑧 𝑥
𝑝 𝑧
𝑑𝑧 − 𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 𝑑𝑧
= log𝑝 𝜃 𝑥 + 𝐾𝐿(𝑞 𝜙 𝑧 𝑥 𝑝(𝑧) − 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log𝑝 𝜃 𝑥 𝑧
8
Encoderの最適化による目的関数の導出
𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝 𝜃 𝑧 𝑥 = log𝑝 𝜃 𝑥 + 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧) − 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log𝑝 𝜃 𝑥 𝑧
log 𝑝 𝜃 𝑥 − 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝 𝜃 𝑧 𝑥 = 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log𝑝 𝜃 𝑥 𝑧 − 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝 𝜃(𝑧)
KLは非負より、
log𝑝 𝜃 𝑥 ≥ 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log𝑝 𝜃 𝑥 𝑧 − 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧)
となる。(変分下限で求めたものと同じ!)
よって、VAEの損失関数は、
ℒ 𝜃, 𝜙, 𝑥 = −log 𝑝 𝜃(𝑥)
となり、上式から
ℒ′ = −𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 + 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧)
を最小化する
9
損失関数の意味
ℒ′ = −𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 + 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧)
第一項 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧
𝑞 𝜙 𝑧 𝑥 からサンプリングした𝑧を用いて、 𝑝 𝜃 𝑥 𝑧 からサンプリングして得
られた𝑥がもとの𝑥(入力データ)である度合い。
(𝑥 ⟶ 𝑧 ⟶ 𝑥というオートエンコーダを考えている。)
複号誤差と呼ばれる。
第二項 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧)
𝑞 𝜙 𝑧 𝑥 が𝑝(𝑧)からどれだけ離れているかを示す。
𝑞 𝜙 𝑧 𝑥 を𝑥に無関係な𝑝(𝑧)に近づけることで過学習を防ぐ。
正則化項と呼ばれる。
10
損失関数の計算(第二項)
𝑋 Encoder 𝑞 𝜙
𝜇(𝑋)
Σ(𝑋)
𝐾𝐿(𝒩(z; 𝜇 𝑋 , Σ(𝑋)‖𝒩 𝑧; 0, 𝐼 )
𝑧 D𝑒coder 𝑝 𝜃 𝑥′ 𝑙𝑜𝑠𝑠(𝑥, 𝑥′)
ニューラルネットワークの中で、サンプリングを行うのは難しい…
(計算グラフが途切れて誤差逆伝播法が使えない)
第二項の 𝐾𝐿 𝑞 𝜙 𝑧 𝑥 ||𝑝(𝑧) に関しては、正規分布同士のKLなので分布のパラ
メータ(平均と分散)があれば解析的に求まる。(*Supplemental参照)
(𝑝 𝑧 = 𝒩 𝑧; 0, 𝐼 を仮定しているため、事後分布𝑝 𝜃 𝑧|𝑥 も正規分布とみなせる。つ
まり、その予測𝑞 𝜙 𝑧 𝑥 も正規分布を仮定できる。)
𝐾𝐿(𝒩𝑞 𝒩𝑝 =
1
2
tr Σ 𝑞 + 𝜇 𝑞
𝑇
𝜇 𝑞 − 𝑘 − loge Σq
サンプリング
11
損失関数の計算(第一項)
では、第一項 𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 は?
期待値はサンプリング近似で求める
𝐸 𝑧~𝑞 𝜙 𝑧 𝑥 log 𝑝 𝜃 𝑥 𝑧 ≃
1
𝐿
𝑙=1
𝐿
log 𝑝(𝑥|𝑧 𝑙)
𝐿個の𝑧を𝑞 𝜙 𝑧 𝑥 からサンプリングし、それぞれの𝑧, 𝑥から求めた
log 𝑝 𝜃(𝑥|𝑧)の平均を期待値とする。
しかし、このままだと結局𝑧のサンプリングを行わないといけない
(ニューラルネットワークだと使えない)
→確率分布に従ってサンプリングするのではなく、関数から決定論的に𝑧
を生成する
12
Reparameterization Trick
𝑧がある関数𝑔から生成されるとして、ニューラルネットワークの最適化に
無関係な数𝜖~𝒩(0, 𝐼)を考えると、
𝑧 = 𝑔 𝜖, 𝑥; 𝜙
= 𝜇 𝜙 𝑥 + Σ 𝜙
1/2
𝑥 ∙ 𝜖
と書ける。(*Supplemental参照)
これにより、 𝑧はパラメータで微分できるようになるため、誤差逆伝播法
が使える!
𝑋 Encoder 𝑞 𝜙
𝜇(𝑋)
Σ(𝑋)
𝐾𝐿(𝒩(z; 𝜇 𝑋 , Σ(𝑋)‖𝒩 𝑧; 0, 𝐼 )
𝑧 D𝑒coder 𝑝 𝜃 𝑥′ 𝑙𝑜𝑠𝑠(𝑥, 𝑥′)𝒩(0, 𝐼) 𝜖
13
アルゴリズム
元論文(Auto-Encoding Variational Bayes)より、
𝑋 Encoder 𝑞 𝜙
𝜇(𝑋)
Σ(𝑋)
𝐾𝐿(𝒩(z; 𝜇 𝑋 , Σ(𝑋)‖𝒩 𝑧; 0, 𝐼 )
𝑧 D𝑒coder 𝑝 𝜃 𝑥′ 𝑙𝑜𝑠𝑠(𝑥, 𝑥′)𝒩(0, 𝐼) 𝜖
14
Supplemental 正規分布同士のKL距離
𝒩 𝜇, Σ =
1
2𝜋 𝑑 Σ
exp −
1
2
𝑥 − 𝜇 𝑇Σ−1 𝑥 − 𝜇
以下に示す、平均𝜇共分散行列Σのd次元多変量正規分布を考える。
二つの正規分布𝑝 𝑥 = 𝒩 𝜇1, Σ1 , 𝑞 𝑥 = 𝒩 𝜇2, Σ2 のKL距離を考える。
𝐷 𝐾𝐿(𝑃 𝑄 =
−∞
∞
𝑝 𝑥 log
𝑝 𝑥
𝑞 𝑥
𝑑𝑥
log
𝑝 𝑥
𝑞 𝑥
=
1
2
log
Σ2
Σ1
+
1
2
𝑥 − 𝜇2
𝑇Σ2
−1
𝑥 − 𝜇2 −
1
2
𝑥 − 𝜇1
𝑇Σ1
−1
(𝑥 − 𝜇1)
logの中身について展開する。
KL距離を期待値で表すと、以下のようになる。
𝐷 𝐾𝐿(𝑃 𝑄 = 𝐸 𝑝
1
2
log
Σ2
Σ1
+ 𝐸 𝑝
1
2
𝑥 − 𝜇2
𝑇
Σ2
−1
𝑥 − 𝜇2 − 𝐸 𝑝
1
2
𝑥 − 𝜇1
𝑇
Σ1
−1
𝑥 − 𝜇1
15
Supplemental 正規分布同士のKL距離
第一項は定数なので、
𝐸 𝑝
1
2
log
Σ2
Σ1
=
1
2
log
Σ2
Σ1
The matrix Cookbook(http://orion.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf)
の式(380)同様、第二項以降は次のようになる。
𝐸 𝑝
1
2
𝑥 − 𝜇2
𝑇Σ2
−1
𝑥 − 𝜇2 =
1
2
tr Σ2
−1
Σ1 + 𝜇1 − 𝜇2
𝑇Σ2
−1
𝜇1 − 𝜇2
𝐸 𝑝
1
2
𝑥 − 𝜇1
𝑇Σ1
−1
𝑥 − 𝜇1 =
1
2
tr Σ1
−1
Σ1 =
𝑑
2
よって、これらをまとめて
=
1
2
log
Σ2
Σ1
+ tr Σ2
−1
Σ1 + 𝜇1 − 𝜇2
𝑇
Σ2
−1
𝜇1 − 𝜇2 − 𝑑
𝐷 𝐾𝐿(𝑃 𝑄 = 𝐸 𝑝
1
2
log
Σ2
Σ1
+ 𝐸 𝑝
1
2
x − 𝜇2
𝑇
Σ2
−1
𝑥 − 𝜇2 − 𝐸 𝑝
1
2
𝑥 − 𝜇1
𝑇
Σ1
−1
𝑥 − 𝜇1
16
Supplemental 多変量正規分布に従う乱数の生成
𝒩 (𝜇 𝜙, Σ 𝜙)に従う乱数𝑧を𝒩 (0, 𝐼)に従う乱数𝜖を用いて生成する。
ここで𝑦 = 𝑄𝑧が𝒩 (0, Σ 𝜙)に従うとすると、 𝑦′ = 𝑦 + 𝜇 𝜙は𝒩 (𝜇 𝜙, Σ 𝜙)に従う。
よって、 𝑦 = 𝑄𝑧となるQを求める。
𝐸 𝑌 = 𝐸 𝑄𝑍 = 𝑄𝐸 𝑍 = 0
𝑉 𝑌 = 𝐸 𝑌 − 𝐸 𝑌 𝑌 − 𝐸 𝑌 𝑇
= 𝐸 𝑄𝑍 𝑄𝑍 𝑇
= 𝑄𝐸 𝑍 − 𝐸 𝑍 𝑍 − 𝐸 𝑍 𝑇
𝑄 𝑇
= 𝑄𝑉 𝐸 𝑄 𝑇
= 𝑄𝑄 𝑇
より、Σ 𝜙 = 𝑄𝑄 𝑇
となるように𝑄を定める。(コレスキー分解)
よって、
𝑧 = 𝜇 𝜙 𝑥 + Σ 𝜙
1/2
𝑥 ∙ 𝜖
と書ける。
17
参考
Auto-Encoding Variational Bays
https://arxiv.org/abs/1312.6114
Tutorial on Variational Autoencoders
https://arxiv.org/abs/1606.05908
http://musyoku.github.io/2016/04/29/auto-encoding-variational-bayes/
元論文解説記事
VAE解説pdf
https://nzw0301.github.io/notes/vae.pdf
The matrix Cookbook (行列演算公式集)
http://orion.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf
https://www.youtube.com/watch?v=7CPcvLs8iEs
確率的ニューラルネットの解説
http://www.ee.bgu.ac.il/~rrtammy/DNN/StudentPresentations/AutoEncoderOrZalman.pdf
元論文著者のスライド

Variational autoencoder