Connect with us

AI 101

ジェネレーティブ・アドバーサリアル・ネットワーク(GAN)とは何か?

mm

ジェネレーティブ・アドバーサリアル・ネットワーク(GAN)は、学習したパターンに従った新しいデータを生成できるニューラルネットワークアーキテクチャの一種です。GANは、人間の顔やその他の物体の画像生成、テキストから画像への変換、あるタイプの画像から別のタイプへの変換、画像の解像度向上(超解像)など、さまざまな用途に使用できます。GANはまったく新しいデータを生成できるため、多くの最先端AIシステム、アプリケーション、研究の先頭に立っています。しかし、GANは具体的にどのように機能するのでしょうか?GANの機能と主な用途のいくつかを見てみましょう。

生成モデルとGANの定義

GANは生成モデルの一例です。ほとんどのAIモデルは、教師ありモデルと教師なしモデルの2つのカテゴリーのいずれかに分類できます。教師あり学習モデルは通常、異なるカテゴリーの入力を区別し、分類するために使用されます。対照的に、教師なしモデルは通常、データの分布を要約するために使用され、多くの場合データのガウス分布を学習します。データセットの分布を学習するため、学習した分布からサンプルを抽出し、新しいデータを生成することができます。 異なる生成モデルは、データを生成し確率分布を計算する方法が異なります。例えば、ナイーブベイズモデルは、さまざまな入力特徴量と生成クラスの確率分布を計算することで動作します。ナイーブベイズモデルが予測を行う際、異なる変数の確率を取り、それらを組み合わせることで最も可能性の高いクラスを計算します。その他の非深層学習ベースの生成モデルには、ガウス混合モデルや潜在ディリクレ配分法(LDA)があります。深層学習ベースの生成モデルには、制限付きボルツマンマシン(RBM)変分オートエンコーダ(VAE)、そしてもちろんGANが含まれます。 ジェネレーティブ・アドバーサリアル・ネットワークは、2014年にイアン・グッドフェローによって初めて提案され、2015年にアレック・レッドフォードら研究者によって改良され、GANの標準的なアーキテクチャが確立されました。GANは実際には2つの異なるネットワークが結合したものです。GANは2つの部分で構成されています:生成モデルと識別モデルで、ジェネレーターとディスクリミネーターとも呼ばれます。

GANのアーキテクチャ

ジェネレーティブ・アドバーサリアル・ネットワークは、ジェネレーターモデルとディスクリミネーターモデルを組み合わせて構築されます。ジェネレーターモデルの仕事は、トレーニングデータから学習したパターンに基づいて、新しいデータの例を作成することです。ディスクリミネーターモデルの仕事は、画像(画像でトレーニングされていると仮定して)を分析し、その画像が生成されたもの(偽物)か本物かを判断することです。 2つのモデルは互いに競い合い、ゲーム理論的な方法でトレーニングされます。ジェネレーターモデルの目標は、敵であるディスクリミネーターモデルを欺く画像を生成することです。一方、ディスクリミネーターモデルの仕事は、敵であるジェネレーターモデルを打ち負かし、ジェネレーターが生成する偽の画像を見つけ出すことです。モデルが互いに競い合うことで、両モデルが改善される軍拡競争が生じます。ディスクリミネーターは、どの画像が本物でどの画像がジェネレーターによって生成されたかについてフィードバックを受け取り、ジェネレーターは、自身の生成した画像のうちどれがディスクリミネーターによって偽物と判定されたかについて情報を受け取ります。両方のモデルはトレーニング中に改善され、最終的には本物のデータと基本的に見分けがつかない偽データを生成できる生成モデルをトレーニングすることを目指します。 トレーニング中にデータのガウス分布が作成されると、生成モデルを使用できるようになります。ジェネレーターモデルには最初にランダムなベクトルが入力され、ガウス分布に基づいて変換されます。言い換えれば、そのベクトルが生成の種となります。モデルがトレーニングされると、ベクトル空間はデータのガウス分布の圧縮版、つまり表現となります。データ分布の圧縮版は、潜在空間または潜在変数と呼ばれます。その後、GANモデルはこの潜在空間表現を取り出し、そこから点を抽出して生成モデルに与え、トレーニングデータに非常に似た新しいデータを生成するために使用できます。 ディスクリミネーターモデルには、トレーニングドメイン全体からの例、つまり本物と生成されたデータの両方の例が入力されます。本物の例はトレーニングデータセット内に含まれており、偽のデータは生成モデルによって生成されます。ディスクリミネーターモデルのトレーニングプロセスは、基本的な二値分類モデルのトレーニングとまったく同じです。

GANのトレーニングプロセス

仮想的な画像生成タスクにおけるトレーニング プロセス全体を見てみましょう。 まず、GANはトレーニングデータセットの一部として本物の実画像を使用してトレーニングされます。これにより、ディスクリミネーターモデルが生成画像と実画像を区別するように設定され、またジェネレーターが新しいデータを生成するために使用するデータ分布が生成されます。 ジェネレーターは、ランダムな数値データのベクトルを受け取り、ガウス分布に基づいて変換して画像を返します。この生成された画像は、トレーニングデータセットからのいくつかの本物の画像とともに、ディスクリミネーターモデルに入力されます。ディスクリミネーターは、受け取った画像の性質について確率的な予測を行い、通常は1が本物の画像、0が偽物の画像を表す0から1の間の値を出力します。 二重のフィードバックループが機能しており、ディスクリミネーターには画像のグラウンドトゥルース(正解)が与えられ、ジェネレーターにはディスクリミネーターからのパフォーマンスに関するフィードバックが与えられます。 生成モデルと識別モデルは互いにゼロサムゲームをしています。ゼロサムゲームとは、一方の利益が他方の損失によってもたらされるゲームです(両者の行動の合計はゼロ)。ディスクリミネーターモデルが本物と偽物の例をうまく区別できた場合、ディスクリミネーターのパラメータは変更されません。しかし、本物と偽物の画像を区別できなかった場合、モデルのパラメータは大きく更新されます。生成モデルの場合はその逆で、識別モデルを欺くことに失敗した場合にペナルティを受け(パラメータが更新され)、そうでなければパラメータは変更されません(または報酬を受け取ります)。 理想的には、ジェネレーターはそのパフォーマンスを、ディスクリミネーターが偽物と本物の画像を見分けられなくなるまで向上させることができます。これは、ディスクリミネーターが常に本物と偽物の画像に対して50%の確率を出力することを意味し、生成された画像は本物の画像と見分けがつかないはずです。実際には、GANは通常この点に到達しません。しかし、生成モデルは完全に類似した画像を作成する必要はなく、GANが使用される多くのタスクにおいて依然として有用です。

GANの応用例

GANにはさまざまな応用例があり、そのほとんどは画像や画像の構成要素の生成に関連しています。GANは、必要な画像データが不足しているか何らかの理由で限られているタスクで、必要なデータを生成する方法として一般的に使用されます。GANの一般的な使用例をいくつか見てみましょう。 データセットのための新しい例の生成 GANは、単純な画像データセットの新しい例を生成するために使用できます。トレーニング例がわずかしかなく、さらに多くの例が必要な場合、GANを使用して画像分類器のための新しいトレーニングデータを生成し、異なる向きや角度で新しいトレーニング例を生成することができます。 ユニークな人間の顔の生成

この写真の女性は実在しません。この画像はStyleGANによって生成されました。写真: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

十分にトレーニングされたGANは、非常にリアルな人間の顔の画像を生成するために使用できます。これらの生成された画像は、顔認識システムのトレーニングを支援するために使用できます。 画像から画像への変換 GANは画像変換に優れています。GANは、白黒画像のカラー化、スケッチや絵画から写真画像への変換、昼間の画像から夜間の画像への変換などに使用できます。 テキストから画像への変換 テキストから画像への変換は、GANの使用によって可能です。画像を説明するテキストとその付随する画像が与えられると、GANは望ましい画像の説明が与えられたときに新しい画像を作成するようにトレーニングできます。 画像の編集と修復 GANは既存の写真を編集するために使用できます。GANは画像から雨や雪のような要素を除去することができますが、古い傷んだ画像や破損した画像を修復するためにも使用できます。 超解像 超解像とは、低解像度の画像を取り込み、より多くのピクセルを画像に挿入して、その画像の解像度を向上させるプロセスです。GANは、画像を受け取りその画像の高解像度バージョンを生成するようにトレーニングできます。

Blogger and programmer with specialties in Machine Learning and Deep Learning topics. Daniel hopes to help others use the power of AI for social good.