はじめに
GANが何しているのかを大体把握したい人向けです。基本的にメモです。
参考文献に記載している方々のが理解しやすいので、興味がある人はみていただけると幸いです。
GANとは
敵対的生成ネットワーク(GAN)(Goodfellow et al., 2014)は、生成器(Generator)と識別器(Discriminator)から構成されています。生成器は乱数を入力すると本物のデータに近いデータを生成し、識別器は与えられたデータが本物のデータか生成器から生成されたデータかを分類します。
仕組み
- Generatorはノイズベクトルzを入力とし、偽のデータG(z)を生成する。
- Discriminatorは、偽物のデータG(z)と本物のデータXを入力とし、それが本物か偽物かを判定する二値分類を行う。
- GeneratorはDiscriminatorが本物と判定してしまうような偽データを生成できるように学習し、DiscriminatorはGeneratorが生成したデータが偽物だと見破れるように学習する。
数式

生成器は上記の目的関数を最小化する。第一項目は、識別器に関係する項なので考慮しません。第二項目は、\(D(G(z))=1\)となるのが目標です。つまり、生成器が生成した画像を識別器が間違えて判定してくれれば良いことになります。
識別器は上記の目的関数を最大化する。第一項目には、\( D(x)=1 \)を出力するように、第二項目は\( D(G(z))=0 \)となれば、\(log(1−D(G(z)))\) は最大化できる。
参考文献
Generative Adversarial Networks https://arxiv.org/abs/1406.2661
https://qiita.com/triwave33/items/1890ccc71fab6cbca87e
https://qiita.com/kzkadc/items/f49718dc8aedbe8a1bee
https://qiita.com/tatsuya11bbs/items/e74eb2de6b1cd1474076
コメント