Generator

GAN の生成部分は、判別器からのフィードバックを組み込んで、疑似データの作成を学習します。差別値の出力を実際のものとして分類するように学習します。

ジェネレータ トレーニングでは、識別器のトレーニングに必要なレベルよりも、ジェネレータとディスクリミエータを緊密に統合する必要があります。Generator は、GAN で次のようなトレーニングを行います。

  • ランダムな入力
  • ジェネレータ ネットワーク: ランダムな入力をデータ インスタンスに変換します
  • 生成されたネットワークデータを分類する差別的ネットワーク
  • 判別要素の出力
  • ジェネレータの損失。この関数によって、判別器がユーザーを欺くためにペナルティが課されます。

敵対的生成ネットワーク図。図の中央には、'discriminator' というラベルの付いたボックスがあります。左から 2 つの分岐がこの箱に入ります。上の分岐は、図の左上から「#real_images」というラベルの付いたボックスで始まります。この円柱から、「'サンプル'」というラベルの付いた箱に矢印が伸びています。'Sample' というラベルのボックスからの矢印が 'Discriminator' ボックスに入力されます。下の分岐は、'Discriminator' ボックスに入って、'Random Input' というラベルの付いたボックスで始めます。矢印が「ランダム入力」ボックスから「Generator」というラベルの付いたボックスに移動します。矢印が Generator から 2 番目のボックスまで進みます。矢印が [サンプル] ボックスから [識別] ボックスまで進みます。'Discriminator' ボックスの右側に、2 つの矢印が図の右側の 2 つのボックスを指しています。1 つの矢印が「差別的損失」のラベルが付いたボックスにつながる。もう 1 つの矢印は、発電機の損失と書かれたボックスまでつながっています。左向きの矢印と「' Backpropagation'」という単語が付いた黄色い箱

図 1: ジェネレータ トレーニングでの逆伝播。

ランダム入力

ニューラル ネットワークにはなんらかの入力が必要です。通常は、分類や予測を行うインスタンスなど、なんらかの処理を行うデータを入力します。しかし、まったく新しいデータ インスタンスを出力するネットワークの入力としては何を使用すればよいでしょうか。

最も基本的な形式では、GAN は入力としてランダム ノイズを使用します。ジェネレータは、このノイズを有意義な出力に変換します。ノイズを発生させることで、GAN でさまざまなデータを生成し、ターゲット分布のさまざまな場所からサンプリングできます。

実験から、ノイズの分布はあまり重要でないことがわかったため、均一分布など、サンプリングが容易なものを選択できます。便宜上、ノイズをサンプリングする空間は、一般に出力空間の次元よりも次元が小さくなります。

Discriminator を使用した生成ツールのトレーニング

ニューラル ネットをトレーニングするために、正味の重みを変更して出力の誤差や損失を減らします。ただし、Google の GAN では、発電機が影響する損失に直接関係はありません。ジェネレータが判別ネットにフィードされ、discriminator が影響を受ける出力を生成します。ジェネレータの損失は、識別器ネットワークがフェイクとして分類したサンプルを生成するためにジェネレータにペナルティを課します。

この余分なネットワークのチャンクは、逆伝播に含める必要があります。逆伝播では、出力に対する重みの影響を計算することによって、各重みを正しい方向に調整します。これは、重みを変更した場合に出力がどのように変化するかを示します。ただし、ジェネレータの重みの影響は、それがフィードする識別器の重みの影響によって異なります。バックプロパゲーションは出力から始まり、判別ツールを介してジェネレータに逆流します。

同時に、ジェネレータ トレーニング中に識別器を変更しないようにしてください。移動するターゲットにヒットしようとすると、ジェネレータにとってさらに困難な問題となります。

次の手順で生成ツールをトレーニングします。

  1. ランダムノイズのサンプル。
  2. サンプリングされたランダムノイズからジェネレータの出力を生成します。
  3. 差別的な値である「Real」または「Fake」に基づいて生成され、ジェネレータの出力に使用されます。
  4. 判別器の分類から損失を計算します。
  5. 判別器とジェネレータの両方を介してバックプロパゲーションを行い、勾配を取得します。
  6. 勾配を使用して発電機の重み付けのみを変更します。

これは、ジェネレータ トレーニングの 1 回の反復処理です。次のセクションでは、ジェネレータとディスクリミネータの両方のトレーニングを調整する方法について説明します。