EBGAN(Energy Based GAN)
EBGAN(Energy Based GAN)の実装です。DCGANの派生として、LSGAN→EBGAN→WGANと損失計算の方法について続々と提案されている過程を追っています。EBGANは損失関数をヒンジ損失に変更しています。
EBGANの特徴
識別器の損失をヒンジ損失で計算しています。ヒンジとはドアの蝶番(ちょうつがい)のことを指していて、損失のグラフが蝶番のような形をしていることに由来します。
識別器Dはオートエンコーダーとして構成されています。
EBGANの実装
こちらのコードを参考に、Google Colabで動作するnotebookとして実装しました。実装コードはGithubに置いてます。興味のあるかたは試してみてください。
1000ループ目までの生成過程です。今までのGAN(DCGANやLSGAN)に比べて、Gがゆっくりと成長しているみたいです。損失の推移と生成画像の変化をGIFにまとめてみました。
最後に
今回の学習では、参照した実装の通りに生成器→識別器の順で学習させました。DCGANやLSGANで実装したときの様に、識別器→生成器の順で学習を試みたところ、学習が全然進まない現象となりました。GANはちょっとした変化で結果が大きく変わることを改めて実感しました。
EBGANの論文はこちらです。