【ディープラーニング】敵対的生成ネットワーク(GAN)を徹底解説!

【ディープラーニング】敵対的生成ネットワーク(GAN)を徹底解説!

1. 概要

敵対的生成ネットワーク (GAN) は、コンピューターを通じてデータを生成するために使用される教師なしのディープラーニング モデルです。2014 年に Ian J. Goodfellow らによって提案されました。このモデルは、フレームワーク内の (少なくとも) 2 つのモジュール (生成モデルと識別モデル) の相互ゲーム学習を通じて、かなり優れた出力を生成します。生成的敵対ネットワークは、現在最も有望でアクティブなモデルの 1 つと考えられています。現在、サンプル データ生成、画像生成、画像復元、画像変換、テキスト生成などの分野で主に使用されています。

GAN の新しい技術は、生成の面で人工知能の分野に新たな進歩をもたらしました。その後、GANはディープラーニングの分野で研究のホットスポットとなり、近年ではGANに関連する論文数も急増しており、現在も増加傾向にあります。

GAN論文数の増加の模式図


2018年、敵対的ニューラルネットワークのアイデアは、MITテクノロジーレビューによって2018年の「10のブレークスルーテクノロジー」の1つに選ばれました。ヤン・ルカン氏(「ディープラーニングの三大巨頭」の一人、ニューヨーク大学教授、元フェイスブック主任人工知能科学者)は、敵対的生成ネットワークを「過去20年間のディープラーニング分野における最もクールなアイデア」と称賛し、中国でよく知られている百度の元主任科学者アンドリュー・ン氏も敵対的生成ネットワークを「ディープラーニング分野における非常に重要な進歩」とみなした。

2. GANの基本原理

1. 構成

GAN は、ジェネレーター (G) とディスクリミネーター (D) という 2 つの重要な部分で構成されています。

ジェネレーター: 可能な限り識別子を「欺く」ことを目的として、マシンを通じてデータを生成します。生成されたデータは G(z) として記録されます。

識別器: データが実際のデータか、「ジェネレータ」によって生成されたデータかを判別します。目的は、「ジェネレータ」によって作成された「偽のデータ」を可能な限り見つけ出すことです。入力パラメータは x で、x はデータを表します。出力 D(x) は、x が実際のデータである確率を表します。1 の場合は、100% 実際のデータであることを意味し、出力が 0 の場合は、実際のデータではないことを意味します。

このように、G と D は動的な対決(またはゲームプロセス)を構成します。トレーニング(対決)が進むにつれて、G によって生成されたデータは実際のデータにますます近づき、データを識別する D のレベルはますます高くなります。理想的な条件下では、G は十分に「実在する」データを生成できます。しかし、D の場合、ジェネレータによって生成されたデータが実在するかどうかを判断することは困難であるため、D(G(z)) = 0.5 となります。トレーニング後、現実的なデータを生成するために使用できる生成モデル G が得られます。

GAN図


2. トレーニングプロセス

ステージ 1: ディスクリミネーター D を修正し、ジェネレーター G をトレーニングします。 G は、優れた性能を持つ識別器を使用して、「偽のデータ」を継続的に生成し、それを D に渡して判断させます。最初は、G はまだ非常に弱いので、識別されやすいです。しかし、訓練が続くにつれて、G のスキルは向上し続け、ついには D を騙すことができました。このとき、D は基本的に「推測」の状態にあり、誤ったデータかどうかを判断できる確率は 50% です。

第 2 段階: 「ジェネレータ G」を修正し、「識別子 D」をトレーニングします。第一段階を過ぎると、G のトレーニングを継続する意味はありません。今回はGを修正し、Dのトレーニングを開始します。継続的なトレーニングを通じて、D は識別能力を向上させ、最終的には誤ったデータを正確に識別できるようになりました。

最初の段階と2番目の段階を繰り返します。継続的なサイクルを通じて、「ジェネレータ G」と「ディスクリミネーター D」の能力はますます強くなります。最後に、データを生成するために使用できる非常に効果的な「ジェネレータ G」が得られます。

3. GANの利点と欠点

1) 利点

データ分布をより適切にモデル化できます(より鮮明でクリアな画像)。

理論的には、GAN はあらゆる種類のジェネレーター ネットワークをトレーニングできます。他のフレームワークでは、出力層がガウス分布であるなど、ジェネレータ ネットワークに特定の関数形式が必要です。

マルコフ連鎖を使用して繰り返しサンプリングする必要はなく、学習プロセス中に推論を実行する必要はなく、複雑な変分下限はなく、厄介な確率の近似計算の困難さもありません。

2) デメリット

モデルは収束しにくく、不安定です。ジェネレータとディスクリミネータは適切に同期されている必要がありますが、実際のトレーニングでは、D が収束し、G が発散することはよくあります。 D/G トレーニングには慎重な設計が必要です。

モード崩壊の問題。 GAN の学習プロセスではパターン損失が発生する可能性があり、ジェネレーターが劣化し始め、常に同じサンプル ポイントが生成され、学習を継続できなくなります。

4. GANの応用

1) データセットを生成する

人工知能のトレーニングには大量のデータセットが必要ですが、GAN を通じて低コストのデータセットを自動的に生成できます。

2) 顔生成

3) アイテム生成

4) 画像変換

5) 画像の復元

3. GANの数学的原理

1. GANの数学的導出

生成モデルは、入力空間のデータを生成空間にマッピングします(つまり、関数の作用下で入力データを通じて出力データを生成します)。これは、式 x=G(z) の形式で記述できます。通常、入力 z は単純な形式のランダム分布(ガウス分布や一様分布など)を満たします。生成されたデータ分布を実際のデータ分布にできるだけ近づけるために、生成関数 G はニューラル ネットワークの形式になり、これを通じてまったく異なる分布タイプをシミュレートできます。

以下は生成的敵対ネットワークにおけるコスト関数です。識別器 D を例にとると、コスト関数は J(D)J^{(D)}J(D) と表され、形式は次のようになります。

ここでEは期待確率を表し、x∼Pdatax \sim P_{data}x∼PdataはxがPdataP_{data}Pdata分布を満たすことを意味します。

ジェネレーターは、識別器と密接に関連しています。この 2 つはゼロサム ゲームと見なすことができます。それらの合計コストはゼロである必要があるため、ジェネレーターのコスト関数は次の式を満たす必要があります。

J(G)=−J(D)J^{(G)} = -J^{(D)} J(G)=−J(D)

このようにして、J(G)J^{(G)}J(G)とJ(D)J^{(D)}J(D)を表す値関数Vを設定できます。

ここで、問題は、J(G)J^{(G)}J(G) と J(D)J^{(D)}J(D) が両方ともできるだけ小さくなるように、適切な V(θ(D), θ(G))V(θ^{(D)},θ^{(G)})V(θ(D), θ(G)) を見つけることに変更されました。つまり、識別器の場合、V(θ(D), θ(G))V(θ^{(D)},θ^{(G)})V(θ(D), θ(G)) が大きいほどよく、生成器の場合、V(θ(D), θ(G))V(θ^{(D)},θ^{(G)})V(θ(D), θ(G)) が小さいほどよく、この 2 つの間にゲーム関係が形成されます。

ゲーム理論では、両当事者が下した決定の組み合わせによってナッシュ均衡が形成され、その均衡ではゲーム内のどちらの当事者も自身の行動を通じて自身の利益を増やすことはできません。生成的敵対ネットワークでは、計算したいナッシュ均衡点は、それぞれのコスト関数を最小化するジェネレータ G と識別器 D を見つけることです。上記の導出から、ジェネレータにとって最小で識別器にとって最大の V(θ(D), θ(G))V(θ^{(D)}, θ^{(G)})V(θ(D), θ(G)) を見つけたいとも結論付けることができます。これは最大値と最小値を見つける問題として定義できます。式は次のとおりです。

最大値と最小値の概念を理解するには、グラフィカルな方法を使用できます。良い例は、下の図に示すように、一方向の関数の最大点と他の方向の関数の最小点である鞍点です。

上記の式に基づいて、理想的な識別器 D* と生成器 G* をそれぞれ見つけることができます。

次に、理想的な識別器を見つける方法を見てみましょう。上記の D* では、生成器 G が固定されていると仮定し、式で G(z)=x とします。導出は次のとおりです。

私たちの目標は、Vを最大化するDを見つけることです。積分f(x)=pdata(x)logD(x)+pg(x)log(1−D(x))f(x)=p_{data}(x)logD(x)+p_g(x)log(1-D(x))f(x)=pdata(x)logD(x)+pg(x)log(1−D(x))の項については、xがどのような値を取っても最大化できることを期待します。その中で、pdatap_datapdata は固定されていることがわかっており、ジェネレータ G も固定されていると仮定しているため、pgp_gpg も固定されており、f(x) を最大化する D を簡単に見つけることができます。 x は固定されており、D(x) に関する f(x) の導関数は 0 に等しいと仮定します。以下は D(x) を解くための導関数です。

これは 0 から 1 までの値であることがわかります。これは、私たちの識別器のパターンとも一致しています。理想的な識別器は、実際のデータを受信したときに 1 と判断し、生成されたデータに対しては 0 と判断する必要があります。生成されたデータの分布が実際のデータの分布に非常に近い場合、出力結果は 1/2 になるはずです。

D* を見つけたら、ジェネレータ G* を導出しましょう。ここで、D*(x) を前の積分式に代入し、次のように表現し直します。

この時点で、まず定義を導入する必要があります。それは、Jensen–Shannon ダイバージェンス (JS ダイバージェンスと呼ぶ) です。確率統計において、JS ダイバージェンスは、前述の KL ダイバージェンスと同様に、2 つの確率分布の類似性を測定する機能を持っています。その計算方法は KL ダイバージェンスに基づいており、KL ダイバージェンスの非負性を継承していますが、重要な違いが 1 つあります。JS ダイバージェンスは対称的です。 JS ダイバージェンスの式は次のとおりです。ここでも P と Q を例として取り上げます。さらに、M=12(P+Q)M=\frac{1}{2}(P+Q)M=21(P+Q) と設定し、KL は KL ダイバージェンスの式です。

上記のMaxV(G,D)MaxV(G,D)MaxV(G,D)の場合、JSダイバージェンスは非負なので、上記の式はpdata=pgp_{data}=p_gpdata=pgの場合にのみ、グローバル最小値−log(4)-log(4)−log(4)を達成できます。したがって、必要な最適なジェネレータ G* は、G* の分布を pg=pdatap_g=p_{data}pg=pdata にすることです。

2. GANの視覚的理解

確率分布を視覚化する例を使用して、Generative Adversarial Network を詳しく見てみましょう。 Ian Goodfellow 氏は論文の中で、このような GAN の視覚化実装の例を挙げています。下の図の点線は実際のデータ分布を表し、曲線は生成されたデータ サンプルを表しています。この例における敵対的生成ネットワークの目標は、曲線 (つまり、生成されたデータの分布) を徐々に点線 (実際のデータ分布を表す) に近づけることです。

点線は生成的敵対ネットワーク内の識別器であり、実際のデータと生成されたデータを事前に区別する能力が備わっており、シミュレーション環境をより現実的にするために、その分割パフォーマンスに一定量のホワイトノイズが追加されています。この例では、入力ドメインは z (図の下部にある直線) で、デフォルトで均一に分布したデータになります。生成されたドメインは x (図の上部にある直線) で、不均一に分布したデータです。図の矢印で示すように、生成関数 x=G(z) によってマッピング関係が形成され、均一に分布したデータが不均一なデータにマッピングされます。

a から d までの 4 つの図は、生成的敵対ネットワーク全体の動作プロセスを示しています。図 a は初期状態と言えます。生成されたデータと実際のデータの間にはまだ大きなギャップがあります。識別器は実際のデータかどうかを事前に区別する機能を備えていますが、ノイズの存在により、その効果はまだ不完全です。図 b では、2 種類のラベル付きデータを使用して識別器をトレーニングすることで、識別器 D は徐々により完璧な方向に収束し始め、最終的に図に結果を示します。識別器が完璧になると、図 c に示すように、ジェネレーター G の反復処理を開始します。識別器Dの逆勾配方向をガイドとして使用することで、生成されたデータを実際のデータの分布方向に向けて移動し、識別器が生成されたデータを実際のデータとして識別しやすくなります。一連のトレーニング プロセスを繰り返した後、ジェネレータとディスクリミネータは図 d の最終状態になります。この時点で、pgp_gpg は pdatap_{data}pdata に非常に近いか、完全に等しくなります。理想的な pg=pdatap_g=p_{data}pg=pdata に達すると、D と G は最適化できなくなります。この時点で、G によって生成されたデータは目的を達成し、実際のデータの分布を完全にシミュレートできます。この状態では、D は 2 つのデータ分布を区別できなくなります (まったく同じであるため)。この時点で、D(x)=12D(x)=\frac{1}{2}D(x)=21 です。

4. DCGAN

1. 概要

DCGAN の創設論文「Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks」は 2015 年に発表されました。この論文では、GAN に基づく新しい DCGAN アーキテクチャが提案されました。このネットワークはトレーニング中に安定しており、高品質の画像生成と関連する生成モデル アプリケーションを効果的に実現できます。その実用性の高さから、その後の多くの GAN モデルは DCGAN をベースに改良されたバージョンとなっています。 GAN を畳み込みニューラル ネットワーク アーキテクチャにうまく適応させるために、DCGAN は次の 4 つのアーキテクチャ設計ルールを提案しました。

プーリング層の代わりに畳み込み層を使用します。最初のポイントは、従来の畳み込みネットワークのすべてのプーリング層を削除し、代わりに畳み込み層を使用することです。識別器には、プーリング層の代わりにストライド畳み込みを使用し、ジェネレーターには、プーリング層の代わりに分数ストライド畳み込みを使用します。

完全に接続されたレイヤーを削除します。現在の研究動向では、多くの研究が全結合層を削除しようとしていることがわかります。従来の畳み込みニューラルネットワークでは、最終ベクトルを出力するために畳み込み層の後に全結合層を追加することがよくありますが、全結合層の欠点はパラメータが多すぎることです。ニューラルネットワークの層の数が深くなると、計算速度が非常に遅くなります。また、全結合層により、ネットワークが過剰適合しやすくなります。いくつかの研究では、完全接続層の代わりにグローバル平均プーリングが使用されており、これによりモデルはより安定しますが、収束速度にも影響します。論文で言及されている妥協案は、ジェネレータのランダム入力を畳み込み層の特徴入力に直接接続することです。同様に、識別器の出力層も畳み込み層の出力特徴に接続されます。具体的な操作については、次のフレームワーク構造の紹介で説明します。

バッチ正規化を使用します。ディープラーニングニューラルネットワークには多くの層があるため、各層は出力データの分布を変えます。層の数が増えるにつれて、ネットワーク全体の偏差はどんどん大きくなります。バッチ正規化の目的は、この問題を解決することです。各レイヤーの入力を正規化することで、データを固定されたデータ分布に効果的に従うようにすることができます。

適切な活性化関数を使用してください。 DCGAN ネットワーク フレームワークでは、ジェネレーターと識別器は異なる活性化関数を使用して設計されます。ジェネレーターでは ReLU 関数が使用されますが、出力層では Tanh 活性化関数が使用されます。これは、研究者が実験で、制限された活性化関数を使用するとモデルの学習が速くなり、色空間をすばやくカバーできることを観察したためです。識別器では、すべてのレイヤーで LeakyReLU が使用されており、特に実際の使用では高解像度の画像識別モデルに適しています。これらの活性化関数の選択は、研究者が複数の実験テストを行った後に導き出した結論であり、これにより DCGAN は効果的に最良の結果を得ることができます。

2. ネットワーク構造

下の図は、DCGAN ジェネレータ G のアーキテクチャ図です。入力データは 100 次元のランダム データ z で、[-1, 1] の範囲で均一分布に従います。一連の分数ステップ畳み込みの後、最終的に 64×64×3 RGB 画像が形成されます。これはトレーニング画像と同じサイズです。

下の図に示すように、識別器 D のアーキテクチャは基本的にジェネレータ G の逆の動作です。入力層は 64×64×3 の画像データです。一連の畳み込み層を経て、データの次元が削減され、最終出力はバイナリ分類データになります。

3. トレーニングの詳細

1) トレーニングに使用される画像データサンプルの場合、データはtanhの値の範囲でもある[-1, 1]の範囲にのみスケーリングされ、その他の処理は行われません。

2) すべてのモデルは、ミニバッチ サイズが 128 のバッチ確率的勾配降下法を使用してトレーニングされます。重みは、平均 0、分散 0.02 のガウス分布を満たすランダム変数を使用して初期化されます。

3) 活性化関数LeakyReLUでは、Leak部分の傾きを0.2に設定します。

4) トレーニングプロセス中に、Adam オプティマイザーを使用してハイパーパラメータを調整します。トレーニングをより安定させるために、学習率は 0.0002、運動量 β1 は 0.5 です。

5. DCGANの実装

1. ミッションの目的

DCGAN を実装し、それを使用して漫画のキャラクターの肖像画を合成します。

2. データセット

サンプルコンテンツ: 漫画キャラクターのアバター

サンプル数: 51,223

3. 実験結果

トレーニングを高速化するために、実際にトレーニングに使用されたサンプルは 8903 個のみで、20 ラウンドごとに増分トレーニングが実行されました。実験結果は次のとおりです。

トレーニング1ラウンド

5回のトレーニング

10回のトレーニング

20回のトレーニング

40回のトレーニング

60回のトレーニング

6. その他のGANモデル

1) テキストから画像への生成: GAWWN

2) マッチングデータ画像変換: Pix2Pix

3) 不一致データ画像変換:CycleGAN、2つの分野間の画像変換を実現するために使用される

4) マルチドメイン画像変換: StarGAN

VII. 参考資料

1. オンラインビデオ

1) Li Hongyi の GAN チュートリアル: https://www.ixigua.com/pseries/6783110584444387843/?logTag=cZwYY0OhI8vRiNppza2UW

2. 本

1) Shi Danqing 編著「生成的敵対ネットワークの初心者向けガイド」、China Machine Press

<<:  AIがデジタル変革に与える影響

>>:  崑崙万為が「天宮」13Bシリーズ大型モデルをオープンソース化、商用利用のハードルはゼロ

ブログ    

推薦する

Open Interpreterは、大規模な言語モデルのコードをローカルで実行できるようにするオープンソースツールです。

最近、Github を閲覧していたところ、Open Interpreter という魔法のツールを見つ...

米国が新たなオープンソースAIアルゴリズムを開発:モザイクの美しさを自動修復

ぼやけた写真を見ると、本来の姿を復元したいという衝動にかられることはありませんか?以前の技術ではこれ...

AlphaFold2 は大きな貢献をしました!清華大学チームがディープラーニングでCOVID-19抗体を強化し、AIの画期的な成果を生み出す

2020年末、DeepMindが開発した第2世代ディープラーニングニューラルネットワークであるAlp...

マスク氏の年収:0!米国のCEO給与ランキングが発表:黄氏はスーザン・カルキン氏より600万ドル近く低い

すべてはウォール・ストリート・ジャーナルが最近発表した米国上場企業のCEOの給与ランキングから始まっ...

Newbingが他の生成AIと大きく異なる理由

Newbing を使い始めてから、CHATGPT 3.5 を諦めました。昨日記事を書いた後、Chat...

...

ガートナーは、世界のIT支出が2024年に6.8%増加すると予測している。

テクノロジー業界ではレイオフの波が起こっているものの、IT 市場は依然として成長を続けています。ガー...

強化学習アルゴリズムの分類をさまざまな観点から理解します

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

...

...

フィンテックの台頭:アルゴリズムが決済業界をどう変えるかデータセットの分析は最初のステップに過ぎない

[[224951]]つい最近まで、CEO や大手銀行は、顧客にサービスを提供する上で銀行の所在地は考...

...

トランプの「猫と犬バージョン」を生成、偽顔ツールStarGANv2が壊れており、アルゴリズムがオープンソース化されている

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...