AIの基礎

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

mm
Unite.AI を Google の優先ソースに追加

生成対抗ネットワーク(GANs)は、学習したパターンに従って新しいデータを生成することができるニューラルネットワークアーキテクチャの一種です。GANsは、人間の顔やその他のオブジェクトの画像を生成したり、テキストから画像への翻訳を行ったり、画像を別のタイプの画像に変換したり、画像の解像度を高める(スーパーレゾリューション)ことができます。GANsは、まったく新しいデータを生成できるため、多くの最先端のAIシステム、アプリケーション、研究の先頭に立っています。しかし、GANsはどうやって機能するのでしょうか。GANsの機能と主な用途を探ってみましょう。

生成モデルとGANsの定義

GANは、生成モデルの一例です。ほとんどのAIモデルは、監督学習モデルと無監督学習モデルの2つのカテゴリに分けることができます。監督学習モデルは、通常、入力の異なるカテゴリを区別したり、分類したりするために使用されます。一方、無監督モデルは、通常、データの分布を要約するために使用され、多くの場合、正規分布を学習します。データの分布を学習することで、新しいデータを生成することができます。

異なる生成モデルには、データを生成し、確率分布を計算するための異なる方法があります。たとえば、ナイーブベイズモデルは、入力特徴と生成クラスの確率分布を計算することで動作します。ナイーブベイズモデルが予測を出すとき、さまざまな変数の確率を組み合わせて最も可能性の高いクラスを計算します。他の非ディープラーニング生成モデルには、ガウシアンミクスチャモデルと潜在ディリクレ配分(LDA)があります。ディープラーニングベースの生成モデルには、制限ボルツマンマシン(RBMs)変分オートエンコーダー(VAEs)、およびGANsがあります。

生成対抗ネットワークは、2014年にIan Goodfellowによって最初に提案され、2015年にAlec Redfordと他の研究者によって改良され、GANsの標準化されたアーキテクチャが開発されました。GANsは、実際には2つの異なるネットワークが結合されたものです。GANsは、2つの半分で構成されています。生成モデルと判別モデル、別名ジェネレーターとディスクリミネーターです。

GANアーキテクチャ

生成対抗ネットワークは、ジェネレーターとディスクリミネーターモデルを組み合わせて構成されます。ジェネレーターモデルの役割は、学習したパターンに基づいて新しいデータの例を生成することです。ディスクリミナーターモデルの役割は、画像(画像で訓練されたと仮定)を分析し、画像が生成されたもの(偽物)か本物かを判断することです。

2つのモデルは、ゲーム理論的な方法で訓練され、互いに競合しています。ジェネレーターモデルの目標は、ディスクリミナーターモデルを欺く画像を生成することです。一方、ディスクリミナーターモデルの役割は、ジェネレーターモデルを上回り、ジェネレーターモデルが生成する偽の画像を検出することです。モデルの競合により、両方のモデルが改善されます。ディスクリミナーターモデルは、どの画像が本物で、どの画像がジェネレーターモデルによって生成されたかについてのフィードバックを受け取り、ジェネレーターモデルは、ディスクリミナーターモデルによって偽と判断された画像についての情報を受け取ります。両方のモデルは、訓練中に改善されます。ジェネレーターモデルの目標は、ディスクリミナーターモデルが本物と偽物を区別できないようなデータを生成することです。これは、ディスクリミナーターモデルが本物と偽物の両方の画像について50%の確率を出力することを意味します。つまり、生成された画像は本物の画像と区別がつかないはずです。実際、GANsはこの点に到達することはありません。しかし、ジェネレーターモデルは、GANsが使用される多くのタスクで有用であるために、完全に同じ画像を生成する必要はありません。

GANの訓練プロセス

仮想的な画像生成タスクの訓練プロセスを見てみましょう。

まず、GANは、訓練データセットの一部として本物の画像を使用して訓練されます。これにより、ディスクリミナーターモデルは生成された画像と本物の画像を区別することができます。また、ジェネレーターモデルが新しいデータを生成するために使用するデータの分布も生成されます。

ジェネレーターモデルは、ランダムな数値データのベクトルを受け取り、それをガウシアンモデルの分布に基づいて変換し、画像を返します。生成された画像と訓練データセットからの一部の本物の画像は、ディスクリミナーターモデルに与えられます。ディスクリミナーターモデルは、受け取った画像について、0から1までの値を出力します。ここで、1は通常本物の画像、0は偽の画像です。

ここでは、2つのフィードバックループが存在します。ディスクリミナーターモデルは、画像の真実値についてのフィードバックを受け取り、ジェネレーターモデルは、ディスクリミナーターモデルからのパフォーマンスについてのフィードバックを受け取ります。

生成モデルと判別モデルは、ゼロ和ゲームをプレイしています。ゼロ和ゲームとは、一方が得をするごとに、他方が失うゲームです。ディスクリミナーターモデルが本物と偽物を区別できる場合、ディスクリミナーターモデルのパラメータには変更が加えられません。しかし、ディスクリミナーターモデルが本物と偽物を区別できない場合、大きな更新が行われます。一方、ジェネレーターモデルは、ディスクリミナーターモデルを欺くことができない場合、ペナルティを受けます(そしてパラメータが更新されます)。しかし、ディスクリミナーターモデルを欺くことができる場合、パラメータは変更されません(または報酬を受けます)。

理想的には、ジェネレーターモデルは、ディスクリミナーターモデルが本物と偽物を区別できないレベルまで改善されます。これは、ディスクリミナーターモデルが本物と偽物の両方の画像について50%の確率を出力することを意味します。つまり、生成された画像は本物の画像と区別がつかないはずです。実際、GANsはこの点に到達することはありません。しかし、ジェネレーターモデルは、GANsが使用される多くのタスクで有用であるために、完全に同じ画像を生成する必要はありません。

GANの応用

GANsには、主に画像や画像のコンポーネントの生成を中心とした、いくつかの異なる応用があります。GANsは、必要な画像データが不足している、または制限されているタスクで、必要なデータを生成する方法として使用されます。GANsの一般的な用途をいくつか見てみましょう。

新しいデータセットの生成

GANsは、シンプルな画像データセットの新しい例を生成するために使用できます。如果、あなたがわずか数個の訓練例しか持っていない場合は、GANsを使用して新しい訓練データを生成できます。画像分類器のための新しい訓練例を、さまざまな方向や角度で生成できます。

ユニークな人間の顔の生成

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

十分に訓練されたGANsは、非常にリアルな人間の顔の画像を生成することができます。これらの生成された画像は、顔認識システムの訓練を助けるために使用できます。

画像から画像への翻訳

GANsは、画像翻訳に優れています。GANsは、白黒画像をカラー化したり、スケッチやドローイングを写真のような画像に変換したり、画像を昼から夜に変換したりすることができます。

テキストから画像への翻訳

テキストから画像への翻訳は、GANsを使用することで可能です。画像の説明とともに提供されたテキストがあれば、GANsは、説明に基づいて新しい画像を生成することができます。

画像の編集と修復

GANsは、既存の写真を編集するために使用できます。GANsは、雨や雪のような要素を画像から除去できます。また、古い、損傷した画像や破損した画像を修復するために使用することもできます。

スーパーレゾリューション

スーパーレゾリューションとは、低解像度の画像にピクセルを追加して画像の解像度を高めるプロセスです。GANsは、画像を高解像度のバージョンに生成することができます。また、古い、損傷した画像や破損した画像も修復することができます。スーパーレゾリューションは、画像を高解像度のバージョンに生成するプロセスであり、GANsはこのタスクに使用できます。GANsは、低解像度の画像を高解像度の画像に変換することができます。さらに、GANsは古い、損傷した画像や破損した画像も修復することができます。スーパーレゾリューションは、画像の解像度を高めるために使用される技術であり、GANsはこの分野で重要な役割を果たしています。

ブログ作家およびプログラマーで、 Machine Learning Deep Learning のトピックを専門としています。Danielは、AIの力を社会のために利用する手助けを他者に与えることを希望しています。