GANとVAEの一覧とまとめ

久しぶりに記事を更新します、ロードローラーです。

今年はICMLとCVPRがロングビーチで連続開催ですね!

潜在空間の操作やDisentangleが大好きな私としては周辺研究をチェックしてきたいと思います。

そんなこんなで、出国前に軽く整理しようと思ってまとめました

 

VAE


AutoEncoderの潜在変数(中間特徴量)のzに事前分布を仮定する。これにより特徴量の連続性を担保したり、潜在変数がスパースになること防ぐ。

β-VAE


VAEでは潜在変数の分布が仮定した事前分布にFITするように、KL距離を最小化させるような制約を設ける。このKL距離による制約を変数βによって調整すると、分布をフィットさせる圧力が強くかかる。その結果として潜在変数の各成分の独立性が増して、MNISTだと角度や文字太さといった成分が潜在変数の特定の成分に対応するようになる。

なお、学習がある程度進むと『全ての成分が独立』というのは実現困難らしく、相互情報量を許容するためにKL距離をゼロに近付けるのではなく定数Cに近付けるようにする。これにより情報損失(潜在変数zから元々のデータxが復元できない状態)を防ぐ効果がある。

joint-VAE


β-VAEでは潜在変数をだいたい正規分布にフィットさせていた。これではdisentangleに成功してsemanticで独立な成分を抽出できたとしてもContinuous(連続値)のみとなってしまう。実際にはMNISTにおけるDIGIT-ClassのようなDiscrete(離散値)も存在する。そこで、GumbelSoftmax分布をβ-VAEに併用することで離散値にも対応可能に拡張した。

GAN


もはや説明不要だろう、元データxと、ノイズzから生成したx’を見分けられないように(分布が重なるように)学習することで、本物そっくりのX’を生成する。

Conditional-GAN


GANの弱点として、(生成画像は本物らしければよいので)なるべく生成が得意なパターンのxばかり生成してしまう性質がある。

例えばMNISTでGANを学習したとき、たまたま『8』は上手に生成できるようになったとしよう。このとき、『8』ばかり生成しておけばDiscriminatorを騙せるので、結果的に『8』ばかり生成して、他の数字は生成されにくくなる欠点がある。

これに対処したのがConditional-GANである。Generatorに条件yを一緒に入力することで条件に適したx’を生成させる。Discriminatorにも条件yを一緒に入力することで、x’が本物らしいかどうか?という判定と同時に、条件yに適しているかという判定もするようになる。(条件yに適していなければ、例えばyに『2』を指定したのに『8』が生成された場合、即座に生成データと見抜かれてしまう)

info-GAN


Conditional-GANは条件指定しながら画像生成できるようになる技術だったが、それに対してInfo-GANの目的はDisentangle Representationの教師無し取得にある。

ノイズzとは別途で変数cを設けておいて、生成されたx’とcの相互情報量が大きくなるよう学習する。すると、結果的に変数cがConditionに対応するようになる。

pix2pix


異なるドメインのペア画像を大量に準備して、敵対学習によってドメイン変換方法を教師付き学習する。大量のペア画像を準備しないといけない点が課題視されている。

Cycle-GAN


pix2pixのペア画像を準備しなければならない課題を解決して、Reconstructionと敵対学習をベースとして教師なしにドメイン変換手法を学習する。

star-GAN


Cycle-GANでは学習によって構築したモデルは1:1のドメイン変換が出来る。しかし言い換えれば、nパターンのドメイン変換をするにはn回のモデル構築が必要となる。

そこで、1:nのドメイン変換を一気に学習できるよう拡張したものがsstar-GAN。

 

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください