GAN

GANとは

GAN(Generative Adversarial Network、敵対的生成モデル)は、ディープラーニングによる生成モデルのひとつです。2014年に開発された教師なし学習で使用される機械学習のアルゴリズムで、2つのニューラルネットワークを競合させて学習させます。


GANは生成ネットワークと識別ネットワークから構成され、両者のネットワークは互いに対立しながら学習を行います(2人ゼロ和ゲーム)。
すなわち、生成側はミニマックス戦略に基づいて識別側を欺こうとし、識別側はより正確に識別しようと学習を行います。具体的には、生成ネットワークは潜在変数から画像や音声を生成し、識別ネットワークはそれらが本物である確率を出力します。

GANの学習は2つのネットワークを交互に行います。
生成ネットワークの学習では、識別ネットワークの重みは固定し、識別ネットワークの学習では、生成ネットワークは生成のみを行います。
損失関数はともに(符号の異なる)2クラス交差クロスエントロピー誤差関数を用い、パラメータの更新は確率的勾配降下法で行います。

GANは教師なし学習であるため、データ量が多く潜在変数の次元数が高いと精度が上がる一方、学習に時間がかかるという難点があります。
この問題を克服するConditional GAN(cGAN)は半教師あり学習の一種で、ラベル情報を加えることで、条件付きのデータを生成することができます。GANと異なり、生成するデータの種類をリクエストすることが可能です。

GANは他にもさまざまに応用されており、数百種類以上の膨大な数の変種があります。一例を挙げると以下などがあります。

  • 画像生成能向上のため深層畳み込みニューラルネットワークを用いたDCGAN
  • 画風変換に用いられるCycleGANpix2pix
  • 超解像に用いるSRGAN
  • テキストから画像を生成するStackGAN
  • 学習が安定するWasserstein GAN(WGAN)
  • 文章を生成するSeqGAN、音楽を生成するMuseGAN
  • 動画を生成するVideoGAN

 

GAN技術は「この10年の機械学習で最も面白いアイディア」とも言われています。その一つの所以は、画像・音声・テキストなどのデータから、絵画・音楽・小説・動画・アニメの生成など、多岐にわたるクリエイティブな領域でも活用し得ることです。また、データ数の不足を補うためのデータ拡張にもGANは用いられています。