LSGAN(Least Squares GAN)

LSGAN(Least Squares GAN)の実装です。DCGANの派生として更なる学習の安定化および高品質画像の生成を目的に提案されたGANです。

LSGANの特徴

LSGANの特徴は名前の通り、DCGANではクロスエントロピー誤差を利用していた損失の計算を最小二乗(Least Squares)誤差に変更しました。これにより誤差の飽和を抑え、勾配消失を防ぎます。

DCGANからの実装コードの変更は以下のようになります。

  1. 識別器:Dのシグモイドを削除
  2. 損失関数を最小二乗誤差に置き換える

LSGANの実装

こちらのコードを参考に、Google Colabで動作するnotebookとして実装しました。実装コードはGithubに置いてます。興味のあるかたは試してみてください。

最初のG(z)
100ループ目のG(z)
500ループ目のG(z)
1000ループ目のG(z)

1000ループまでの生成過程でDCGANと微妙に違うのが興味深いです。損失の推移と生成画像の変化をGIFにまとめてみました。

DとGの損失の推移。
生成画像の推移

最後に

GAN、DCGANと続きネットワークや損失関数に色々な工夫が提案されていったことを追跡していくのは面白いです。一つ一つの提案にはそれぞれ根拠があり、それを次々と塗り替えていく流れにGANの発展を感じます。

派生元となったDCGANの実装はこちらで行いました。

LSGANの論文はこちらです。