情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

VAEを理論的に理解する

スポンサーリンク

はじめに

今回は、VAE(Variational AutoEncoder)について数式面のみのアウトプットをしたいと思います。VAEとはなんたるか、実装方法等には触れません。そこではじめに参考文献を示します。

参考文献

Variational Autoencoder徹底解説 - Qiita

AutoEncoder, VAE, CVAEの比較 〜なぜVAEは連続的な画像を生成できるのか?〜 - Qiita

オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者 - DeepAge

猫でも分かるVariational AutoEncoder

イェンセン(Jensen)の不等式の直感的理解 - Qiita

正規分布間のKLダイバージェンス - Qiita

本題

初めに目的を明確にしましょう。下に簡単なVAEのモデルを示します。

 

f:id:Parco1021:20200223170120p:plain

 

{\displaystyle EncoderへXを入力します。そして潜在変数zのためのパラメータμおよびσを出力します。}

{\displaystyle そしてzをDecoderへ入力することで本来求めたい\hat{X} を出力します。}Encoderで直接潜在変数{\displaystyle z}を生成するのではなく、{\displaystyle zのためのパラメータμとσ}を生成することが重要です。

ここで推定したいモデルはDecoder側の{\displaystyle p(X)}ですね。この{\displaystyle p(X)}の尤度(尤もらしさ)を最大にするパラメータ{\displaystyle θおよびϕ}最尤推定法を用いて求めます。

また、色々都合がいいので対数尤度{\displaystyle logp(X)}を最大にします。

f:id:Parco1021:20200223175638p:plain

1行目は確率の加法定理を用いています。同時分布{\displaystyle p(X,z)においてz}について加算すると{\displaystyle X}の分布になるということですね。
2行目は{\displaystyle \frac{q(z|X)}{q(z|X)}=1}を掛けているだけです。

3行目はイェンセンの不等式を使いました。上に凸な関数{\displaystyle f(x)}において{\displaystyle f(E[x])≥E[f(x)]}が成り立つといったものです。

4行目は変分下限を新しく定義しました。変分下限はELBO(evidence lower bound)とも呼びます。複雑な確率分布において周辺尤度は厳密には計算することができません。よって周辺尤度の下限{\displaystyle L(X,z)}をなるべく大きくすることで{\displaystyle logp(X)}へ近づけます。下からすくっていくイメージですね。

 

では対数尤度と変分下限の差は何を示すのかを確認しましょう。

f:id:Parco1021:20200223190656p:plain

{\displaystyle KL[]}KLダイバージェンスと言います。簡単に言うと両者の距離を表すものですが絶対値は取らないので厳密な距離ではないことには注意してください。

2行目の第1項は{\displaystyle \int q(z|X)dz=1}を掛けているだけです。

3行目の第1項は{\displaystyle p(X)}{\displaystyle z}に依存しないため積分記号の内へ入れています。第2項は乗法定理から{\displaystyle p(X,z)=p(z|X)p(X)}を代入しています。

4行目は{\displaystyle log}を分解しています。そしてこれから第1項が消えることがわかります。

6行目は対数をまとめています。

 

ここでもう一度変分下限について整理してみます。

f:id:Parco1021:20200223211235p:plain

{\displaystyle logp(X)}は固定値であるため目的とする"L(X,z)を最大化すること"は'第2項を最小化すること'と同義となりました。

では第2項に着目してみましょう。

f:id:Parco1021:20200225214501p:plain

最小化したい第2項がさらに3つの項へ分解されました。

2行目はベイズの定理{\displaystyle p(X|Y)=\frac{p(Y|X)p(X)}{p(Y)}}を代入し、対数の法則から分解しました。

3行目はまず{\displaystyle p(X)}{\displaystyle q_φ(z|X)}に依存しないため期待値の外へ出します。そして今後のために{\displaystyle logp_θ(X|z)}を別で記述します。

3行目の第1項がKLダイバージェンスの記述ができるので4行目において置き換えています。

これを最小化したいのですが少しよくわからないので変分下限の式に代入してみましょう。

f:id:Parco1021:20200225214731p:plain

代入することで{\displaystyle logp(X)}が消えました。この式を最大化(変分下限は最大化、先ほどのKLダイバージェンスは最小化)したいのでしたね。そのために第1項を小さくし、第2項を大きくしたいということです。それでは各項に注目します。

第1項

第1項は正則化項(Regularization Parameter)です。KLダイバージェンスの形をしているので当然{\displaystyle p(z)}{\displaystyle q(z|X)}の分布が近ければ近いほどこの値は小さくなります。

f:id:Parco1021:20200225215521p:plain

 

2行目~3行目の導出は正規分布のKLダイバージェンスの導出となり複雑なので理解しなくていいと思います。一応リンク載せます。

qiita.com

 

第2項

f:id:Parco1021:20200225212223p:plain

まずは直感的に理解してみましょう。{\displaystyle q(z|X)}はencoder部分で{\displaystyle p(X|z)}はdecoder部分です。つまりencoderに関してdecoderの対数尤度を求めているということです。これからわかるように当然この式は最大化したいものということです。

画像の各ピクセルを0~1に調整し、ベルヌーイ分布を仮定するとlog{\displaystyle p(X|z)}は以下のようになります。

f:id:Parco1021:20200225213927p:plain

{\displaystyle y}はNNの出力です。

 

 

第1項は潜在変数の事前分布とencoderの分布の差を示す。正則化項。

第2項は入出力の差。

 

 

最後に図としてまとめます。

f:id:Parco1021:20200225220354p:plain

このφおよびθを学習します。 

 

しかしこのままだと確率分布を経由しているため誤差逆伝播法を使用することができません。なので{\displaystyle ε~N(0,I)}としてノイズを発生させ、{\displaystyle z=μ+εσ}とすることで確率分布を経由せずに誤差を逆伝播させることが可能となります。この手法をReparameterization Trickといいます。

 

さいごに

いかがでしたでしょうか。僕自身この確率分布だ~なんだ~の部分はとても苦手としているので非常に理解に時間がかかりました。VAE自体は少し前の技術なのですが今もなお研究が行われているそうですね。僕の卒業研究の選択肢の1つとなりそうです。

是非とも上記のQiita等もご覧になって多くの記事を参考にしてみてください。添え字等間違っていることがあったら(こっそり)教えてください。

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

スポンサーリンク