生成 AI シリーズ - 敵対的生成モデル (GAN) とは何ですか?

1 GAN を一般に理解するにはどうすればよいですか?

2014 年に Ian Goodfellow によって敵対的生成ネットワーク (GAN、敵対的生成ネットワーク) が提案されて以来、研究の波が押し寄せています。GANはジェネレータとディスクリミネータで構成されており、ジェネレータはサンプルの生成を担当し、ディスクリミネータはジェネレータが生成したサンプルが真であるかどうかを判定します。生成器は、識別器を可能な限り混乱させるべきであり、識別器は、生成器によって生成されたサンプルを実際のサンプルから可能な限り区別する必要がある。

GAN の原作 [1] では、著者は生成者を偽紙幣を印刷する犯罪者に、識別者を警察官に例えています。犯罪者は紙幣を本物に見せかけることに懸命に取り組んでおり、警察は偽紙幣を見分ける能力を向上させている。二人は競い合い、時間が経つにつれてどんどん強くなっていきます。次に、画像生成タスクと同様に、ジェネレーターは可能な限り現実的な偽の画像を継続的に生成します。識別器は画像が実際の画像であるか生成された画像であるかを判断し、ゲームを通じて両者は継続的に最適化されます。最終ジェネレーターによって生成された画像では、識別器が本物と偽物を区別することは完全に不可能になります。

2 GANの形式表現

上記の例は GAN の概念の簡単な紹介にすぎませんが、以下は GAN の正式かつより具体的な定義です。通常、ジェネレーターであってもディスクリミネーターであっても、ニューラルネットワークを使用して実装できます。次に、普及した定義を次のモデルで表現できます。

ここに画像の説明を挿入

上のモデルの左側はジェネレータ G で、その入力はzzですz、オリジナルの GAN の場合、zzzは、ガウス分布からランダムにサンプリングされたノイズです。ノイズズズ_z は、ジェネレーターを通じて生成された偽のサンプルを取得します。

生成された偽サンプルと本物のサンプルはまとめられ、ランダムに選択されて識別器 D に送信され、識別器 D は入力されたサンプルが生成された偽サンプルか本物のサンプルかを区別します。全体のプロセスは単純明快であり、生成対立ネットワークにおける「生成対立」は主に生成者と識別者の間の対立に反映されます。

3 GAN の目的関数は何ですか?

上記のニューラル ネットワーク モデルのパラメータを学習したい場合は、まず目的関数が必要です。GAN の目的関数は次のように定義されます。

min ⁡ G max ⁡ DV ( D , G ) = E x 〜 pdata ( x ) [ log ⁡ D ( x ) ] + E z 〜 pz ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) = {\rm E}_{x\sim{p_{data}(x)}}[\log D(x) ] + {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]GDマックスV ( D G )=Ex pダタ_ _ _( x )[ログ_D ( x ) ]+Ez pz( z )[ログ( 1 _D ( G ( z ) ) ]
この目的関数は、次の 2 つの部分に分割して理解できます

パート 1: 弁別器の最適化はmax を通過します ⁡ DV ( D , G ) \mathop {\max}\limits_D V(D,G)DマックスV ( D G )を達成するには、V ( D , G ) V(D,G)V ( D G )は識別器の目的関数であり、その最初の項目E x 〜 pdata ( x ) [ log ⁡ D ( x ) ] {\rm E}_{x\sim{p_{data}(x)}}[\ログD(x)]Ex pダタ_ _ _( x )[ログ_D ( x ) ] は、識別器が実際のデータ分布からサンプルを実際のサンプルとして判断する確率の数学的期待値を表します。実際のデータ分布でサンプリングされたサンプルの場合、陽性サンプルとして予測される確率は、当然ながら可能な限り 1 に近づきます。したがって、この項を最大化することが望ましい。第 2 項E z 〜 pz ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] {\rm E}_{z\sim{p_z}(z)}[\log (1 - D( G(z)))]Ez pz( z )[ログ( 1 _D ( G ( z ) ) ]の意味: スレーブノイズP z ( z ) P_z(z)Pz( z )分布内でサンプリングされたサンプルはジェネレーターによって生成され、その後ディスクリミネーターに送信されます。予測確率の負の対数の期待値は、値が大きいほど良いことです。値が大きいほど、より近いものになります。 0 の場合、識別子が優れていることを意味します。

パート II: min ⁡ G ( max ⁡ DV ( D , G ) ) \mathop {\min }\limits_G({\mathop {\max }\limits_D V(D,G)}) によるジェネレーターの最適化G(DマックスV ( D G ) )を達成します。ジェネレータの目標はmin ではないことに注意してください ⁡ GV ( D , G ) \mathop {\min }\limits_GV(D,G)GV ( D G )、つまり、ジェネレーターは識別器の目的関数を最小化しませんが、2 番目の目的は、識別器の目的関数の最大値を最小化することです。識別器の目的関数の最大値は、間の JS 発散を表します。実際のデータ分布と生成されたデータ分布 (詳細は付録の導出を参照してください)、JS の発散は分布の類似性を測定でき、2 つの分布が近ければ近いほど、JS の発散は小さくなります。

4 GAN の目的関数とクロスエントロピーの違いは何ですか?

離散形式で記述された識別器目的関数は次のとおりです:
V ( D , G ) = − 1 m ∑ i = 1 i = mlog D ( xi ) − 1 m ∑ i = 1 i = mlog ( 1 − D ( x ~ i ) ) V(D,G)=-\frac{1}{m}\sum_{i=1}^{i=m}logD(x^i)-\frac{1}{m}\sum_{i =1}^{i=m}log(1-D(\チルダ{x}^i))V ( D G )=メートル1i = 1=メートルl o g D ( xメートル1i = 1=メートルl o g ( 1D (バツ

この目的関数はクロスエントロピーと一致していることがわかります。つまり、ディスクリミネーターの目標はクロスエントロピー損失を最小限に抑えることであり、ジェネレーターの目標は、生成されたデータ分布とデータ間の JS の発散を最小限に抑えることです。実際のデータ分布


[1]: グッドフェロー、イアンら。「生成的な敵対的ネット」。神経情報処理システムの進歩。2014年。

5 なぜ GAN の損失が減らないのですか?

GAN の初心者の多くは、実際に GAN の損失がなぜ減少しないのか不思議に思うかもしれません。GAN が収束するのはいつですか? 実際、よく訓練された GAN として、その損失を減らすことはできません。GAN が適切に訓練されているかどうかを測定するには、人間の目は、生成された画像の品質が良いかどうかだけを確認できます。しかし、収束性の良い評価指標が存在しないという問題については、多くの学者が研究を行っており、後述するWGANでは、収束性の判断が難しいという問題をより良く解決する新たな損失設計法を提案しています。なぜGANの損失が下がらないのか分析してみましょう?
弁別器の場合、GAN の損失は次のとおりです:
min ⁡ G max ⁡ DV ( D , G ) = E x 〜 pdata ( x ) [ log ⁡ D ( x ) ] + E z 〜 pz ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) = {\rm E}_{x\sim{p_{data } (x)}}[\log D(x)] + {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]GDマックスV ( D G )=Ex pダタ_ _ _( x )[ログ_D ( x ) ]+Ez pz( z )[ログ( 1 _D ( G ( z ) ) ]
min ⁡ G max ⁡ DV ( D , G ) \mathop { \ min }\limits_G \mathop {\max }\limits_D V(D,G)GDマックスV ( D G )ジェネレーターとディスクリミネーターの目的は逆であることがわかります。つまり、2 つのジェネレーター ネットワークとディスクリミネーター ネットワークは互いに対立し、一方が衰退し、他方が成長するということです。損失が収束状態にまで低下することは不可能です。

  • ジェネレーターの場合、その損失は急速に低下し、ディスクリミネーターが弱すぎる可能性があり、ジェネレーターがディスクリミネーターを簡単に「騙す」ことになります。
  • 弁別器の場合、損失は急速に低下します。これは、弁別器が非常に強力であることを意味します。また、強い弁別器は、ジェネレータによって生成された画像が十分に現実的ではないことを意味し、そのため弁別器が区別しやすくなり、結果として急速な損失が発生します。喪失の。

つまり、ディスクリミネーターかジェネレーターかということです。損失のレベルは発電機の品質を表すものではありません。優れた GAN ネットワークの場合、GAN 損失は変動することがよくあります。

これを見ると少し絶望的かもしれませんが、モデルが収束しているかどうかを判断するには、生成された画像の品質を見るしかないようです。実際、後で説明する WGAN は、モデルが何らかの方法で収束しているかどうかを判断できる新しい損失測定方法を提案しています。

6 生成モデルと識別モデルの違いは何ですか?

機械学習モデルの場合、モデルがデータをモデル化する方法に応じて、モデルを生成モデルと判別モデルの 2 つのカテゴリに分類できます。猫と犬の分類モデル、つまり識別モデルをトレーニングしたい場合、必要なのは 2 つの違いを学習することだけです。たとえば、猫は犬よりも小さいです。生成モデルは異なり、猫がどのように見えるか、犬がどのように見えるかを学習する必要があります。両者の外見を持った後は、その外観に応じて区別します。特に:

  • 生成モデル: データから同時確率分布 P(X,Y) を学習し、次のように P(Y|X)=P(X,Y)/P(X) から確率分布 P(Y|X) を取得します。予測モデル。このメソッドは、指定された入力 X と出力 Y の間の生成関係を表します。

  • 判別モデル:データから決定関数Y=f(X)や条件付き確率分布P(Y|X)を予測モデルとして直接学習するもの、すなわち判別モデル。識別手法は、特定の入力 X に対してどのような出力 Y を予測するかに関係します。

上記の 2 つのモデルについては、テキストからはあまり直感的に理解できないように思えます。性別分類問題の実行にさまざまなモデルが使用されることを示す例を見てみましょう。

1) 生成モデルを使用する場合: 入力された人物の特徴 X と性別 Y の関係を学習するモデルをトレーニングできます。たとえば、次のようなデータのバッチがあります。

Y(性別) 0 1
X(機能) 0 1/4 3/4
1 3/4 1/4

このデータは統計的に取得できます。つまり、統計上の人物の特徴が X=0,1... の場合、そのカテゴリの確率は Y=0,1 になります。上記の結合確率分布 P(X, Y) が統計的に得られた後、モデルを学習できます。たとえば、2 次元ガウス分布を上記のデータに当てはめることで、X と Y の結合分布を学習できます。予測する際、入力特徴 X を与えてそのカテゴリを予測したい場合は、ベイズの公式を使用して条件付き確率分布を取得して推論する必要があります。 P ( Y ∣ X ) = P ( X , Y ) P ( X )
= P ( X , Y ) P ( X ∣ Y ) P ( Y ) P(Y|X)={\frac{P(X,Y)}{P(X)}}={\frac{P(X, Y)}{P(X|Y)P(Y)}}P ( Y X )=P ( X )P ( X ,=P ( X Y ) P ( Y )P ( X ,
2) 識別モデルを使用する場合: モデルをトレーニングし、人間の顔の特徴、服装スタイル、髪型などを含む人間の特徴 X を入力できます。出力は性別を判断する確率です。この確率は分布に従い、分布には男性または女性の 2 つの値のみが含まれます。この分布を Y として記録します。この処理では、条件付き確率分布 P(Y|X)、つまり入力特徴量 X の分布が既知の場合の Y の確率分布を学習します。

上記の分析から明らかにそれがわかります。生成モデルは X と Y の同時分布を学習するために多くのデータを必要とすることが多いのに対し、識別モデルは比較的少量のデータしか必要としないため、識別モデルの方がはるかに便利であるように見えます。入力機能。ただし、生成式は結合分布を生成するためにより多くのデータを使用するため、自然により多くの情報を提供できます。サンプル (X, Y) があり、その結合確率 P (X, Y) は非常に小さく計算されます。このサンプルは異常サンプルであると考えられます。このモデルは外れ値の検出に使用できます。

7 モードの折りたたみとは何ですか?

特定のモードでは、多数の繰り返しサンプルが表示されます。次に例を示します。
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-z57fvObO-1692278058668)(img/ch7/model_colpsing.png)]

上図の左側にある青い五芒星は実際のサンプル空間を表し、黄色の五芒星が生成されます。生成されたサンプルには多様性がなく、重複が多くあります。たとえば、上の図の右側では、赤枠内の文字が繰り返し表示されます。

8 モードの崩壊を解決するにはどうすればよいですか?

方法 1:目的関数の改良された方法

上記の maxmin の最適化によるモードジャンプの問題を回避するために、UnrolledGAN はジェネレーターの損失を変更することで問題を解決します。具体的には、UnrolledGAN はジェネレーターを更新するときにジェネレーターを k 回更新し、参照される Loss は特定の時間の損失ではなく、ディスクリミネーター後の k 回の反復の損失です。ディスクリミネーターの次の k 回の反復では、それ自体のパラメーターは更新されず、ジェネレーターを更新するための損失のみが計算されることに注意してください。この方法により、ジェネレーターは後続の k 個の識別子の変更を考慮できるようになり、異なるモード間の切り替えによって引き起こされるモード崩壊の問題を回避できます。ここでは、ジェネレーターを k 回反復し、次にディスクリミネーターを 1 回反復することと区別する必要があります [8]。DRAGAN はゲーム理論に no-regret アルゴリズムを導入し、その損失を変換してモード崩壊問題を解決します [9]。前述のEBGANはVAEの再構成誤差を加えてモード崩壊を解決するものである。

方法 2:ネットワーク構造の改善された方法

マルチエージェント ダイバーシティ GAN (MAD-GAN) は、複数のジェネレーターとディスクリミネーターを使用して、サンプル生成の多様性を確保します。具体的な構造は次のとおりです。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-SaXLAwZa-1692278058669)(img/ch7/MAD_GAN.png)]

通常のGANに比べてジェネレータの数が数個多く、損失設計時に正規項が追加されます。正則化項は、コサイン距離を使用して 3 つのジェネレータによって生成されたサンプルの一貫性にペナルティを与えます。

MRGAN は、サンプル生成時のモード崩壊問題を罰するための弁別器を追加します。具体的な構造は次のとおりです。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-TA9538AG-1692278058670)(img/ch7/MRGAN.png)]

入力サンプルxxxはエンコーダーによってE ( x ) E(x)E ( x )、そして隠れた変数はジェネレーターによって再構築されます。トレーニング中に、3 つの損失が発生します。DM DMDMRRR (再構成誤差) は、本物に似たサンプルの生成をガイドするために使用されます。そしてDD D_DDD次にE ( x ) E(x)についてE(x) z z zで生成されたサンプルを判別しますが、明らかに両方で生成されたサンプルは偽物のサンプルであるため、この識別器は主に生成されたサンプルが多様であるかどうか、つまりモード崩壊があるかどうかを判断するために使用されます。

方法 3:ミニバッチ識別

ミニバッチ識別では、識別器の中間層にミニバッチ層を設け、L1距離に基づいてサンプル統計量を計算し、この統計量を確立することで、バッチ内の特定のサンプルが他のサンプルにどの程度近いかを認識します。この情報は、多様性の欠如したサンプルを識別するために弁別器で使用できます。ジェネレーターの場合は、多様性のあるサンプルを生成するようにしてください。

おすすめ

転載: blog.csdn.net/qq_43456016/article/details/132351102