概要

卒論でGANを利用した研究をやったので,GANについての理論をできるだけシンプルに説明してみる. 詳しいことは元論文や,その他解説論文を参照.

Generative Adversarial Nets (GANs)

生成モデルには様々な手法が提案されているが, 中でも変分オートエンコーダ (Variational Autoencoders; VAEs)等,深層学習を用いた手法は強力である.
Generative Adversarial Nets (GANs) もまたその一つである.

GANsは2つのネットワークを敵対的に学習させ, 複雑なデータ分布に対してもうまく働くことが実験的に示されている強力な生成モデルである. まず,これら2つのネットワークを Discriminator , Generator とし,学習データ,すなわち真のデータ分布を , Generatorによる生成分布を とする. このとき,この手法の目的は 生成分布 をデータ分布 に近づけるようにGeneratorを学習し, 最終的に生成分布がデータ分布を完全に再現する ようになることである.

Generatorは,ある既知の分布から生成された をもとに,データ空間への写像を行う. すなわち,乱数から”偽の”データサンプル を生成する. このときDiscriminatorはこれらを入力として,それが によるものかどうかという 確率を出力する.つまり,入力データの由来がデータ分布と生成分布どちらによるものかを 判別 (discrimination) できるようになることを目的として学習を行う.対してGeneratorは, 生成したデータによる判別結果 を欺くように (データ分布とみなせるように) 学習を行う. 以上を言い換えると,以下のminimax gameを解くことと同義となる

\begin{align} \min_G \max_D V(D, G) = \mathbb{E}_{q(\boldsymbol{x})}[\log(D(\boldsymbol{x}))] + \mathbb{E}_{p(\boldsymbol{z})}[\log(1-D(G(\boldsymbol{z})))]. \end{align}

ここでGeneratorを固定すると,最適なDiscriminatorは以下のように書くことができる (証明は元論文参照)

\begin{align} D^*(\boldsymbol{x}) = \frac{q(\boldsymbol{x})}{q(\boldsymbol{x})+p(\boldsymbol{x})}. \end{align}

このとき,上の式は以下のように表せる

とすると となるので,これを利用すると, は \begin{align} C(G) = -\log 4 + 2JSD\left(q||p\right) \end{align}

と書ける. ここで のJensen-Shannonダイバージェンスを表すが, このことから は生成分布がデータ分布に等しくなったときに最小になることがわかる. すなわちGANsはモデルの生成分布と真のデータ分布とのJensen-Shannon ダイバージェンスの最小化を行っている,とみなすことができる.