機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

IntroVAE: Introspective Variational Autoencoders for Photographic Image Synthesis

はじめに

IntroVAE: Introspective Variational Autoencoders for Photographic Image Synthesisを読んだのでメモ.

stackGANやPGGANと違ってVAEのEncoderをGANのdiscriminatorとして扱うことでシンプルながらも高解像度の画像を生成することに成功した.

IntroVAE

さっくりと中身を紹介.

基本的にはVAEなので以下のELBOを最小化することを考える.

\displaystyle
ELBO=-\mathbb{E}_{q_\phi(z|x)}\log p_\theta(x|z)+D_{KL}(q_\phi(z|x)||p(z))

ここにGANの考えを取り入れる.具体的にはVAEのdecoderによって生成された画像をG(z')とするとこのG(z')を入力とした事後分布q(z|G(z'))D_{KL}(q_\phi(z|G(z'))||p(z)を最大化するように学習される.すなわちVAEのencoderにdiscriminatorの役割をさせるというもの.

上記の考えを取り入れた目的関数を考えると以下のようなものが考えられる.

\displaystyle
L_E(x,z)=E(x)+[m-E(G(z))]^+ \\ \displaystyle
L_G(z)=E(G(z))

ここでE(x)=D_{KL}(q_\phi(z|x)||p(z)),[x]^+=\max(0,x)を表し,mは正の値を持つハイパーパラメータ.triplet lossなど距離学習に使われる目的関数と似通った形になっている.この目的関数を用いてencoder Eとdecoder(generator) Gの間でmin-max gameを解く.つまりencoderは真の画像に対しては推定された分布のパラメータがpriorである標準ガウス分布に近くなるように,decoder(generator)により作られた画像に対しては標準ガウスから遠くなるように学習する.逆にdecoder(generator)は作った画像の分布をencoderに推定させた時,標準ガウス分布に近くなるように学習する.

オリジナルのGANの論文のnotationを使って整理すると,encoder EV(E,G)=\int_{x,z}L_E(x,z)p_{data}(x)p_z(z)dxdzを最小化,decoder GU(E,G)=\int_zL_G(z)p_z(z)dzを最小化するように学習される.

上記の目的関数をELBOと組み合わせることで最終的なintroVAEの目的関数は以下のように記述される.

\displaystyle
L_E(x,z)=E(x)+[m-E(G(Enc(x)))]^+-\mathbb{E}_{q_\phi(z|x)}\log p_\theta(x|z)\\ \displaystyle
L_G(z)=E(G(z))-\mathbb{E}_{q_\phi(z|x)}\log p_\theta(x|z)

学習の細かいパラメータ

VAEの事前分布としてはユニットガウスを使い,reconstruction errorはMSEを使ったとのこと.さらにL_Eの第2項目とL_Gの第1項目に重みパラメータ\alpha,\betaをかけてロスのバランスをとったとのこと.実験の設定では\alphaは0.5で\betaは0.0025から0.5のレンジで実験している.またモデルの構造はPGGANとほぼ同様だがresidual blockを導入している.

まとめ

顔の生成は綺麗だがLSUNのBEDROOMの生成結果はPGGANのが綺麗かなあ.ただ学習の安定性がその他の手法に比べれば格段に良さそう.