GAN損失関数を理解する


17

私は、Generative Adversarial Networksの理解(Daniel Seitaによるブログ投稿)で提供されているGAN損失関数の理解に苦労しています。

標準的なクロスエントロピー損失では、シグモイド関数を介して実行された出力と、結果のバイナリ分類があります。

シータ州

バツ1

Hバツ1y1D=y1ログDバツ11y1ログ1Dバツ1

これは単なる期待のログであり、理にかなっていますが、GAN損失関数で、同じ反復で真の分布からのデータと生成モデルからのデータをどのように処理できますか?

回答:


6

この質問の焦点

「...どうすれば同じ反復で真の分布からのデータと生成モデルからのデータを処理できますか?

基礎出版物の分析

参照ページ「Generative Adversarial Networksの理解(2017)」で、博士候補者Daniel Sietaは、Generative Adversarial Networks、Goodfellow、Pouget-Abadie、Mirza、Xu、Warde-Farley、Ozair、Courville、およびBengio、2014年6月を正しく参照しています。「私たちは、2つのモデルを同時に訓練する敵対的プロセスを介して生成モデルを推定するための新しいフレームワークを提案します...」

  • 生成モデル、G
  • 判別モデル、D

これらの2つのモデルは、一方が他方に対して否定的なフィードバックを提供するように制御されるため、敵対という用語が使用されます。

  • Gは、Dをだますのに十分な数の例のデータ分布をキャプチャするように訓練されています。
  • Dは、その入力がGのモックなのか、GANシステムの例のセットなのかを発見するように訓練されています。

(GANシステムのサンプルセットは、実際のサンプルと呼ばれることもありますが、生成されたサンプルよりもリアルではない場合があります。両方ともコンピューターの数値配列です。起源。外部のものが、ある物理的なシーンに向けられたカメラからのものであるかどうかは、GAN操作とは関係ありません。)

確率的には、Dをだますことは、Dがカテゴリーを修正するのと同じ数の偽陽性と偽陰性をそれぞれ50%生成する確率を最大化することと同義です。情報科学では、これは、tが無限に近づくにつれてGの情報Dの限界が0に近づくということです。これは、Dの観点からGのエントロピーを最大化するプロセスであり、したがってクロスエントロピーという用語です。

収束の達成方法

問題のSietaの2017年の執筆から再現された損失関数はDであり、特定のトレーニング状態のポイントの完全なセットに適用されたときに2つの分布間のクロスエントロピー(または相関)を最小化するように設計されています。

Hバツ1y1D=1Dバツ1

Gには独立した損失関数があり、クロスエントロピーを最大化するように設計されています。システムには2つのレベルのトレーニング粒度があることに注意してください。

  • 二人用ゲームでのゲームの動き
  • トレーニングサンプルの

これらは、次のように外側の反復でネストされた反復を生成します。

  • Gのトレーニングは、Gの損失関数を使用して進みます。
  • モック入力パターンは、トレーニングの現在の状態でGから生成されます。
  • Dのトレーニングは、Dの損失関数を使用して進みます。
  • クロスエントロピーがまだ十分に最大化されていない場合、繰り返しますが、Dはまだ判別できます。

Dが最終的に負けたとき、目標を達成しました。

  • Gはトレーニングデータの分布を回復しました
  • Dは無効になりました(「どこでも確率1/2」)

同時トレーニングが必要な理由

2つのモデルが並行性をシミュレートするために前後に訓練されていない場合、2014年の論文で主張されている独自のソリューションでは、敵対面での収束(外側の反復)は発生しません。

詳しくは

質問を超えて、シータの論文の次の関心事は、「発電機の損失関数の不十分な設計」は、降下を導き、飽和とも呼ばれるものを生成するのに不十分な勾配値につながる可能性があるということです。飽和は、単純に逆伝播の下降を浮動小数点の丸めから生じるカオスノイズに導くフィードバック信号の減少です。この用語は、信号理論に由来します。

Goodfellow et al。(ベテランの研究者)による2014年の論文を調べて、2017ページではなくGANテクノロジーについて学ぶことをお勧めします。


3

最初から始めましょう。GANは、私たちが提供するデータに似たデータの作成を学習できるモデルです。

GAN以外の生成モデルをトレーニングする場合、考えられる最も簡単な損失関数はおそらく平均二乗誤差(MSE)です。

例を挙げてください(Trickot L 2017):

ここで、猫を生成するとします。写真の中の特定の猫のモデル例を与えることができます。損失関数の選択は、モデルが罰せられるのを避けるために、各猫を正確に再現する必要があることを意味します。

しかし、それは必ずしも私たちが望むものではありません!モデルに猫を生成させたいだけで、猫はそれがもっともらしい猫である限り実行します。そのため、損失関数を変更する必要があります。

しかし、どの機能が具体的なピクセルを無視し、写真内の猫の検出に焦点を合わせることができますか?

それはニューラルネットワークです。これは、GANにおける弁別者の役割です。ディスクリミネーターの仕事は、画像がどれだけもっともらしいかを評価することです。

あなたが引用した論文、Generative Adversarial Networksの理解(Daniel S 2017)には、2つの主要な洞察がリストされています。

主な洞察1:弁別器の損失関数は、クロスエントロピー損失関数です。

主な洞察2:勾配の飽和がトレーニングに悪影響を与える可能性があるかどうかを理解する。勾配が小さすぎて(つまりゼロ)学習を実行できない場合、勾配飽和は一般的な問題です。

あなたの質問に答えるために、2番目の主要な洞察についてさらに詳しく述べる必要があります。

GANのコンテキストでは、発電機の損失関数の設計が不十分なために勾配飽和が発生する可能性があるため、この「主要な洞察」は、発電機のさまざまな損失関数間のトレードオフを理解することに基づいています。

この論文で実装された設計は、非常に特殊な機能を使用することで損失関数の問題を解決します(2つのクラスを区別します)。これを行う最良の方法は、クロスエントロピーを使用することです(洞察1)。ブログ投稿にあるように:

クロスエントロピーは、学習器を加速し、分類器が正しい場合にのみ勾配飽和を回避するように部分的に設計されているため、大きな損失関数です。

ブログ投稿のコメントで明らかにしたように:

[クロスエントロピー関数で]期待値は合計から得られます。離散確率変数の期待値の定義を見ると、確率変数によって異なる可能性のある値を合計し、それぞれの確率を重み付けする必要があることがわかります。ここでは、確率はそれぞれわずか1/2であり、ジェネレータまたはディスクリミネーターからのものとして扱うことができます。


この質問では、ANNの損失関数として最も簡単に使用できるものは問われませんでした。数学の詳細は@tryingtolearnには不明確であり、明確化を提供せずに大学院生を引用することは明確ではありません。
-FauChristian

1

あなたは、の組み合わせで扱うことができz、入力をし、x入力の単一のサンプルとして、弁別器がこれらのそれぞれの分類をどれだけうまく実行したかを評価します。

これが、後の投稿でシングルyE(p~data)とに分けている理由E(z)です。y弁別入力のそれぞれについて複数可)を、あなたは弁別が実行されてどれだけ評価するために、両方を同時に測定する必要があります。

そのため、損失関数は、実際の入力の正の分類と負の入力の負の分類の両方の組み合わせとして考えられます。

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