Advanced Deep Learning [8]: ニューラル ネットワークに対する GAN の基本概念の紹介、ナッシュ均衡、ジェネレーター ディスクリミネーター、デコーダー エンコーダーの詳細な説明と GAN アプリケーション シナリオ

ここに画像の説明を挿入
活性化関数、最適化戦略、損失関数、モデルチューニング、正規化アルゴリズム、畳み込みモデル、シーケンスモデル、事前学習モデル、敵対的ニューラルネットワークなどを含む【高度なディープラーニング入門】必見シリーズ。

ここに画像の説明を挿入
活性化関数、最適化戦略、損失関数、モデルチューニング、正規化アルゴリズム、畳み込みモデル、シーケンスモデル、事前学習モデル、敵対的ニューラルネットワークなどをコラムで詳しく紹介する【高度なディープラーニング入門】必見シリーズ

このコラムは主に初心者が関連知識を素早く理解できるようにすることを目的としています。フォローアップでは、誰もがプロジェクトを実践しながら知識を確保し、それが何であるか、なぜそうなるのか、なぜそうなるのかを知ることができるように、ディープラーニングに含まれる知識原則の分析を継続していきます。

免責事項: 一部のプロジェクトは誰もがすぐに学べるオンラインの古典的なプロジェクトであり、実用的なリンク (コンテスト、論文、実践的なアプリケーションなど) が将来追加される予定です。

コラムの購読:ディープラーニングの高度なコラムの紹介

ニューラル ネットワークに対する GAN の基本概念の紹介: 敵対的生成ネットワーク

1. ゲーム理論

ゲーム理論は、2 人以上の合理的なエージェントまたはプレイヤー間の相互作用のモデルとして考えることができます。

合理的がキーワードなのは、ゲーム理論の基礎だからです。合理性とは、他のすべてのエージェントが自分と同じくらい合理的であり、同じレベルの理解と知識を持っていることを各エージェントが知っているという理解と単純に呼ぶことができます一方、合理性とは、エージェントが他のエージェントの行動を考慮して常により高い報酬/報酬を好むという事実を指します。

合理的であることが何を意味するのかがわかったところで、ゲーム理論に関連する他のキーワードを見てみましょう。

  • ゲーム: 一般に、ゲームは一連のプレイヤー、アクション/戦略、および最終的な利益で構成されます。例: オークション、チェス、政治など。

  • プレイヤー: プレイヤーはあらゆるゲームに参加する合理的な存在です。例:オークションの入札者、じゃんけんプレイヤー、選挙に参加する政治家など。

  • ペイオフ: ペイオフは、すべてのプレイヤーが特定の結果を達成したときに受け取る報酬です。ポジティブにもネガティブにもなり得ます。前に説明したように、各エージェントは利己的であり、利益を最大化したいと考えています。

2. ナッシュ均衡

ナッシュ均衡 (またはナッシュ均衡)、非協力ゲーム均衡としても知られるナッシュ均衡は、人工知能ゲーム理論手法の「基礎」です。

いわゆるナッシュ均衡とは、参加者の戦略の組み合わせを指しますが、この戦略では、どの参加者も戦略を変更するだけでは利益を得られません。つまり、全員の戦略が他の人の戦略に対する最適な反応となります言い換えれば、誰も戦略を変更しないときに誰も戦略を変更しない場合、戦略ポートフォリオはナッシュ均衡になります。

典型的な例は囚人のジレンマです。

**背景:** ある事件の 2 人の容疑者 A と B は警察官によって別々に取り調べられたため、A と B には共謀する機会はありませんでした。

**賞罰:** 警察官はAとBに対し、どちらも自白しなければそれぞれ懲役3年、両方とも自白すれば懲役5年、相手方は懲役10年と告げた。 。

**結果:** AとBはともに自白を選択し、それぞれ懲役5年が言い渡される これがこのときのナッシュ均衡である。

賞罰の記述から判断すると、自白しないことが最善の解決策であり、量刑は最も軽いものである。実際にはそうではなく、A と B は通信できないため、それぞれの利益の観点から次のようになります。

容疑者Aはこう考えた。

  • B が自白した場合、私が自白した場合、私は 5 年の刑を宣告されるだけで、私が自白しなかった場合は 10 年の刑を宣告されます。

  • Bが自白しなければ、私が自白すれば懲役1年、自白しなければ懲役3年となる。

つまり、Bが自白しようがしまいが、Aが自白する限り、それがAにとって最適な戦略となるのです。

このように、被疑者Bも同様の考えを持ち、全員が自分の合理性に従って自白を選択するこの状況をナッシュ均衡点と呼ぶ。

3. GAN ジェネレーターの入力にノイズが入るのはなぜですか

GAN ジェネレーター Generator の入力はランダム ノイズであり、目的は毎回異なる画像を生成することです。しかし、完全にランダムの場合、生成された画像がどのような特徴を持つかが分からず、結果を制御できなくなるため、通常は事前のランダム分布からノイズが生成されます。一般的に使用されるランダム分布:

  • ガウス分布: 連続変数間で最も広く使用されている確率分布。

  • 一様分布: 連続変数 x の単純な分布。

ランダム ノイズの導入により、生成される画像が多様になります。たとえば、次の図のノイズ z が異なると、異なる数値が生成される可能性があります。

4. 発電機

ジェネレーター G は、多層パーセプトロン、畳み込みネットワーク、オートエンコーダーなどを使用できる、画像を生成するためのネットワークです。ランダムなノイズ z を受け取り、G(z) として示されるこのノイズを通じて画像を生成します。以下の図のモデル構造を通じて、ジェネレーターがどのようにノイズから画像を生成するかを段階的に説明します。

1) 入力: 100 次元ベクトル。

2) 2 つの完全に接続された層 Fc1 および Fc2 と 1 つのサイズ変更の後、ノイズ ベクトルが増幅されて 7*7 サイズの 128 個の特徴マップが取得されます。

3)アップサンプリングを実行して特徴マップを拡張し、14×14サイズの128個の特徴マップを取得する。

4)最初の畳み込みConv1の後、14×14の64個の特徴マップが得られる。

5)アップサンプリングを実行して特徴マップを拡張し、28×28サイズの64個の特徴マップを取得する。

6) 2 回目の畳み込み Conv2 の後、入力ノイズ Z は 1 28 28の単一チャネル画像出力に徐々に変換され、生成された手書き数字が取得されます。

ヒント: 全結合層の機能: 次元変換、高次元化、ノイズ ベクトルの増幅に便利です。全結合層の計算は若干大きくなるため、その後の改良版 GAN では全結合層が削除されています。

ヒント: 最後の層の活性化関数は通常、tanh() を使用します。これは活性化と正規化の両方として機能し、ジェネレーターの出力を弁別器の入力として [-1,1] に正規化します。また、GAN のトレーニングがより安定し、収束速度が速くなり、生成品質が確かに高くなります。

5. ディスクリミネーター ディスクリミネーター

識別器 D の入力は実画像と生成器によって生成された画像であり、その目的は、生成された画像と実画像を可能な限り区別することです。これは二値分類問題に属しており、次の図のモデル構造を通じて、識別器が真の画像と偽の画像をどのように区別するかを説明します。

  • 入力: 28*28 ピクセルのサイズの単一チャネル画像 (固定値ではなく、実際の状況に応じて変更できます)。

  • 出力: バイナリ分類、サンプルは true または false。

1) 入力: 28 28の 1 ピクセル画像。

2)最初の畳み込みconv1の後、26×26の64個の特徴マップが取得され、次に最大プーリングpool1が実行されて13×13の64個の特徴マップが取得される。

3)2回目の畳み込みconv2の後、11 11の128個の特徴マップが取得され、次に最大プーリングpool2が実行されて5 5の128個の特徴マップが取得される。

4) サイズ変更を通じて多次元入力を次元化します。

5) 2 つの完全に接続された層 fc1 および fc2 の後、元の画像のベクトル表現が取得されます。

6) 最後に、シグモイド活性化関数を通じて、識別確率、つまり、画像が本物か偽物かの二値分類結果が出力されます。

6. GAN損失関数

トレーニング プロセス中、ジェネレーター G (ジェネレーター) の目標は、ディスクリミネーター D (ディスクリミネーター) を欺くために、実際の画像をできるだけ多く生成することです。D の目標は、G によって生成された画像を実際の画像から可能な限り区別することです。このように、GとDは動的な「ゲームプロセス」を構成します。

決勝戦の結果はどうなるのか?最も理想的な状態では、G は「本物を隠す」のに十分な画像 G(z) を生成できます。D の場合、G によって生成された画像が本物であるかどうかを判断するのは難しいため、D(G(z)) = 0.5 となります。

式は次のとおりです。

min G max DV ( D , G ) = E x 〜 pdata ( x ) [ log ⁡ D ( x ) ] + E z 〜 pz ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] (1 ) \begin{equation} \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D,G) = Ε_{x\sim p_{data}(x)} \left[\ log D\left(x\right)\right]+Ε_{z\sim p_{z}(z)}\left[\log \left(1 - D\left(G\left(z\right)\right )\right)\right]\end{式} \tag{1}GDマックス_V ( D G )=Ex pダタ_ _ _( x )[ログ_D( × ) ]+Ez pz( z )[ログ_( 1D( G( z ) ) )]( 1 )

式の左辺の V(D,G) は生成画像と実際の画像の差を表し、二値分類 (真と偽のカテゴリ) のクロスエントロピー損失関数が使用されます。minG と maxD の 2 つの部分が含まれます。

最大 DV ( D , G ) \mathop{max}\limits_{D}V(D,G)Dマックス_V ( D G )は、固定ジェネレータ G が識別器 D をトレーニングし、識別器 D のパラメータがクロスエントロピー損失 V(D,G) を最大化することによって更新されることを意味します。D のトレーニング目標は、実際の画像 x と生成された画像 G(z) を正確に区別することです。D の識別能力が強いほど、D(x) は大きくなり、右側の最初の項目も大きくなります。 D(G(x)) が小さいほど、右側の 2 番目の項が大きくなります。このとき、V(D,G)が大きくなるので、Dの最大値(maxD)を求める計算式になります。

最小 G 最大 DV ( D , G ) \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D,G)GDマックス_V ( D G )は、固定弁別器 D が生成器 G をトレーニングし、弁別器が真の画像と偽の画像のクロスエントロピー損失 V(D,G) を最大化するときに生成器がクロスエントロピー損失を最小化する必要があることを意味します。現時点では、右側の 2 番目の項目のみが役に立ちます。G は、自分が生成する画像が「本物に近いほど良い」ものであり、識別器を欺くことができることを望んでいます。つまり、D(G(z)) が同じくらい大きいということです。このとき、V(D,G)は小さくなります。したがって、式は G の最小値 (min_G) になります。

  • x 〜 pdata ( x ) x\sim p_{data}(x)バツpダタ_ _ _( x ) : 実像を表します。

  • z 〜 pz ( z ) z\sim p_{z}(z)zpz( z ) : ガウス分布のサンプル、つまりノイズを表します。

  • D(x)はxが本物の画像である確率を表し、1であれば100%が本物の画像であることを意味し、出力が0であれば本物の画像ではないことを意味する。

方程式の右側は、実際には方程式の左側にあるクロス商の損失公式を拡張し、それを確率分布の期待される形式に書き込むことです。詳細な導出については、元の論文「Generative Adversarial Nets」を参照してください。

7. モデルのトレーニング

GAN にはジェネレーター G とディスクリミネーター D の 2 つのネットワークが含まれています。では、2 つのネットワークをどのようにトレーニングすればよいでしょうか?

トレーニング中、最初に弁別器 D が本物の画像に本物のラベル 1 を付け、ジェネレータ G によって生成された偽の画像に偽のラベル 0 を付けるようにトレーニングされ、一緒にバッチを形成して弁別器 D に送信して弁別器をトレーニングします。 。損失を計算する際、入力された本物の画像に対する識別器の判定は真である傾向があり、生成された偽画像の判定は偽である傾向があります。この処理では、識別器のパラメータのみが更新され、生成器のパラメータは更新されない。

次に、ガウス分布のノイズ z をジェネレーター G に送信するようにジェネレーター G を学習させ、生成された偽の画像に本物のラベル 1 を付けて識別器 D に送信します。損失を計算するとき、生成された偽画像に対する識別器の識別は真になる傾向があります。この処理では生成器のパラメータのみが更新され、識別器のパラメータは更新されない。

注: トレーニングの初期段階で G の生成が不十分な場合、生成されたサンプルはトレーニング データと大幅に異なるため、D は生成されたサンプルを高い信頼度で拒否します。したがって、log(1-D(G(z))) は飽和します (つまり、一定で勾配が 0 になります)。したがって、G をトレーニングするために log(1−D(G(z))) を最小化する代わりに logD(G(z)) を最大化することを選択し、それを宣伝 (1) の右側の 2 番目の項目と比較します。

8 モデルのトレーニングが不安定です

GAN トレーニングが不安定になる理由は次のとおりです。

  • 収束しない: 2 つのモデル G と D を同時に収束させるのは困難です。

  • パターン崩壊: ジェネレーター G は単一または有限のパターンを生成します。

  • スロートレーニング: ジェネレーター G の勾配が消滅します。

GAN をトレーニングする場合、次のトレーニング手法を採用できます。

1) ジェネレーターの最後の層の活性化関数は Tanh() を使用し、出力は [-1, 1] に正規化されます。

2) 実画像も [-1,1] に正規化されます。

3) 学習率を大きく設定しすぎないでください。最初の 1e-4 を基準として使用し、トレーニングが進むにつれて学習率を継続的に下げることができます。

4) オプティマイザは Adam を選択しようとします。SGD は最小値を見つける問題を解決しますが、GAN はゲームの問題であり、SGD を使用すると発振しやすいためです。

5) スパース勾配の可能性を減らすために、ReLU と MaxPool の使用を避けてください。Leak Re LU アクティベーション関数を使用できます。ダウンサンプリングは、Average Pooling または Convolution + stride に置き換えることができます。アップサンプリングには PixelShuffle、ConvTranspose2d + stride を使用できます。

6) ノイズの追加: 実際の画像と生成された画像にノイズを追加すると、弁別器トレーニングの難易度が上がり、安定性の向上に役立ちます。

7) ラベル付きデータがある場合は、ラベル情報をトレーニングに使用してみます。

8) ラベルの平滑化: 実画像のラベルが 1 に設定されている場合、識別子がその分類に自信を持ちすぎることを避けるために、ラベルを 0.9 などの低い値に変更します。

9. エンコーダー エンコーダー

Encoder の目的は、入力シーケンスを低次元のベクトル表現または埋め込みにエンコードすることです。マッピング関数は次のとおりです。

V → R d (1) \begin{equation}V\to R^{d}\end{equation} \tag{1}VRd( 1 )

入力 V は、埋め込みzi ∈ R d z_i\in R^{d}にマッピングされます。z私はRd、以下の図に示すように:

エンコーダは一般に畳み込みニューラル ネットワークであり、主に畳み込み層、プーリング層、BatchNormalization 層で構成されます。畳み込み層は画像の局所的な特徴を取得する役割を果たし、プーリング層は画像をダウンサンプリングしてスケール不変の特徴を次の層に転送します。BN は主に学習を加速するためにトレーニング画像の分布を正規化します。(エンコーダネットワークの構造は畳み込みニューラルネットワークに限定されません)

顔のエンコーディングを例にとると、エンコーダは顔画像を短いベクトルに圧縮するため、短いベクトルには顔画像の主な情報が含まれます。たとえば、ベクトルの要素は顔の肌の色、眉毛の位置、目の大きさなど。エンコーダーはさまざまな顔を学習してから、顔の共通性を学習できます。

10. デコーダー デコーダー

Decoder の目的は、Encoder による埋め込み出力を使用して、グラフに関する構造情報をデコードすることです。

入力はノード ペアの埋め込みであり、出力はノード内の 2 つのノードの類似性を測定する実数です。マッピング関係は次のとおりです。

R d ∗ R d → R + 。(1) \begin{equation}R^{d} * R^{d}\to R^{+}\end{equation}。\タグ{1}RdRdR+( 1 )

デコーダは、縮小された特徴画像ベクトルをアップサンプリングし、アップサンプリングされた画像に対して畳み込み処理を実行します。目的は、オブジェクトのジオメトリを改善し、エンコーダのプーリング層によるオブジェクトの縮小によって引き起こされる詳細の損失を補償することです。 。

顔のエンコードとデコードを例にとると、次の図に示すように、エンコーダが顔をエンコードした後、デコーダを使用して顔の特徴を学習します。つまり、短いベクトルが顔画像に復元されます。

11. GAN アプリケーション

GAN の興味深いアプリケーションをいくつか見てみましょう。

  • 画像生成

    画像生成は生成モデルの基本的な問題ですが、GANは従来の生成モデルよりも高画質な画像を生成できます。リアルな顔画像の生成など

  • 超解像度

    画像を拡大すると、画像がぼやけてしまいます。GAN を使用して 32*32 の画像を 64*64 の実画像に拡張し、画像を拡大しながら画像の解像度を高めます。

  • 画像修復

    不完全な画像を完成させ、タトゥー、テレビのロゴ、透かしなどを削除することもできます。

  • 画像から画像への変換

    1 つの画像に基づいて、異なるスタイルの別の画像を生成します。たとえば、馬はゼブラ マップになり、航空地図は地図になります。

  • 風景のアニメーション

    風景画像をアニメーション効果に変換する

  • コミックフェイス

    漫画風の顔画像を生成する

  • 画像の着色

    白黒画像のカラー化

  • テキストから画像へ

    テキストの説明に基づいて対応する画像を生成する

GAN のアプリケーションは上記以外にも広く使用されています。

おすすめ

転載: blog.csdn.net/sinat_39620217/article/details/130982812