NetGANOperator
NetGANOperator[{generator,discriminator}]
生成ネット gen と分類ネット discriminator で生成的な敵対的ネットワーク(generative adversarial network, GAN)の訓練を行うネットワークを表す.
NetGANOperator[{generator,discriminator},loss]
使用する損失タイプを指定する.
詳細とオプション
- NetGANOperatorを使ってさまざまなデータタイプについて生成的なモデルが訓練できる.
- NetGANOperator[…]の訓練中,生成器と識別器は互いにゼロサムゲームを行う.生成器は識別器をだまそうとし,識別器は生成されたデータと実際のデータを区別しようとする.
- NetGANOperator[{generator,discriminator},…]の generator と discriminator は厳密に1つの入力を取り,厳密に1つの出力を作成する.加えて,generator は discriminator の入力と同じ形式の出力を生成し,discriminator はスカラー数を出力する.
- 次は,NetGANOperator[…]の入力ポートである.
-
"Sample" 識別器が高いスコアを付けなければならない実際のサンプル "Latent" 偽のサンプルを生成するための生成器へのシード入力 - 次は出力ポートである.
-
"LossReal" 実際のサンプルについての識別器の損失 "LossFake" 偽のサンプルについての識別器の損失 "GeneratedFake" 生成された偽のサンプル - NetGANOperatorは次のアーキテクチャを実装する.
- NetTrainは,NetGANOperator[…]の訓練中に識別器のために自動的に損失"LossReal"と"LossFake"の和を最小化する.NetTrainが生成器の作るデータに対する"LossFake"を最大にするように,識別器から得られる"LossFake"の勾配は符号を逆にして生成器の訓練に用いられる.
- 通常,識別器と生成器が同時に更新されないようにするためにTrainingUpdateScheduleがNetTrain内で使われる.TrainingUpdateScheduleは生成器よりも頻繁に識別器を更新するために使うこともできる.
- NetGANOperator[…,loss]の loss の可能な値には以下がある.
-
Automatic 識別器の出力層に依存する自動損失 "JensenShannon" Jensen-Shannon発散 "Wasserstein" Wasserstein-GANで使用されるアースムーバー距離の近似 - "JensenShannon"の場合,損失は以下で与えられる.
-
"LossReal" -Log[discriminator[sample]] "LossFake" -Log[1-discriminator[generator[latent]] - "Wasserstein"の場合,損失は以下で与えられる.
-
"LossReal" -discriminator[sample] "LossFake" discriminator[generator[latent]] - 次の訓練パラメータを含めることができる.
-
LearningRateMultipliers Automatic ネットの中の訓練可能な配列の学習率乗数 - Options[NetGANOperator]は層を構築する際のデフォルトオプションのリストを与える.Options[NetGANOperator[…]]はデータについてネットワークを評価する際のデフォルトオプションのリストを与える.
- Information[NetGANOperator[…]]はネットワークについてのレポートを与える.
- Information[NetGANOperator[…],prop]は,NetGANOperator[…]の特性 prop の値を与える.使用可能な特性はNetGraphと同じである.
例題
すべて開くすべて閉じる例 (1)
アプリケーション (4)
一次元分布からのサンプル (1)
生成器と識別器を埋め込んで両者を敵対的な態度で訓練するNetGANOperatorを作成する:
潜在確率変数とサンプルとして取られた実際のデータを与えるデータ生成器を作成する:
NetGANOperatorの訓練をモニターするために,生成されたサンプルをモニターする関数を作ると役に立つだろう:
NetGANOperatorのランダムな初期化についてのモニタリングをチェックする:
この図では,緑の曲線がターゲット分布,赤い曲線が識別関数で,オレンジ色のヒストグラムは生成されたフェイクの数の分布を表している.
生成的敵対的ネットワーク(Generative Adversarial Network)を,動作をライブでモニターしながら訓練する:
二次元分布からのサンプル (1)
与えられた数のペアに対してスコアを出力する識別器を定義する:
生成器と識別器を埋め込んで,それらを敵対的態度で訓練するNetGANOperatorを作成する:
NetGANOperatorの生成器と識別器の動作を可視化する関数を書く:
ランダムな初期化を使って生成されたサンプルもランダムである:
NetGANOperatorを訓練する:
画像と数字の生成 (1)
ランダムなシードとサンプルとして取られた数字の画像を与えるデータ生成器を定義する:
生成された画像がどのくらいよいかをモニターする関数を定義する:
この関数をランダムに初期化されたNetGANOperatorで試す:
画像を生成するようにNetGANOperatorを訓練する.生成された画像は訓練過程を通してモニターする:
訓練されたNetGANOperatorから生成器を抽出し,これを使って新たな数字の画像を生成する:
数字を別のCycle-GANに変換する (1)
画像を取り込んで同じ形の別の画像を生成する生成器を定義する:
NetGANOperatorの2つの例と共有生成器を使ってCycle-GANアーキテクチャを定義し,サイクル一貫性の損失を敵対的損失に加える:
特性と関係 (1)
いくつかの生成器と識別器および対応するNetGANOperatorについて考える:
NetGANOperator内の生成器は識別器から逆勾配を受け取る.
NetGANOperatorが生成器の前後の層なしで単独で訓練されるなら,それは負の学習率乗数を使うことに等しい:
NetGANOperatorを訓練することは次のNetGraphを訓練することに等しい:
それは,識別器が2ヶ所で共有されている次のNetGraphにも等しい:
テキスト
Wolfram Research (2020), NetGANOperator, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetGANOperator.html.
CMS
Wolfram Language. 2020. "NetGANOperator." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/NetGANOperator.html.
APA
Wolfram Language. (2020). NetGANOperator. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NetGANOperator.html