敵対的生成ネットワークの仕組みから派生モデルまで徹底図解
GAN(2014年)が登場する前にも画像を生成するモデルはあった。
その流れを知ると、GANの革新性がわかる。
画像を「潜在空間」に圧縮して、そこからデコーダで画像を生成する。
学習は安定しているが、生成画像がぼやけやすい。
2つのNNを「競争」させて学習する全く新しいアプローチ。
VAEよりもシャープで鮮明な画像を生成できる。ただし学習が不安定。
画像にノイズを段階的に加え、逆にノイズを除去する過程を学習。
Stable Diffusion, DALL-Eなど。現在の主流。GANより学習が安定+高品質。
VAEはGANより先に登場した生成モデル。GANとの違いを理解するために先に押さえておこう。
入力 → 小さなベクトルに圧縮 → そこから元を復元。
学習目標:入力と出力をできるだけ同じにする
潜在空間の1つの点に圧縮
→ 新しい画像は作れない
→ 入力を再現するだけ
確率分布の範囲に圧縮
→ 範囲内からランダムにサンプル
→ 新しい画像を生成できる!
Ian Goodfellowが提案。2つのNNを「対戦」させるという画期的なアイデア。
GAN = Generative Adversarial Network(敵対的 生成 ネットワーク)
本物の画像を見せて「本物」と判定させ、Generatorの偽画像を見せて「偽物」と判定させる。
正しく見分ける力を鍛える。
Generatorが偽画像を作り、Discriminatorに「本物」と判定させようとする。
Discriminatorを騙せなかったら → Generatorの重みを更新してもっと上手に描けるようにする。
(この時Discriminatorの重みは固定)
Discriminatorが強くなる → Generatorも強くならないと騙せない → 互いにレベルアップ。
最終的にDiscriminatorが「本物か偽物かわからない(50%:50%)」になったら 学習完了。
| VAE | GAN | |
|---|---|---|
| 年 | 2013 | 2014 |
| 構造 | エンコーダ + デコーダ | Generator + Discriminator |
| 学習方法 | 入力と出力の差を最小化 + 潜在空間の正則化 |
2つのNNの対戦 (敵対的学習) |
| 画質 | ぼやけやすい | シャープで鮮明 ✅ |
| 学習の 安定性 |
安定 ✅ | 不安定 (モード崩壊のリスク) |
| 潜在空間 | 整理されている ✅ 連続的で補間が可能 |
整理されていない 隙間が多い場合がある |
元祖GANのGeneratorとDiscriminatorは単純な全結合層だった。
DCGANはCNNを導入して画像生成の品質を大幅に向上させた。
代わりにストライド付き畳み込みで縮小・拡大する。
ネットワーク自身が「どう縮小するか」を学習できる。
各層の出力を正規化して学習を安定させる。
(ただしGeneratorの出力層とDiscriminatorの入力層は除く)
Generator:中間層はReLU、出力層はtanh
Discriminator:全層LeakyReLU
小さいノイズ → Transposed Convolutionで段階的に拡大 → 画像を生成
元祖GANの弱点:ランダムノイズから画像を作るので何が出るかわからない。
「猫を作れ」「犬を作れ」と指定できない。
入力はノイズだけ
→ 何が出るかは運任せ
ノイズ+条件ラベルを入力
→ 指定通りのものが出る
※ Generator 2つ + Discriminator 2つ = 合計4つのNNを使う
低解像度から始めて、段階的に層を追加しながら高解像度を学習
各レベルに別々のスタイル情報を注入 → 細かい制御が可能
| モデル | 年 | 覚えるキーワード | ひとこと |
|---|---|---|---|
| VAE | 2013 | 潜在空間、確率分布、ぼやける | エンコーダ・デコーダ型生成 |
| GAN | 2014 | Generator、Discriminator、敵対的学習、Ian Goodfellow | 贋作師 vs 鑑定士 |
| DCGAN | 2016 | CNN導入、3つのルール | Pool不使用/BN/活性化関数 |
| cGAN | 2014 | 条件付き、ラベル指定 | 注文できるレストラン |
| Pix2Pix | 2017 | 画像変換、ペアデータ必要 | 線画→写真 |
| CycleGAN | 2017 | ペア不要、サイクル一貫性 | 馬↔シマウマ |
| ProGAN | 2018 | 段階的に解像度向上 | 下書き→清書の順で学習 |
| StyleGAN | 2019 | スタイル制御、NVIDIA、AdaIN | 着せ替え人形 |
| SRGAN | 2017 | 超解像、低→高解像度 | 画像の高画質化 |