「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
(Generative Adversarial Network: GAN)
特徴 †
本物データと見分けのつかない贋作データを出力する。
- 教師なし学習で使用される人工知能アルゴリズムの一種
できること †
- データの特徴を抽出して学習し、実在しないデータを生成できる(生成モデル)。
詳細 †
システム †
Generator †
生成側は識別側を欺こうと学習
- Generatorは入力にランダムノイズベクトルzを受け取る。
- 学習が進むにつれどんどん精度の高い贋作データを生成できるようになる。
- 最終的に学習が十分に完了すると、Generatorのみで贋作データを生成できる。
- 2つのネットワークの競合関係は、損失関数を共有
Discriminator †
識別側はより正確に識別しようと学習
損失関数を共有 †
DCGAN †
Generator †
- 100次元のランダムノイズのベクトルから32x32の画像を生成
- ConvTranspose2d(転置畳み込み)を使用し画像サイズを拡張
Discriminator †
統合 †
- main的な
- DataLoader?の定義
- 損失関数の定義
- Generatorの呼び出し
- Discriminatorの呼び出し
- それぞれにAdamを設定
- 指定のエポック回数、train関数を呼び出す。
- 関数の共通の引数
- Generator
- Discriminator
- GeneratorのOptimizer(Adam
- DiscriminatorのOptimizer(Adam
- Criterion(損失関数
- DataLoader?
- 手続
以下を1エポック分、繰り返す。
- ランダムノイズを生成し贋作画像の生成
- 学習データ(本物画像+贋作画像)を作成
- update_discriminator関数呼び出し
- update_generator関数呼び出し
- 平均の損失を算出
- update_discriminator関数
Discriminatorのパラメタ更新を行う。
- 本物データで順伝播、贋作データで順伝播
- 上記2つの損失を合計して逆伝播してパラメタ更新
- update_generator関数
Generatorのパラメタ更新を行う。
- Discriminatorを贋作データで順伝播
- 損失を計算(損失関数は共通なので)
- Generatorで損失を逆伝播してパラメタ更新
参考 †