##概要
敵対的生成ネットワーク(GAN:Generatice Adversarial Networks) 名前だけでも不思議とかっこよさを感じてしまうのは僕だけでしょうか。
このGANは一体どういったものなのか、僕はすぐさまGANについて調べはじめました。
今回はこのGANについて調べたり、勉強してきたのでそれをまとめる記事になります。
別の記事でGANを用いてmnistデータセットから手書き文字を生成するコードを書いているのでぜひ読んでください。
##GANについて
GANでできることといえば、とてつもなく__リアルな画像を生成__することがあげられます。
これは本当にリアルで、本物と見分けがつきません、、、
そしてもう1つ優れた能力として、__画像から新たな画像を生成__できることです。
有名なのが馬の画像からしまうまの画像を生成する例です。(以下に画像あり)
他にもゴッホの書いた絵画像を学習させ、普通の絵画像からゴッホ本人が書いたような絵の生成する例もあります。
では、この凄まじい能力のあるGANはどのような仕組みになっているのでしょうか。
難しい式を使わず説明していきます
###GANの仕組み
GANは日本語訳すると__敵対的生成ネットーワーク__と言います。この敵対的という言葉がまさにGANの仕組みを象徴している言葉になります。
GANは大きく分けて2つのネットワークで構成されています。
それは__識別器と生成器__です。
この2つの仕組みを理解できるとGANの仕組みをおおよそ理解できます。
GANによる画像生成の仕組みを簡単述べると、__識別器を騙せるほど本物そっくりに生成器が画像を生成する__です
例えばゴッホがかいたようなリアルな絵画を生成するとします。
生成器ではゴッホの絵画のような偽の画像を生成します。
識別器では生成器が生成した画像と本物の画像を見比べてどちらが本物なのか区別します。
そして生成器は、識別器が分類した結果のフィードバックを受け取り、より本物に近い画像を作れるように学習します
これを繰り返し行うことで識別器が本物か偽物か正しく判断できないような画像を生成器が生成できるようになります。
この識別器と生成器の関係性が敵対しているから敵対的生成ネットワークというのです。
生成器
<出力>
できるだけ本物に見える偽のサンプル
<目標>
識別器が本物と判断する偽のデータを生成すること
識別器
<出力>
入力サンプルが本物である推定確率
<目標>
生成器からくる偽のデータと、訓練データからくる本物のデータを見分けること