生成モデルGAN(Generative Adversarial Network)

(2019-02-22)

GAN(Generative Adversarial Network)は生成器Gと、データが本物かどうか識別する識別器Dを交互に最適化していく生成モデル。 データの評価は識別器によって行われるので、VAEと異なり分布を仮定して尤度を用いる必要がなく、より良いデータが生成できるが、 GとDを交互に最適化した結果振動してしまいナッシュ均衡に収束せず、またどちらかが先に最適化されてしまうと 同じようなデータばかり生成してしまうmode collapseや勾配が消えてしまったりして うまく学習できないことがある。

生成モデルVAE(Variational Autoencoder) - sambaiz-net

識別器(Discriminator)

生成されたデータの分布をpg(x)、真のデータの分布をp{data}(x)として、同数のデータにそれぞれy=0, 1のラベルを付ける。 識別器D(x)はyが0か1かの分類モデルで、負の交差エントロピー誤差V(D)を最大化するように学習する。

負の交差エントロピー誤差

最適化したあとのDをD^とすると、目的関数V(D^)はJensen-Shannon(JS)ダイバージェンスを使って表せる。これを最小化するのがGANの目的。

識別器の目的関数とJSダイバージェンス

生成器(Generator)

p_dataとp_gのJSダイバージェンスが小さくなるように学習する。生成器Gを学習するための目的関数は次の通りで、これを最小化する。

生成器の目的関数