![見出し画像](https://assets.st-note.com/production/uploads/images/41314121/rectangle_large_type_2_b946026da9555b20a6e874dc31d4b107.png?width=1200)
Generative Adversarial Network(GAN)とは
こんにちは。スキルアップAI編集部です。
今回は、「【E資格対策】ディープラーニング最新論文対策講座」でも取り上げた、E資格で出題が予想される論文としてGenerative Adversarial Networkをご紹介いたします。Generative Adversarial Network(GAN)[1] は、Goodfellowらが2014年に発表したモデルです。このモデルでは「用意されたデータから特徴を学習し、擬似的なデータを生成する」ことができます。
1. はじめに
図1は、実際にGANが生成した画像を示しています。黄色の枠で囲われたのが事前に用意された訓練データであり、そのほかがGANの生成した“偽物“の画像たちです。こういった擬似的なデータを作り出すことを「生成」と言い、それを達成するモデルのことを「生成モデル」と呼びます。
本記事では、「生成モデルとは何か?」そして「GANはどのように学習されるのか?」を中心に解説していきます。
図 1. GANの生成する画像
(引用元: http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf)
2. 生成モデルとは
確率の考え方を用いた機械学習のモデルは、大きくは「識別モデル」と「生成モデル」の二つに分類されます。
例えば、画像分類のタスクをニューラルネットで行う場合、入力画像とクラスの対応関係を学習させます。このときに、入力画像は確率変数としては扱わず、ニューラルネットは与えられた入力に対して「どのくらいの確率でクラスAに当てはまるか?」という値のセットを返すことになります。このように、識別の部分のみに確率の考え方が導入されたモデルのことを「識別モデル」と呼びます。
これに対して「生成モデル」では、入力を確率変数として扱います。すなわち、「ある確率分布から生成された入力に対して、それがどのくらいの確率でクラスAに当てはまるか?」ということを考えます。このときに、入力が従う確率分布をうまく求めることができれば、その確率分布を用いて擬似的に入力データを生成することができるというわけです。GANでは、生成と識別の両方にニューラルネットを採用しています。
図 2. 生成モデルと識別モデル
3. GANの構造と学習
それでは、GANの具体的な構造について見ていきましょう(図3)。GANはGeneratorとDiscriminatorという二つのブロックで構成されています。いずれのブロックもニューラルネットの構造が用いられているため、誤差逆伝播法による学習が可能です。
A. Generator
Generator部分は「乱数などをデータに近くなるように加工する」ような役割を果たします。図2でいうところの「確率分布」と「生成」が、乱数などの入力とGeneratorの部分に対応します。
生成タスクの場合には、入力として一様乱数などの生成が容易な確率分布に従う乱数を用意することが多いです。「ある画像を別の画像に加工する」ようなタスクの場合には、その元画像を用意することもあります。モデルの具体的な設計を考えるのは機械学習の面白さの醍醐味の一つでもあります。
B. Discriminator
Discriminator部分は「入力がGeneratorの生成した“偽物”か、あるいは訓練データとして用意された“本物”か」を判別する役割を果たします。図2でいうところの「識別」が、このDiscriminatorに対応します。図3のクラスとは「“本物”か、“偽物”か」といった分類のことです。
図 3. GANの模式図
C. GANの学習
GANの学習では、Generatorは「Discriminatorを騙せるような精巧な“偽物”を作ることができる」ように、Discriminatorは「用意された“本物”とGeneratorが作り出した“偽物”を区別できる」ように、敵対的に学習していきます。これがGenerative Adversarial Network 「生成的・敵対的なニューラルネットワーク」という名がつけられた所以です。
GeneratorとDiscriminatorはそれぞれの目的に従って交互に最適化され、最終的にはどちらも非常に良い性能に到達します。このときにGeneratorが生成する“偽物”が、“本物”と区別できないような特徴を捉えていれば、GANの学習は成功です。
4. もっと詳しく学びたい方へ
本記事では、GANの概要を導入程度に解説しました。SkillupAIのディープラーニング講座では、具体的なGANの定式化やTensorFlowを用いた学習などを学ぶことができます。また、2021年1月にGAN(敵対的生成ネットワーク)講座を開講します。この講座では、様々なGANを学ぶことができます。是非ご検討ください。
5. 参考文献
この記事が気に入ったらサポートをしてみませんか?