GAN の生成部分は、判別器からのフィードバックを組み込んで、疑似データの作成を学習します。差別値の出力を実際のものとして分類するように学習します。
ジェネレータ トレーニングでは、識別器のトレーニングに必要なレベルよりも、ジェネレータとディスクリミエータを緊密に統合する必要があります。Generator は、GAN で次のようなトレーニングを行います。
- ランダムな入力
- ジェネレータ ネットワーク: ランダムな入力をデータ インスタンスに変換します
- 生成されたネットワークデータを分類する差別的ネットワーク
- 判別要素の出力
- ジェネレータの損失。この関数によって、判別器がユーザーを欺くためにペナルティが課されます。
図 1: ジェネレータ トレーニングでの逆伝播。
ランダム入力
ニューラル ネットワークにはなんらかの入力が必要です。通常は、分類や予測を行うインスタンスなど、なんらかの処理を行うデータを入力します。しかし、まったく新しいデータ インスタンスを出力するネットワークの入力としては何を使用すればよいでしょうか。
最も基本的な形式では、GAN は入力としてランダム ノイズを使用します。ジェネレータは、このノイズを有意義な出力に変換します。ノイズを発生させることで、GAN でさまざまなデータを生成し、ターゲット分布のさまざまな場所からサンプリングできます。
実験から、ノイズの分布はあまり重要でないことがわかったため、均一分布など、サンプリングが容易なものを選択できます。便宜上、ノイズをサンプリングする空間は、一般に出力空間の次元よりも次元が小さくなります。
Discriminator を使用した生成ツールのトレーニング
ニューラル ネットをトレーニングするために、正味の重みを変更して出力の誤差や損失を減らします。ただし、Google の GAN では、発電機が影響する損失に直接関係はありません。ジェネレータが判別ネットにフィードされ、discriminator が影響を受ける出力を生成します。ジェネレータの損失は、識別器ネットワークがフェイクとして分類したサンプルを生成するためにジェネレータにペナルティを課します。
この余分なネットワークのチャンクは、逆伝播に含める必要があります。逆伝播では、出力に対する重みの影響を計算することによって、各重みを正しい方向に調整します。これは、重みを変更した場合に出力がどのように変化するかを示します。ただし、ジェネレータの重みの影響は、それがフィードする識別器の重みの影響によって異なります。バックプロパゲーションは出力から始まり、判別ツールを介してジェネレータに逆流します。
同時に、ジェネレータ トレーニング中に識別器を変更しないようにしてください。移動するターゲットにヒットしようとすると、ジェネレータにとってさらに困難な問題となります。
次の手順で生成ツールをトレーニングします。
- ランダムノイズのサンプル。
- サンプリングされたランダムノイズからジェネレータの出力を生成します。
- 差別的な値である「Real」または「Fake」に基づいて生成され、ジェネレータの出力に使用されます。
- 判別器の分類から損失を計算します。
- 判別器とジェネレータの両方を介してバックプロパゲーションを行い、勾配を取得します。
- 勾配を使用して発電機の重み付けのみを変更します。
これは、ジェネレータ トレーニングの 1 回の反復処理です。次のセクションでは、ジェネレータとディスクリミネータの両方のトレーニングを調整する方法について説明します。