はじめに
今回は、VAE(Variational AutoEncoder)について数式面のみのアウトプットをしたいと思います。VAEとはなんたるか、実装方法等には触れません。そこではじめに参考文献を示します。
参考文献
Variational Autoencoder徹底解説 - Qiita
AutoEncoder, VAE, CVAEの比較 〜なぜVAEは連続的な画像を生成できるのか?〜 - Qiita
オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者 - DeepAge
イェンセン(Jensen)の不等式の直感的理解 - Qiita
本題
初めに目的を明確にしましょう。下に簡単なVAEのモデルを示します。
Encoderで直接潜在変数を生成するのではなく、を生成することが重要です。
ここで推定したいモデルはDecoder側のですね。このの尤度(尤もらしさ)を最大にするパラメータを最尤推定法を用いて求めます。
また、色々都合がいいので対数尤度を最大にします。
1行目は確率の加法定理を用いています。同時分布について加算するとの分布になるということですね。
2行目はを掛けているだけです。
3行目はイェンセンの不等式を使いました。上に凸な関数においてが成り立つといったものです。
4行目は変分下限を新しく定義しました。変分下限はELBO(evidence lower bound)とも呼びます。複雑な確率分布において周辺尤度は厳密には計算することができません。よって周辺尤度の下限をなるべく大きくすることでへ近づけます。下からすくっていくイメージですね。
では対数尤度と変分下限の差は何を示すのかを確認しましょう。
をKLダイバージェンスと言います。簡単に言うと両者の距離を表すものですが絶対値は取らないので厳密な距離ではないことには注意してください。
2行目の第1項はを掛けているだけです。
3行目の第1項はがに依存しないため積分記号の内へ入れています。第2項は乗法定理からを代入しています。
4行目はを分解しています。そしてこれから第1項が消えることがわかります。
6行目は対数をまとめています。
ここでもう一度変分下限について整理してみます。
は固定値であるため目的とする"L(X,z)を最大化すること"は'第2項を最小化すること'と同義となりました。
では第2項に着目してみましょう。
最小化したい第2項がさらに3つの項へ分解されました。
2行目はベイズの定理を代入し、対数の法則から分解しました。
3行目はまずがに依存しないため期待値の外へ出します。そして今後のためにを別で記述します。
3行目の第1項がKLダイバージェンスの記述ができるので4行目において置き換えています。
これを最小化したいのですが少しよくわからないので変分下限の式に代入してみましょう。
代入することでが消えました。この式を最大化(変分下限は最大化、先ほどのKLダイバージェンスは最小化)したいのでしたね。そのために第1項を小さくし、第2項を大きくしたいということです。それでは各項に注目します。
第1項
第1項は正則化項(Regularization Parameter)です。KLダイバージェンスの形をしているので当然との分布が近ければ近いほどこの値は小さくなります。
2行目~3行目の導出は正規分布のKLダイバージェンスの導出となり複雑なので理解しなくていいと思います。一応リンク載せます。
第2項
まずは直感的に理解してみましょう。はencoder部分ではdecoder部分です。つまりencoderに関してdecoderの対数尤度を求めているということです。これからわかるように当然この式は最大化したいものということです。
画像の各ピクセルを0~1に調整し、ベルヌーイ分布を仮定するとlogは以下のようになります。
はNNの出力です。
第1項は潜在変数の事前分布とencoderの分布の差を示す。正則化項。
第2項は入出力の差。
最後に図としてまとめます。
このφおよびθを学習します。
しかしこのままだと確率分布を経由しているため誤差逆伝播法を使用することができません。なのでとしてノイズを発生させ、とすることで確率分布を経由せずに誤差を逆伝播させることが可能となります。この手法をReparameterization Trickといいます。
さいごに
いかがでしたでしょうか。僕自身この確率分布だ~なんだ~の部分はとても苦手としているので非常に理解に時間がかかりました。VAE自体は少し前の技術なのですが今もなお研究が行われているそうですね。僕の卒業研究の選択肢の1つとなりそうです。
是非とも上記のQiita等もご覧になって多くの記事を参考にしてみてください。添え字等間違っていることがあったら(こっそり)教えてください。
おわり。
もしよければ↓ぽちっと↓お願いします。