# GAN(敵対的生成ネットワーク)
## 定義
GAN(Generative adversarial network、敵対的生成モデル)は、他の多くの生成モデルと異なり[[最尤推定]]を使わず、生成器G(Generator)と識別器D(Discriminator)という2つのニューラルネットワークを競合させて学習する深層生成モデルである。生成器はサンプリングが容易な分布p(z)から種zをサンプリングし、決定的な関数x=G(z;θ)を使ってデータを生成する。識別器は入力データが本物のデータ由来か生成器が生成したデータ由来かを判別する二値分類器である。あたかも生成器は偽金を作る人、識別器は偽金を見分ける人のような関係にあり、両者が競い合って学習すると生成器は本物そっくりのデータをサンプリングできるようになる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3, I. J. Goodfellow et al.「Generative Adversarial Networks」NeurIPS, 2014)
## 目的関数と学習
生成器・識別器は目的関数 $L(G,D)=\mathbb{E}_{x\sim p_{data}(x)}[\log D(x)]+\mathbb{E}_{z\sim p(z)}[\log(1-D(G(z)))]$ を、識別器が最大化・生成器が最小化する形で交互に更新する(識別器 $D_{t+1}=\arg\max_D L(G_t,D)$、生成器 $G_{t+1}=\arg\min_G L(G,D_{t+1})$、実際は1〜複数回の勾配法による更新)。学習初期は生成器の勾配が非常に小さくなる問題があるため、実際の生成器学習には $L_{gen}(G,D)=\mathbb{E}[\log D(x)]-\mathbb{E}[\log D(G(z))]$ という目的関数を用いる。生成器のパラメータ更新時には、識別器から伝わってきた誤差(計算グラフ上でD(G(z))はGの後にDをつなげたネットワーク)を使うため、GANの2つのネットワークは競合しながらも互いに助け合って学習しているとみなせる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3)
## 決定的な関数によるシャープな生成
GANは生成器が尤度を評価できる必要がないという点で、VAEを含む従来の最尤推定ベースの生成モデルと異なる。GANの生成器の多くは最初にノイズをサンプリングした後は決定的な関数のみでデータを生成し、生成の最後にノイズを加える必要がない。これにより生成データの自由度はzの次元数までの本質的に低次元なものになり、ぼやけないシャープな生成が可能になる。この低次元の自由度を持つ分布は確率密度としては0になるため最尤推定では学習できない。GANは識別器にCNNを使うことで平行移動不変性など分類モデル向けの技術をそのまま活用できるという利点も持つ。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3)
## GANの学習が達成する分布とリバースKLダイバージェンス
データ分布をP(x)、生成分布をQ(x)とし、GANの学習でデータが1/2の確率でサンプリングされる状況で最適な(ベイズ最適な)識別器は $D^*(x)=P(x)/(P(x)+Q(x))$ となる。この最適識別器を仮定すると、GANの目的関数のうち生成器に関わる項は生成分布Qからデータ分布Pへの**リバースKLダイバージェンス(reverse KL divergence)** $KL(Q\|P)$ の最小化に一致することが示される。これに対し最尤推定は逆向きの $KL(P\|Q)$ を最小化する。$KL(P\|Q)$ の最小化(最尤推定)はPの複数の山を平均的にカバーするように学習するのに対し、$KL(Q\|P)$ の最小化(GAN)はPの一つのモード(最も大きい山)を捉えるように学習が進む特徴がある。この違いが**モード崩壊(mode collapse)**——生成器が一部のデータやサンプルの種類しか生成しなくなる現象——を引き起こす。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3)
## 学習安定化:スペクトラル正規化
GANは識別器が生成器に対して強くなりすぎると学習が失敗する。この場合、識別器はデータ分布と生成分布を完全に分離してしまい、ほとんどの領域で勾配が0、境界のみで非常に大きい勾配を持つようになり、生成器が有効な勾配を得られなくなる。**スペクトラル正規化(spectral normalization、SN)**は、識別器の各線形変換の重み行列Wをその最大固有値(スペクトルノルム)σ(W)で割ることでリプシッツ定数を1以下に抑え、識別関数が急峻になることを防ぐ手法である。最大固有値はべき乗法と前回更新時の特異ベクトルを初期値として使うことで効率的に計算でき、GANの学習を大幅に安定化させる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3, T. Miyato et al.「Spectral Normalization for Generative Adversarial Networks」ICLR, 2018)
## StyleGAN
StyleGANは、潜在変数zを直接画像へ変換せず、8層程度の総結合層でzをスタイルwへ変換し、定数から始まる生成過程の各段階でAdaIN(Adaptive instance normalization)操作 $AdaIN(x_i,y)=y_{s,i}\frac{x_i-\mu(x_i)}{\sigma(x_i)}+y_{b,i}$ を通じてスタイルyを適用することで画像を生成する。これにより高レベルの属性(姿勢や特性など)を自動的に分離した生成が実現できる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3, T. Karras et al.「A Style-Based Generator Architecture for Generative Adversarial Networks」CVPR, 2019)
## 横断的知見
- (本概念は現時点で『ディープラーニングを支える技術〈2〉』第3章という単一ソースに依拠する。他のGAN関連ソースが wiki に加わったら、横断的知見をここに積み増す)
## 未解決の問い
- モード崩壊を防ぐ手法は本章では「多く提案されている」とだけ言及され、具体的手法(unrolled GAN、minibatch discriminationなど)は扱われない。
- スペクトラル正規化のリプシッツ性は識別器の学習安定化に有効だが、生成器に適用した場合の効果のメカニズム(本章は「生成品質を改善できる」とのみ述べる)はどのように説明されるか。
- GANが達成するKL(Q||P)最小化は理論上の理想(ベイズ最適な識別器を仮定)であり、実際の学習では識別器は数回の更新にとどまり最適性が達成されない場合が多いと注記されている。この理論と実際のギャップが生成品質にどう影響するかは本章の範囲外。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]]
- concept: [[VAE(変分オートエンコーダ)]](最尤推定を使う対照的な生成モデル) / [[正規化フロー]](GANと同様に最後のサンプリングが不要) / [[最尤推定]](GANが使わない学習原理) / [[畳み込みニューラルネットワーク]](識別器の設計に活用)
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第3章, §3.3.