GANのジェネレータはどのようにトレーニングされますか?


9

ガンズの論文は、弁別が電車に以下の勾配を使用しています言います:

θd1メートルΣ=1メートル[ログDバツ+ログ1DGz]

値は、サンプリングされたデータサンプルを生成するために発電機に通し、次いで弁別器は、生成されたデータサンプルを使用してbackpropogatedされます。ジェネレータがデータを生成すると、それは弁別子のトレーニングでそれ以上の役割を果たしません。言い換えると、ジェネレータは、データサンプルを生成し、サンプルのみを処理することで、メトリックから完全に削除できます。z

ただし、ジェネレーターのトレーニング方法については少し混乱しています。次のグラデーションを使用します。

θg1メートルΣ=1メートル[ログ1DGz]

この場合、弁別子はメトリックの一部です。前のように取り除くことはできません。通常の判別モデルにおける最小二乗や対数尤度のようなものは、適切に形成された見事な定義を持っているため、簡単に区別できます。ただし、メトリックが別のニューラルネットワークに依存している場合に、逆伝播する方法について少し混乱しています。本質的に、ジェネレータの出力を弁別器の入力に接続し、全体を弁別器部分の重みが一定である1つの巨大ネットワークのように扱いますか?

回答:


10

このプロセスを疑似コードで考えると役立ちます。させるgenerator(z)一様にサンプリングされたノイズベクトルをとる関数でありz、入力ベクトルと同じサイズのベクトルを返しますX。この長さを呼びましょうd。してみましょうdiscriminator(x)取る関数であるd次元のベクトルをスカラー確率を返しx、真のデータ配信に属します。トレーニング:

G_sample = generator(Z)
D_real = discriminator(X)
D_fake = discriminator(G_sample)

D_loss = maximize mean of (log(D_real) + log(1 - D_fake))
G_loss = maximize mean of log(D_fake)

# Only update D(X)'s parameters
D_solver = Optimizer().minimize(D_loss, theta_D)
# Only update G(X)'s parameters
G_solver = Optimizer().minimize(G_loss, theta_G)

# theta_D and theta_G are the weights and biases of D and G respectively
Repeat the above for a number of epochs

だから、はい、あなたは私たちが本質的にジェネレーターとディスクリミネーターを、偽のデータを使用するときにミニバッチを交互に使用するための1つの巨大なネットワークと考えることは正しいです。ジェネレータの損失関数は、この半分の勾配を処理します。このネットワークトレーニングを分離して考えると、通常はMLPをトレーニングするのと同じようにトレーニングされ、その入力はジェネレーターネットワークの最後のレイヤーの出力になります。

ここでTensorflowのコードを使用して詳細な説明に従うことができます(多くの場所で):http : //wiseodd.github.io/techblog/2016/09/17/gan-tensorflow/

コードを見れば、簡単に理解できるはずです。


1
D_lossさらに詳しく説明してもらえますG_lossか?どのスペースで最大化しますか?IIUC、D_realそしてD_fakeそれぞれがバッチなので、バッチ全体を最大化していますか?
I P

@Piはい、バッチ全体で最大化しています。
tejaskhot 2017年

1

本質的にジェネレーターの出力を弁別器の入力に接続しますか?それから、全体を1つの巨大なネットワークのように扱い、>弁別器部分の重みは一定ですか?

まもなく:はい(私はこれを再確認するためにGANのソースのいくつかを掘りました)

また、GANトレーニングには、DとGを毎回更新するか、Dを奇数の反復で更新し、Gを偶数で更新するかなど、さらに多くのことが含まれます。このトピックに関する非常に素晴らしい論文もあります:

「GANをトレーニングするための改善されたテクニック」

Tim Salimans、Ian Goodfellow、Wojciech Zaremba、Vicki Cheung、Alec Radford、Xi Chen

https://arxiv.org/abs/1606.03498


調べた情報源へのリンクを提供していただけませんか。それらを読むことは私にとって役に立ちます。
Vivek Subramanian

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.