AI 101
生成対抗ネットワーク (GAN) とは何か?

生成対抗ネットワーク (GANs) は、学習したパターンに従った新しいデータを生成することができるニューラルネットワークアーキテクチャの一種です。GAN は、人間の顔や他の物体の画像を生成したり、テキストから画像への翻訳を行ったり、画像を別のタイプの画像に変換したり、画像の解像度を高める (スーパーレゾリューション) などの用途で使用できます。GAN は完全に新しいデータを生成できるため、多くの最先端の AI システム、応用、研究の先頭に立っています。ただし、GAN はどうやって機能するのでしょうか?GAN の機能と主な用途について見てみましょう。
生成モデルと GAN の定義
GAN は、生成モデルの一例です。ほとんどの AI モデルは、2 つのカテゴリの 1 つに分けることができます。教師あり学習モデルと教師なし学習モデルです。教師あり学習モデルは、通常、入力の異なるカテゴリを区別したり、分類したりするために使用されます。一方、教師なし学習モデルは、通常、データの分布を要約するために使用され、多くの場合、ガウシアンノイズの分布を学習します。データセットの分布を学習することで、新しいデータを生成することができます。
さまざまな生成モデルには、データを生成し、確率分布を計算するための異なる方法があります。たとえば、ナイーブベイズモデルは、入力特徴と生成クラスの確率分布を計算することで動作します。ナイーブベイズモデルが予測を生成するとき、さまざまな変数の確率を組み合わせて最も可能性の高いクラスを計算します。他の非ディープラーニング生成モデルには、ガウシアンミックスチャーモデルと潜在ディリクレ配分 (LDA) があります。ディープラーニングベースの生成モデルには、制限ボルツマンマシン (RBMs)、変分オートエンコーダー (VAEs)、そしてもちろん、GAN があります。
生成対抗ネットワークは、2014 年に Ian Goodfellow によって最初に提案され、2015 年に Alec Redford と他の研究者によって改良され、GAN の標準アーキテクチャが生まれました。GAN は、実際には 2 つの異なるネットワークが結合されています。GAN は、2 つの部分で構成されています。生成モデルと判別モデル、別名ジェネレーターとディスクリミネーターです。
GAN アーキテクチャ
生成対抗ネットワークは、ジェネレーター モデルとディスクリミネーター モデルを組み合わせて構成されています。ジェネレーター モデルの役割は、学習したパターンに基づいて新しいデータの例を生成することです。ディスクリミネーター モデルの役割は (画像に基づいて学習したと仮定して)、画像を分析して、画像が生成されたもの (偽物) か、本当のものかを判断することです。

2 つのモデルは、ゲーム理論的な方法でトレーニングされ、互いに対戦します。ジェネレーター モデルの目標は、ディスクリミネーター モデルを欺く画像を生成することです。一方、ディスクリミネーター モデルの役割は、ジェネレーター モデルを倒し、ジェネレーターが生成する偽の画像を検出することです。モデルが互いに対戦することで、両者が改善されます。ディスクリミネーターは、どの画像が本当のもので、どの画像がジェネレーターによって生成されたかについてのフィードバックを受け取り、ジェネレーターは、ディスクリミネーターによって偽と判断された画像についての情報を受け取ります。トレーニング中に両者が改善され、ジェネレーターは、本当のデータと区別がつかないような偽のデータを生成できるようになります。
トレーニング中に、ガウシアンノイズの分布が作成されると、ジェネレーター モデルを使用できます。ジェネレーター モデルは、最初にランダムなベクトルを受け取り、それをガウシアンノイズの分布に基づいて変換します。言い換えると、ベクトルは生成をシードします。モデルがトレーニングされると、ベクトル空間はデータのガウシアンノイズの分布の圧縮されたバージョン、または表現になります。データ分布の圧縮されたバージョンは、潜在的な空間、または潜在的な変数と呼ばれます。後で、GAN モデルは潜在的な空間表現を取り出し、そこから点を描き、ジェネレーター モデルに渡して、トレーニング データと非常に似た新しいデータを生成することができます。
ディスクリミネーター モデルは、トレーニング ドメイン全体の例を与えられます。これには、実際のデータと生成されたデータの両方の例が含まれます。実際の例はトレーニング データセットに含まれており、偽のデータはジェネレーター モデルによって生成されます。ディスクリミネーター モデルのトレーニング プロセスは、基本的な二項分類モデルのトレーニングと同じです。
GAN トレーニング プロセス
仮想的な画像生成タスクの トレーニング プロセス を見てみましょう。
まず、GAN は、トレーニング データセットの一部として実際の画像を使用してトレーニングされます。これにより、ディスクリミネーター モデルは生成された画像と実際の画像を区別することができます。また、ジェネレーターが新しいデータを生成するために使用するデータ分布も生成されます。
ジェネレーターは、ランダムな数字のベクトルを受け取り、それをガウシアンノイズの分布に基づいて変換して画像を返します。この生成された画像とトレーニング データセットからの実際の画像の一部は、ディスクリミネーター モデルに与えられます。ディスクリミネーターは、受け取った画像の性質について確率的な予測を出力し、0 から 1 の間の値を出力します。ここで、1 は通常、本当の画像であり、0 は偽の画像です。

ダブル フィードバック ループが機能しています。グラウンド トゥルースのディスクリミネーターは画像のグラウンド トゥルースを与えられ、ジェネレーターはディスクリミネーターからのパフォーマンスについてのフィードバックを受け取ります。
生成モデルと判別モデルは、ゼロサムゲームをプレイしています。ゼロサムゲームとは、一方が得をするごとに、他方が損をする (ゼロになる) ゲームです。ディスクリミネーター モデルが実際のものと偽のものを区別できる場合、ディスクリミネーターのパラメータには変更が加えられません。しかし、ディスクリミネーターが実際のものと偽のものを区別できない場合、大きな更新がディスクリミネーターのパラメータに加えられます。逆もまた同様です。生成モデルは、ディスクリミネーター モデルを欺くことができない場合、ペナルティ (パラメータの更新) が加えられますが、ディスクリミネーター モデルを欺くことができた場合、パラメータは変更されません (または報奨されます)。
理想的には、ジェネレーターは、ディスクリミネーターが偽の画像と実際の画像を区別できないほど、パフォーマンスを向上させることができます。これは、ディスクリミネーターが実際の画像と偽の画像の両方に対して 50% の確率を出力することを意味します。つまり、生成された画像は実際の画像と区別がつかないはずです。実際には、GAN は通常この点に達しません。しかし、ジェネレーターが完全に似た画像を生成する必要はなく、GAN が使用される多くのタスクでも有用です。
GAN アプリケーション
GAN には、主に画像と画像のコンポーネントの生成を中心とした、いくつかの異なるアプリケーションがあります。GAN は、必要な画像データが不足している、または制限されているタスクで、必要なデータを生成する方法として使用されます。GAN の一般的なユースケースを見てみましょう。
データセットの新しい例の生成
GAN は、単純な画像データセットの新しい例を生成するために使用できます。たとえば、画像分類器のトレーニングに使用する画像の例が数個しかない場合、GAN は新しいトレーニング データを生成するために使用できます。画像をさまざまな方向や角度で生成できます。
ユニークな人間の顔を生成

この写真の女性は存在しません。この画像は StyleGAN によって生成されました。写真: Owlsmcgee via Wikimedia Commons、パブリック ドメイン (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)












