GAN(Generative Adversarial Network; 敵対的生成ネットワーク)は、データを生成する生成器と本物か偽物かを見分ける識別器を競わせて学習する生成モデルです。この項目では、基本的なGANの学習の仕組みと課題(モード崩壊など)、代表的な発展形であるDCGAN・Wasserstein GAN・Conditional GAN・CycleGANを学びます。

📖 概要

GANは2つのネットワークによる「偽造者と鑑定士」のゲームとして定式化されます。生成器はランダムノイズzから本物そっくりのデータG(z)を作ろうとし、識別器は入力が訓練データ由来の本物か生成器由来の偽物かを判定しようとします。両者を交互に学習させることで、生成器は次第に本物のデータ分布に近いサンプルを生成できるようになります。目的関数はミニマックスゲームとして

min_G max_D V(D, G) = E_x[log D(x)] + E_z[log(1 - D(G(z)))]

と書かれ、理論上は生成分布がデータ分布に一致したときに均衡に達します。

GANは尤度を明示的に計算せずに鮮明なサンプルを生成できる強力な枠組みですが、学習の不安定さやモード崩壊といった課題があります。これらへの対処として、アーキテクチャを工夫したDCGAN、距離尺度を変えたWasserstein GANが提案され、また応用面では条件付けにより生成を制御するConditional GAN、対応ペアなしで画像変換を学ぶCycleGANなどが発展しました。

🔍 キーワード解説

生成器ネットワーク

生成器ネットワーク(Generator)は、ガウス分布などからサンプリングした潜在変数(ノイズ)zを入力として、データ空間のサンプルG(z)を出力するネットワークです。生成器の目標は、識別器に「本物」と判定させるようなサンプルを作ること、すなわち識別器を騙すことです。学習が進むと、潜在空間からデータ分布への写像として機能するようになります。

識別器ネットワーク

識別器ネットワーク(Discriminator)は、入力されたデータが訓練データ(本物)か生成器の出力(偽物)かを判定する2値分類器です。識別器は本物と偽物を正しく見分けるように、生成器は識別器の判定を誤らせるように、互いに敵対する目的で交互に更新されます。識別器からの勾配が生成器の学習信号となるため、両者の力のバランスが崩れると学習がうまく進まなくなります。

モード崩壊 (mode collapse)

モード崩壊 (mode collapse) は、生成器がデータ分布の一部のモード(例えば特定の種類の画像)ばかりを生成するようになり、生成サンプルの多様性が失われる現象です。識別器を騙せる「得意なパターン」を見つけると、生成器がそこに集中してしまうことで起こります。GAN特有の代表的な失敗モードであり、学習の不安定性とともにGANの主要な課題として問われます。

DCGAN

DCGAN(Deep Convolutional GAN)は、GANに畳み込みニューラルネットワークを本格的に導入し、安定して学習させるための設計指針を示したモデルです。プーリング層を使わずにストライド付き畳み込み(識別器)と転置畳み込み(生成器)で解像度を変換する、Batch Normalizationを用いる、全結合の隠れ層を避ける、生成器にReLU(出力層はtanh)・識別器にLeaky ReLUを使う、といった構成が知られています。以降の画像生成GANの標準的な土台となりました。

Wasserstein GAN

Wasserstein GAN(WGAN)は、通常のGANが実質的に最小化するJSダイバージェンスの代わりに、分布間のWasserstein距離(輸送距離)を最小化するよう定式化したGANです。2つの分布の台がほとんど重ならない場合でも滑らかに変化する距離であるため、勾配が消失しにくく学習が安定しやすいとされます。識別器に相当するネットワークは確率ではなくスコアを出力する「クリティック」となり、リプシッツ制約を満たすために重みクリッピングが用いられ、後に勾配ペナルティ(WGAN-GP)による改良が提案されました。

Conditional GAN

Conditional GAN(条件付きGAN)は、クラスラベルなどの条件情報yを生成器と識別器の両方に追加入力として与えることで、「どのようなデータを生成するか」を制御できるようにしたGANです。例えばラベルを条件にすれば指定したクラスの画像を生成できます。条件付けの考え方は、画像から画像への変換(pix2pixなど)を含む多くの応用の基礎になっています。

CycleGAN

CycleGANは、対応するペア画像を用意することなく、2つのドメイン間(例: 馬とシマウマ、写真と絵画)の画像変換を学習するGANです。ドメインXからYへの変換GとYからXへの変換Fの2つの生成器、および各ドメインの識別器を用意し、敵対的損失に加えて「変換して戻すと元に戻る」ことを要求するサイクル一貫性損失(F(G(x)) ≈ x、G(F(y)) ≈ y)を課します。これにより、ペアデータなしでも対応関係の取れた変換が学習できます。

📝 試験でのポイント

💡 ポイント
  • GANの目的関数 min_G max_D V(D, G) の形と、「生成器は最小化・識別器は最大化」という役割の対応は最頻出です
  • モード崩壊は「多様性の喪失」を指す用語であることを押さえ、勾配消失など他の学習課題と区別しましょう
  • WGANは「Wasserstein距離の採用」「クリティック」「リプシッツ制約(重みクリッピング/勾配ペナルティ)」のキーワードの組合せで問われます
  • DCGANの設計指針(プーリング不使用・転置畳み込み・Batch Normalization・Leaky ReLUなど)は選択肢問題で問われやすいポイントです
  • Conditional GAN(条件で生成を制御)とCycleGAN(ペアなし変換+サイクル一貫性損失)の目的の違いを明確にしておきましょう

📚 まとめ

GANは生成器ネットワークと識別器ネットワークを敵対的に競わせるミニマックスゲームとして学習する生成モデルで、鮮明なサンプルを生成できる一方、モード崩壊や学習の不安定さが課題です。DCGANは畳み込みによる安定した構成を、Wasserstein GANは距離尺度の変更による学習安定化を示しました。Conditional GANは条件付けによる生成の制御を、CycleGANはサイクル一貫性損失によるペアなし画像変換を実現します。各手法を「何の課題をどう解決したか」で整理しましょう。