GAN概要解説


GAN(Generative Adversarial Network)アルゴリズム備忘録

GANに使用する深層学習器の解説

②Discriminator (識別器)
MLPなど通常の深層学習の識別器です。
画像の識別にはCNNなどが使用されることが多いです。

②Generator (生成器)
ランダムな入力データに対して、目的の特徴量(猫の画像を出力させたいなら猫の画像)を出力するように学習する生成器です。
GANにより、Generatorの重みを更新することで、目的の特徴量を持つデータを出力することができるようになります。
一度目の出力では、入力データとGeneratorのニューロンの重みはランダムなのでランダムな値が出力されます。

GANの学習アルゴリズム

①:Discriminatorの学習
「訓練データ」(例:猫の画像)と「Generatorの出力データ」を識別するDiscriminatorを学習させます。

■入力データ:訓練データ(例:猫の画像)とGeneratorの出力データ
■MLP(通常の深層学習識別器、画像データを扱うならばCNNを使用することが多い)
■出力データ:訓練データならば「1」、Generatorの出力データならば「0」

②:Generatorの学習
■入力データ:ランダムな値
■Generator(重みを更新する)
■Discriminator(重みを更新しない)
■出力データ:「Generatorによって生成されたデータ」がDiscriminatorによって、「訓練データ」もしくは「Generatorによって生成されたデータ」に識別された結果
■教師データ:すべて訓練データのラベル(今回の場合は「1」)と設定する

③:①②を繰り返し行います。
 ②により、Generatorの出力する特徴量の精度が向上します。その結果、Discriminatorの訓練データとGeneratorの出力データの識別精度が向上します。

GANの実装

ランダムな値をGANの入力データとするとDiscriminatorの訓練データの特徴量を持つ値が出力されます。
■入力データ:ランダムな値
■GAN
■出力データ:Discriminatorの訓練データの特徴量を持つ値(例:猫の画像)

結果

Generatorは、訓練データと同じ特徴量を持つデータを出力する生成器となります。
例:訓練データが猫の画像ならば、Generatorによって生成されるデータは猫の画像となります。)

参考文献

[1]岡谷貴之,深層学習,2015 講談社サイエンティフィク, 講談社.

[2]GOODFELLOW , Ian , et al . Generative adversarial nets . In: Advances in neural
information processing systems. 2014. 2672-2680.