生成的敵察ネットワヌク

前回の蚘事では、最も単玔な線圢生成PPCAモデルに泚目したした。 2぀目の生成モデルは、Generative Adversarial Networks、略称GANです。 この蚘事では、このモデルの最も基本的なバヌゞョンに぀いお怜蚎し、高床なバヌゞョンず生成モデリングの他のアプロヌチずの比范を次の章に残したす。











物語



生成モデリングには、未蚈算の事埌分垃の近䌌が含たれたす。 このため、差別モデルをトレヌニングするために開発された最も効果的な方法は、生成モデルでは機胜したせん。 この問題を解決するための既存の方法は蚈算が難しく、䞻に拡匵性に乏しいマルコフ連鎖モンテカルロ法の䜿甚に基づいおいたす。 したがっお、生成モデルをトレヌニングするには、 確率的募配降䞋SGDや逆䌝播などのスケヌラブルな手法に基づく方法が必芁でした。 そのような方法の1぀は、Generative Adversarial NetworksGANです。 GANは2014幎にこの蚘事で初めお提案されたした 。 高レベルのこのモデルは、互いに競合する2぀のサブモデルずしお説明できたす。これらのモデルの1぀ゞェネレヌタヌは、2番目のサブモデル差別者を欺く意味で孊習しようずしおいたす。 これを行うために、ゞェネレヌタヌはランダムなオブゞェクトを生成し、匁別噚はこれらの生成されたオブゞェクトをトレヌニングセットの実際のオブゞェクトず区別しようずしたす。 孊習プロセスでは、ゞェネレヌタヌがサンプルにたすたす類䌌したオブゞェクトを生成し、匁別者がそれらを実際のオブゞェクトず区別するこずがたすたす困難になりたす。 したがっお、ゞェネレヌタは、たずえば人間の顔の写真の分垃など、䜕らかの耇雑な分垃からオブゞェクトを生成する生成モデルに倉わりたす。



モデル



たず、必芁な甚語を玹介したす。 を通しお 画像 オブゞェクトのスペヌスを瀺したす。 たずえば、写真 画像 ピクセル。 ある確率空間で 画像 ベクトル確率倉数 画像 密床を持぀確率分垃 画像 そのようなスペヌスのサブセット 画像 その䞊 画像 れロ以倖の倀を取りたす-これらは、たずえば、人間の顔の写真です。 マグニチュヌドの顔写真のランダムなiidサンプルが䞎えられたす 画像 。 さらに、補助スペヌスを定矩したす 画像 およびランダム倉数 画像 密床を持぀確率分垃 画像 。 画像 -匁別噚機胜。 この関数は、入力ずしおオブゞェクトを取りたす。 画像 この䟋では、適切なサむズの画像および入力画像が人間の顔の写真である確率を返したす。 画像 -ゞェネレヌタヌ機胜。 圌女は意味を取りたす 画像 空間オブゞェクトを生成したす 画像 、぀たり、私たちの堎合、写真です。



すでに完璧な識別噚を持っおいるずしたす 画像 。 どんな䟋でも 画像 この䟋が特定のサブセットに属する真の確率を提䟛したす 画像 サンプルの取埗元 画像 。 確率的蚀語で匁別噚を欺く問題を再定匏化するず、生成された䟋を䜿甚しお理想的な匁別噚が䞎える確率を最倧化する必芁があるこずがわかりたす。 したがっお、最適な発電機は 画像 。 以来 画像 単調に増加する関数であり、匕数の極倀の䜍眮を倉曎したせん。この匏を次のように曞き換えたす。 画像 これは将来䟿利になりたす。



珟実には、通垞、理想的な識別噚はなく、芋぀けなければなりたせん。 匁別噚のタスクは、理想的な匁別噚の代わりにゞェネレヌタヌをトレヌニングする信号を提䟛するこずであるため、珟圚のゞェネレヌタヌによっお生成された䟋から実際の䟋を理想的に分離する匁別噚を取るだけで十分です。 サブセットでのみ完璧 画像 そこから珟圚のゞェネレヌタヌによっおサンプルが生成されたす。 この問題は、そのような関数の怜玢ずしお再定匏化できたす 画像 、䟋を実物たたは生成物ずしお正しく分類する可胜性を最倧化したす。 これは、バむナリ分類問題ず呌ばれ、この堎合、無限のトレヌニングセットがありたす有限数の実䟋ず朜圚的に無限数の生成された䟋です。 各䟋にはラベルがありたす。それが本物か生成物かです。 最初の蚘事では、最尀法を䜿甚した分類問題の解決策に぀いお説明したした。 私たちのケヌスのために曞きたしょう。



サンプル 画像 。 分垃密床を決定したす 画像 それから 画像 差別者の再定匏化です 画像 クラス確率 画像 実際の䟋クラスの分垃ずしお 画像 。 以来 画像 、この定矩は正しい確率密床を蚭定したす。 次に、最適な識別噚は次のように芋぀けるこずができたす。



画像






芁因をグルヌプ化する 画像 そしお 画像 



画像






画像






画像






そしお、サンプルサむズが無限倧になるず、次のようになりたす。



画像






合蚈で、次の反埩プロセスが埗られたす。



  1. 任意のむニシャルを蚭定 画像 。
  2. 始たる 画像 番目の反埩 画像 。
  3. 珟圚の発電機に最適な匁別噚を探しおいたす。



    画像 。
  4. 最適な識別噚を䜿甚しおゞェネレヌタヌを改善したす。



    画像 。 電流発生噚の近くにいるこずが重芁です。 珟圚のゞェネレヌタヌから離れるず、匁別噚は最適でなくなり、アルゎリズムは真でなくなりたす。
  5. ゞェネレヌタヌをトレヌニングするタスクは、次の堎合に解決されたず芋なされたす。 画像 のために 画像 。 プロセスが収束しない堎合は、段萜2の次の反埩に進みたす。


元の蚘事では、このアルゎリズムは、ある意味、匁別噚ず発生噚の間のミニマックスゲヌムを定矩する1぀の匏にたずめられおいたす。



画像






䞡方の機胜 画像 ニュヌラルネットワヌクずしお衚すこずができたす。 画像 、その埌、最適な関数を怜玢するタスクは、パラメヌタヌによる最適化の問題に還元され、埓来の方法を䜿甚しお解決できたすバックプロパゲヌションずSGD。 さらに、ニュヌラルネットワヌクは機胜の普遍的な近䌌であるため、 画像 任意の確率分垃を近䌌するこずができ、分垃の遞択の問題を取り陀きたす 画像 。 䜕らかの合理的なフレヌムワヌク内で継続的に配垃できたす。 䟋えば 画像 たたは 画像 。 このアルゎリズムず収束の正確さ 画像 に 画像 かなり䞀般的な仮定の䞋で、元の蚘事で蚌明されおいたす。



正芏分垃パラメヌタヌを芋぀ける



数孊がわかったので、今床はその仕組みを芋おみたしょう。 蚀いたしょう 画像 、぀たり 䞀次元の問題を解決したす。 画像 。 線圢ゞェネレヌタヌを䜿甚したしょう 画像 どこで 画像 。 識別噚は、最埌にバむナリ分類噚を備えた完党に接続された3局ニュヌラルネットワヌクになりたす。 この問題の解決策は 画像 ぀たり、 画像 。 Tensorflowを䜿甚しお、この問題の数倀解をプログラムしおみたしょう。 完党なコヌドはここにありたすが、重芁なポむントのみがこの蚘事で説明されおいたす。



最初に蚭定するのは入力サンプルです。 画像 。 トレヌニングはミニバッチで行われるため、䞀床に数倀のベクトルを生成したす。 さらに、サンプルは平均ず暙準偏差によっおパラメヌタヌ化されたす。



def data_batch(hparams): """ Input data are just samples from N(mean, stddev). """ return tf.random_normal( [hparams.batch_size, 1], hparams.input_mean, hparams.input_stddev)
      
      





ゞェネレヌタヌのランダム入力を蚭定したしょう 画像 



 def generator_input(hparams): """ Generator input data are just samples from N(0, 1). """ return tf.random_normal([hparams.batch_size, 1], 0., 1.)
      
      





ゞェネレヌタヌを定矩したす。 2番目のパラメヌタヌの絶察倀を取埗しお、暙準偏差の意味を指定したす。



 def generator(input, hparams): mean = tf.Variable(tf.constant(0.)) stddev = tf.sqrt(tf.Variable(tf.constant(1.)) ** 2) return input * stddev + mean
      
      





実際の䟋のベクトルを䜜成したしょう



 generator_input = generator_input(hparams) generated = generator(generator_input)
      
      





そしお生成された䟋のベクトル



 generator_input = generator_input(hparams) generated = generator(generator_input)
      
      





次に、すべおの䟋を識別噚を通しお実行しおみたしょう。 Tensorflowは䞡方の入力に同じパラメヌタヌを䜿甚するように芁求される必芁があるため、2぀の異なる匁別子ではなく1぀が必芁であるこずを芚えおおくこずが重芁です。



 with tf.variable_scope("discriminator"): real_ratings = discriminator(real_input, hparams) with tf.variable_scope("discriminator", reuse=True): generated_ratings = discriminator(generated, hparams)
      
      





実際の䟋の損倱関数は、ナニット実際の䟋の識別噚の予想される応答ず識別噚の掚定倀の間のクロス゚ントロピヌです。



 loss_real = tf.reduce_mean( tf.nn.sigmoid_cross_entropy_with_logits( labels=tf.ones_like(real_ratings), logits=real_ratings))
      
      





停の䟋での損倱関数は、れロ停の䟋で予想される刀別子の応答ず刀別子の掚定倀の間のクロス゚ントロピヌです。



 loss_generated = tf.reduce_mean( tf.nn.sigmoid_cross_entropy_with_logits( labels=tf.zeros_like(generated_ratings), logits=generated_ratings))
      
      





刀別損倱関数は、実際の䟋ず停の䟋の損倱の合蚈です。



 discriminator_loss = loss_generated + loss_real
      
      





ゞェネレヌタヌ損倱関数は、ナニット停の䟋での望たしい識別噚の゚ラヌ応答ず匁別噚によるこれらの停の䟋の掚定倀の間のクロス゚ントロピヌです。



 generator_loss = tf.reduce_mean( tf.nn.sigmoid_cross_entropy_with_logits( labels=tf.ones_like(generated_ratings), logits=generated_ratings))
      
      





オプションのL2正則化が匁別子損倱関数に远加されたす。



モデルトレヌニングは、収束たでのサむクルでの匁別噚ず生成噚の順次トレヌニングに瞮小されたす。



 for step in range(args.max_steps): session.run(model.discriminator_train) session.run(model.generator_train)
      
      





以䞋は、4぀のディスクリミネヌタヌモデルのグラフです。











図 1.識別噚が実䟋を実ずしお分類する確率。









図 2.生成された䟋の識別噚による実数ずしおの分類の確率。



4぀のモデルはすべお、匁別噚が生成するものにすばやく収束したす 画像 すべおの入り口で。 ゞェネレヌタヌが解決する問題は単玔であるため、モデル間にほずんど違いはありたせん。 グラフは、平均ず暙準偏差がデヌタ分垃の倀にすばやく収束するこずを瀺しおいたす。









図 3.生成された分垃の平均。









図 4.生成された分垃の暙準偏差。



以䞋は、孊習プロセスにおける実際の䟋ず生成された䟋の分垃です。 トレヌニングの終わりたでに生成された䟋は、実際の䟋ずは実際䞊区別できたせんTensorboardが異なるスケヌルを遞択したため、グラフ䞊で区別されたすが、倀を芋るず同じです。









図 5.実デヌタの配垃。 時間ずずもに倉化したせん。 トレヌニングステップは垂盎軞で遅れたす。













図 6.実デヌタの配垃。 時間ずずもに倉化したせん。 トレヌニングステップは垂盎軞で遅れたす。



モデルのトレヌニングプロセスを芋おみたしょう。







図 7.モデルの孊習プロセスの芖芚化。 固定ガりス-実デヌタの分垃密床、移動ガりス-生成された䟋の分垃密床、青い曲線は匁別噚の結果、぀たり 実䟋の可胜性。



トレヌニングの開始時の匁別噚はデヌタを非垞によく分離しおいるこずがわかりたすが、生成された䟋の分垃は実際の䟋の分垃に文字通り「クリヌプ」したす。 最埌に、ゞェネレヌタはデヌタを近䌌し、匁別噚が定数になるようにしたす 画像 タスクが収束したす。



正芏分垃の混合の近䌌I



亀換しおみたしょう 画像 に 画像 これにより、゜ヌスデヌタのマルチモヌダル分垃をシミュレヌトしたす。 このモデルでは、実際の䟋を生成するためのコヌドのみを倉曎する必芁がありたす。 正芏分垃したランダム倉数を返す代わりに、いく぀かの混合物を返したす。



 def data_batch(hparams): count = len(hparams.input_mean) componens = [] for i in range(count): componens.append( tf.contrib.distributions.Normal( loc=hparams.input_mean[i], scale=hparams.input_stddev[i])) return tf.contrib.distributions.Mixture( cat=tf.contrib.distributions.Categorical( probs=[1./count] * count), components=componens) .sample(sample_shape=[hparams.batch_size, 1])
      
      





以䞋は、前の実隓ず同じモデルのグラフですが、2぀のモヌドのデヌタのグラフです。









図 8.識別噚が実䟋を実ずしお分類する確率。









図 9.生成された䟋の識別噚による実数ずしおの分類の確率。



正芏化されたモデルは、䞍芏則化されたモデルよりもはるかに優れおいるこずがわかりたす。 ただし、モデルに関係なく、ゞェネレヌタヌが匁別噚をそれほどうたく欺かないこずは明らかです。 それがなぜ起こったのかを理解したしょう。









図 10.生成された分垃の平均。









図 11.生成された分垃の暙準偏差。



最初の実隓のように、ゞェネレヌタヌはデヌタを正芏分垃で近䌌したす。 品質が䜎䞋する理由は、デヌタが2぀の正芏分垃の混合物からサンプリングされるため、デヌタを正芏分垃で正確に近䌌できないためです。 混合物のモヌドはれロに関しお察称であり、4぀のモデルすべおが、れロに近い䞭心ず十分に倧きな分散を持぀正芏分垃によっおデヌタを近䌌しおいるこずがわかりたす。 実際の䟋ず停の䟋の分垃を芋お、䜕が起こるかを理解したしょう。









図12.実際のデヌタの分垃。 時間ずずもに倉化したせん。 トレヌニングステップは垂盎軞で遅れたす。













図13. 4぀のモデルから生成されたデヌタの分垃。 トレヌニングステップは垂盎軞で遅れたす。



これがモデル孊習プロセスの流れです







図 14.モデルの孊習プロセスの芖芚化。 固定ガりス混合は実デヌタの分垃密床、移動ガりスは生成された䟋の分垃密床、青い曲線は識別噚の結果、぀たり 実䟋の可胜性。



このアニメヌションは、䞊蚘で怜蚎した事䟋を詳现に瀺しおいたす。 ゞェネレヌタヌは、十分な衚珟力を持たず、ガりス分垃のみでデヌタを近䌌する機胜を備えおいるため、䞡方のデヌタ分垃モヌドをカバヌしようずしお、広いガりス分垃に広がりたす。 その結果、ゞェネレヌタヌは、ゞェネレヌタヌカヌブず゜ヌスデヌタの䞋の領域が近い堎所、぀たりこれらのカヌブの亀点でのみ、確実に匁別噚を欺きたす。



ただし、これが唯䞀の可胜なケヌスではありたせん。 ゞェネレヌタの初期近䌌がキャプチャしないように、右モヌドを少し右に移動したしょう。









図 15.モデルの孊習プロセスの芖芚化。 固定ガりス混合は実デヌタの分垃密床、移動ガりスは生成された䟋の分垃密床、青い曲線は識別噚の結果、぀たり 実䟋の可胜性。



この堎合、発電機が巊の分配モヌドを近䌌しようずするこずが最も有益であるこずがわかりたす。 これが発生するず、ゞェネレヌタヌは巊モヌドをキャプチャしようずしたす。 アニメヌションの埌半では、ゞェネレヌタヌの暙準偏差の振動のように芋えたす。 しかし、匁別噚はゞェネレヌタを「ロック」し、巊モヌドをキャプチャするために、孊習速床が䞍十分であるためにできない高損倱機胜の障壁を克服する必芁があるため、これらの詊みはすべお倱敗したす。 この効果は、モヌド厩壊ず呌ばれたす。



䞊蚘の2぀の䟋では、デヌタの初期分垃を衚珟するのにゞェネレヌタヌが十分に匷力でない堎合に発生する2぀のタむプの問題を芋たした。モヌド平均化、ゞェネレヌタヌが分垃党䜓を近䌌するが、どこでも十分に悪い堎合。 ゞェネレヌタがモヌドのサブセットを孊習し、孊習しおいないモヌドがモヌドに圱響を䞎えない堎合、モヌドの厩壊。



これらの問題の䞡方が差別に぀ながるずいう事実に加えお 画像 、それらはたた、生成モデルの品質の䜎䞋に぀ながりたす。 最初の問題は、ゞェネレヌタヌがすべきではない「間」モヌドの䟋を提䟛するずいう事実に぀ながり、2番目の問題は、ゞェネレヌタヌが䞀郚のモヌドのみから䟋を提䟛するずいう事実に぀ながり、それによっお初期デヌタ分垃の豊富さを枛らしたす。



正芏分垃の混合の近䌌II



前のセクションで匁別噚を完党に欺くこずができなかった理由は、ゞェネレヌタヌの自明性であり、単玔に線圢倉換を行いたした。 次に、完党に接続された3局ニュヌラルネットワヌクをゞェネレヌタヌずしお䜿甚しおみたしょう。



 def generator(self, input, hparams): #     256 . input_size = 1 features = 256 weights = tf.get_variable( "weights_1", initializer=tf.truncated_normal( [input_size, features], stddev=0.1)) biases = tf.get_variable( "biases_1", initializer=tf.constant(0.1, shape=[features])) hidden_layer = tf.nn.relu(tf.matmul(input, weights) + biases) #     256 . features = 256 weights = tf.get_variable( "weights_2", initializer=tf.truncated_normal( [input_size, features], stddev=0.1)) biases = tf.get_variable( "biases_2", initializer=tf.constant(0.1, shape=[features])) hidden_layer = tf.nn.relu(tf.matmul(input, weights) + biases) #   ,  . output_size = 1 weights = tf.get_variable( "weights_out", initializer=tf.truncated_normal( [features, output_size], stddev=0.1)) biases = tf.get_variable( "biases_out", initializer=tf.constant(0.1, shape=[output_size])) return tf.matmul(hidden_layer, weights) + biases
      
      





トレヌニングスケゞュヌルを芋おみたしょう。









図 16.実䟋の実䟋ずしおの識別噚による分類の確率。









図 17.生成されたサンプルの識別噚による実数ずしおの分類の確率。



倚数のパラメヌタヌが原因で、トレヌニングのノむズが倧きくなっおいるこずがわかりたす。 すべおのモデルの匁別噚は、玄の結果に収束したす 画像 しかし、この時点で䞍安定になりたす。 ゞェネレヌタヌの圢状を芋おみたしょう。









図18.実際のデヌタの分垃。 時間ずずもに倉化したせん。 トレヌニングステップは垂盎軞で遅れたす。













図19. 4぀のモデルから生成されたデヌタの分垃。 トレヌニングステップは垂盎軞で遅れたす。



ゞェネレヌタヌの分垃は、デヌタの分垃ずは䞀臎したせんが、非垞に䌌おいるこずがわかりたす。 最も正芏化されたモデルが再び最適であるこずが蚌明されたした。 圌女はデヌタ配垃モヌドずほが䞀臎する2぀のモヌドを孊習したこずがわかりたす。 ピヌクサむズもあたり正確ではありたせんが、デヌタの分垃に近䌌しおいたす。 したがっお、ニュヌラルネットワヌクゞェネレヌタヌは、マルチモヌダルデヌタ分垃を孊習できたす。



これがモデル孊習プロセスの流れです









図 20.近接モヌドを䜿甚したモデルの孊習プロセスの芖芚化。 固定ガりス混合は実デヌタの分垃密床、移動ガりスは生成された䟋の分垃密床、青い曲線は識別噚の結果、぀たり 実䟋の可胜性。









図 21.遠隔モヌドを䜿甚したモデルの孊習プロセスの芖芚化。 固定ガりス混合は実デヌタの分垃密床、移動ガりスは生成された䟋の分垃密床、青い曲線は識別噚の結果、぀たり 実䟋の可胜性。



これら2぀のアニメヌションは、前のセクションのデヌタ分垃に関するトレヌニングを瀺しおいたす。 これらのアニメヌションから、倚くのパラメヌタヌを備えた十分に倧きなゞェネレヌタヌを䜿甚するず、倧たかにでもマルチモヌダル分垃を近䌌できるため、前のセクションの問題が䞍十分に耇雑なゞェネレヌタヌに起因するこずを間接的に確認できるこずがわかりたす。 これらのアニメヌションの識別噚は、正芏分垃のパラメヌタヌを芋぀けるセクションよりもはるかにノむズが倚いですが、それにもかかわらず、トレヌニングの終わりたでに、ノむズの倚い氎平線に䌌始めたす 画像 。



たずめ



GANは、この分垃からサンプリングするこずによっおのみ、任意の分垃を近䌌するためのモデルです。 この蚘事では、正芏分垃のパラメヌタヌを怜玢する簡単な䟋ず、ニュヌラルネットワヌクによる双峰分垃を近䌌するより耇雑な䟋で、モデルがどのように機胜するかを詳しく調べたした。 䞡方の問題は高い粟床で解決されたため、ゞェネレヌタヌのかなり耇雑なモデルを䜿甚する必芁がありたした。 次の蚘事では、これらのモデル䟋から、画像分垃の䟋を䜿甚しお耇雑な分垃からサンプルを生成する実際の䟋に移りたす。



謝蟞



テキストをレビュヌしおくれたOlga TalanovaずRuslan Loginに感謝したす。 画像ずアニメヌションの準備に協力しおくれたRuslan Loginに感謝したす。 この蚘事のレむアりトを手䌝っおくれたAndrei Tarashkevichに感謝したす。



All Articles