Generative Adversarial Nets (GAN)というディープニューラルネットワークで生成モデルを学習するアルゴリズムがある。 これまでのアルゴリズムに比較して特に画像生成で精細なサンプルが得られることから、現在非常に注目されている技術である。 個人的には第3次ニューラルネットワークブーム最大の発明なんじゃないかという気がしている。
一方で、GANはその学習方法が非常に特殊であり、また対数尤度のように明確な指標が存在しないため学習が非常に難しく、そもそも何を最適化しているのかよくわからないという問題がある。 こうした現状から、学習目的の解釈性を高める/学習を容易にするというモチベーションでGANの目的関数に修正を加える研究が雨後の竹の子のように日々量産されている。
GANの目的関数を一般化した形で書き直す、修正を加えるといった一連の研究の中で、その契機なったのではないかと個人的に思っている論文が “f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization” だ。 著者はSebastian Nowozin, Botond Cseke, Ryota Tomiokaの3人でNIPS2016に採択されている。 論文の概要としては、GANで行われている学習、敵対的学習のアプローチがより一般のdivergenceの変分推論アプローチの特殊な場合に対応することを示すというものである。 これによりGANの学習に任意のf-divergenceが使用可能になる。
Generative Adversarial Network
GANは以下の目的関数
minGmaxDV(D, G) = minGmaxD{𝔼x ∼ P(x)[logD(x)]+𝔼z ∼ pz(z)[log(1−D(G(z)))]},
を生成ニューラルネットワークGと識別ニューラルネットワークDについて交互に最適化する。 上の式はDの入力がデータ由来なのかG由来なのかを判別するcross-entropy lossと解釈可能で、 Gは上の式を最小化する。つまりDを騙すように学習することでデータ分布に近づく。 この学習則を模式化すると以下の図のようになる。

任意のGに対して以下のように目的関数を変形して、
$$\begin{aligned} V(D, G) &= \int_{\mathbf{x}} P(\mathbf{x}) \log D(\mathbf{x}) dx + \int_{\mathbf{z}} p_{\mathbf{z}}(\mathbf{z}) \log( 1 - D(G(\mathbf{z})) ) dz \\ &= \int_{\mathbf{x}} P(\mathbf{x}) \log D(\mathbf{x}) + Q(\mathbf{x}) \log( 1 - D(\mathbf{x}) ) dx. \end{aligned}$$
上の式に関して、任意の実数の組(a, b) ∈ ℝ2 ∖ {0,0}について関数y → alog (y) + blog (1 − y)は最大値$\frac{a}{a+b}$を取ることを利用すれば、最適なDは
$$ D^*_G(\mathbf{x}) = \frac{P(\mathbf{x})}{P(\mathbf{x})+Q(\mathbf{x})}, $$
で与えられる。 なお、ここでQはz ∼ pzのときのG(z)が従う分布である。 得られた最適なDの下での生成ニューラルネットワークGのコストC(G)は以下の様に計算できる。
$$\begin{aligned} C(G) &= V(D, G) |_{D=D^*_G} \\ &= \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})} \left[ \log D^*_G(\mathbf{x}) \right] + \mathbb{E}_{ \mathbf{z} \sim p_{\mathbf{z}}(\mathbf{z}) } \left[ \log( 1 - D^*_G(G(\mathbf{z})) ) \right] \\ &= \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})} \left[ \log D^*_G(\mathbf{x}) \right] + \mathbb{E}_{ \mathbf{x} \sim Q(\mathbf{x}) } \left[ \log( 1 - D^*_G(\mathbf{x}) ) \right] \\ &= \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})} \left[ \log \frac{P(\mathbf{x})}{P(\mathbf{x})+Q(\mathbf{x})} \right] + \mathbb{E}_{ \mathbf{x} \sim Q(\mathbf{x}) } \left[ \log \frac{Q(\mathbf{x})}{P(\mathbf{x})+Q(\mathbf{x})} \right]. \end{aligned}$$
最適なDはQ = Pのとき$\frac{1}{2}$を取ることを利用して変形すれば、
$$\begin{aligned} C(G) &= \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})} \left[ \log \frac{P(\mathbf{x})}{P(\mathbf{x})+Q(\mathbf{x})} \right] + \mathbb{E}_{ \mathbf{x} \sim Q(\mathbf{x}) } \left[ \log \frac{Q(\mathbf{x})}{P(\mathbf{x})+Q(\mathbf{x})} \right] + \log 4 - \log 4 \\ &= - \log 4 + D_{\mathrm{KL}}\left( P \bigg\| \frac{P+Q}{2} \right) + D_{\mathrm{KL}}\left( Q \bigg\| \frac{P+Q}{2} \right) \\ &= - \log 4 + 2 \cdot D_{\mathrm{JS}} (P \| Q), \end{aligned}$$
となり、Jensen-Shannon divergenceの非負性よりGの最小値はQ = Pのときに得られる。 また、以上の計算よりGANは真のデータ分布Pと生成モデルQの間のJensen-Shannon divergenceを最小化していることがわかる。