Generative Adversarial Networks(GAN)は、2014年にIan Goodfellowらによって初めて紹介された機械学習フレームワークの強力なクラスである。GANは生成AIの分野に属し、ある入力データ分布を模倣した新しいデータを生成する能力で知られている。GANは、Generator(生成器)とDiscriminator(識別器)という2つの競合するニューラルネットワークを含む敵対的プロセスを通じてこれを実現する。このユニークなアーキテクチャは、特にコンピュータ・ビジョンにおいて大きな進歩をもたらした。
GANSの仕組み
GANの核となる考え方は、2つのネットワーク間の競争ゲームである:
- ジェネレーター:このネットワークは、実際のデータセットから得られたように見える合成データ(画像、音声、テキストなど)を作成しようとする。ランダムなノイズを入力とし、それを現実的な出力に変換しようとする。
- 差別者:このネットワークは審判の役割を果たす。このネットワークの目的は、(実際の訓練データから得られた)本物のデータと、ジェネレーターによって生成された偽のデータを区別することである。入力サンプルが本物である可能性を示す確率を出力する。
訓練中、これら2つのネットワークは同時に訓練される。ジェネレーターはますます現実的なデータを生成して識別器を欺くように学習し、一方識別器は偽のデータを識別できるようになる。このプロセスでは、バックプロパゲーションを使用して、特定の損失関数によって導かれるパフォーマンスに基づいて、両方のネットワークのモデルの重みを更新する。ジェネレーターが説得力のあるデータを作成し、ディシミネーターがその違いを確実に見分けられなくなったとき(ランダムな推測と変わらないパフォーマンス)、システムは均衡に達する。
主要概念と課題
GANを理解するには、いくつかのコンセプトが中心となる:
- 敵対的損失:損失関数は、ジェネレーターの改善とディストリミネーターの悪化が一致するように設計されており、その逆もまた同様である。
- トレーニングの安定性: GANのトレーニングは難しいことで知られている。よくある問題は以下の通り:
- モードの崩壊:ジェネレーターは限られた種類の出力しか出さず、トレーニングデータの多様性を完全に捉えることができない。モード崩壊についてもっと知る。
- 消える勾配:ジェネレーターが学習するための有用なフィードバック(勾配)をほとんど提供しない。消失勾配問題を参照。
- 非収束:モデルが安定均衡に達しないことがある。
研究者たちは、これらの課題を軽減し、トレーニングの安定性を向上させるために、さまざまなテクニックやアーキテクチャの改良(Wasserstein GANやWGANなど)を開発してきた。
実世界での応用
GANは、特にビジュアル・コンテンツの生成において、数多くの用途が見つかっている:
- リアルな画像生成:StyleGANやBigGANのようなGANは、人間の顔(This Person Does Not Existはよく使われる例です)や動物、物体などの高解像度でフォトリアリスティックな画像を生成することができます。この機能は、アートやゲームアセットを作成したり、以下のようなモデルをトレーニングするためのデータセットを補強する合成データを生成したりするのに役立ちます。 Ultralytics YOLO.
- 画像間の変換:pix2pixやCycleGANのようなモデルは、衛星画像を地図に、スケッチを写真に、写真の季節を変えるなど、画像をあるスタイルから別のスタイルに変換することができます。画像変換の例をご覧ください。
- データの増強:GANは既存のデータのバリエーションを生成することができ、効果的にデータの拡張を行うことができる。これは、医療画像解析のように実データが乏しい分野で有用であり、診断モデルのロバスト性を向上させるのに役立つ。
GANSと他の生成モデルとの比較
GANは他の生成的アプローチとは異なる:
- 変分オートエンコーダ(VAE):VAEも生成モデルの一種であるが、学習方法が異なり、データの対数尤度の下限を最適化する。VAEは一般的に、GANに比べて滑らかな出力を生成するが、ぼやける可能性がある。VAEの概要を読む。
- 拡散モデル:これらのモデルは、安定拡散と同様に、データに徐々にノイズを加え、そのプロセスを逆転させるように学習することで機能する。多くの場合、画質と多様性において最先端の結果を達成するが、GANに比べてサンプルの生成に時間がかかることがある。拡散モデルの用語集を参照。
GANが生成に重点を置くのに対して、識別モデルは純粋に画像分類や 物体検出に使われるモデルのように、入力データに基づいて分類や予測を行うことを目的としている。GANの識別器は基本的に識別モデルであるが、その役割はより大きな生成フレームワークの一部である。
GANは深層学習における重要なマイルストーンであり、AIの創造的な可能性の限界を押し広げる。Generative Adversarial Netsの原著論文を読めば、さらに深く掘り下げることができる。実用的な実装については、TensorFlowGANチュートリアルや PyTorch例などのリソースを調べてください。