WIP GAN

machine-learning

Generative adversarial networks

  • Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
  • 10 Jun 2014
  • https://arxiv.org/abs/1406.2661

定式化

\begin{aligned}
V(D, G) &= \mathbb{E}_{x \sim p_{\mathrm{data}}}\left[ \ln \varsigma(D(x)) \right] + \mathbb{E}_{x \sim p_{\mathrm{z}}}\left[ \ln \left(1 - \varsigma(D(G(z))) \right)\right] \\
  &= \mathbb{E}_{x \sim p_{\mathrm{data}}}\left[ \ln \varsigma(D(x)) \right] + \mathbb{E}_{x \sim p_{\mathrm{g}}}\left[ \ln \left(1 - \varsigma(D(x)) \right)\right] \\
\end{aligned}

としたとき、ある generator に対して $V(D, G)$ を最大化する discriminator は $\varsigma(D^{*}(x)) = \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}$ となる。

そのため

\begin{aligned}
V(D, G)
 &= \mathbb{E}_{x \sim p_{\mathrm{data}}}\left[ \ln \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)} \right] + \mathbb{E}_{x \sim p_{\mathrm{g}}}\left[ \frac{p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)} \right] \\
 &= \mathcal{D}_{KL}\left(p_{\mathrm{data}} \parallel \frac{p_{\mathrm{data}} + p_{g}}{2}\right) + \mathcal{D}_{KL}\left(p_{g} \parallel \frac{p_{\mathrm{data}} + p_{g}}{2}\right) - \ln 4 \\
 &= 2 \mathcal{D}_{\mathrm{JS}}(p_{\mathrm{data}} \parallel p_{g}) - \ln 4
\end{aligned}

となり、generator における $V(D, G)$ の最小化は $\mathcal{D}_{\mathrm{JS}}(p_{\mathrm{data}} \parallel p_{g})$ の最小化と同値となる。

また

\begin{aligned}
\varsigma(D^{*}(x)) &= \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)} \\
\Leftrightarrow \frac{1}{1 + e^{-D^{*}(x)}} &= \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)} \\
\Leftrightarrow 1 + e^{-D^{*}(x)} &= \frac{p_{\mathrm{data}}(x) + p_{g}(x)}{p_{\mathrm{data}}(x)} \\
\Leftrightarrow e^{-D^{*}(x)} &= \frac{p_{\mathrm{data}}(x) + p_{g}(x)}{p_{\mathrm{data}}(x)} - \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)} \\
\Leftrightarrow D^{*}(x) &= \ln \frac{p_{\mathrm{data}}(x)}{p_{g}(x)}
\end{aligned}

となり、対数密度比を学習していることになる。

Boundary-seeking GANs

  1. R Devon Hjelm, Athul Paul Jacob, Tong Che, Kyunghyun Cho, Yoshua Bengio. 2017. Boundary-Seeking Generative Adversarial Networks.
  2. Boundary Seeking GAN

導出

対数密度比が 0 になるように

\begin{aligned}
\min_{G} \mathbb{E}_{x \sim p_{g}} \left[ \ln^{2}\frac{\varsigma\left(D(x)\right)}{1 - \varsigma\left(D(x)\right)} \right]
 &= \min_{G} \mathbb{E}_{x \sim p_{g}} \left[ \ln^{2}\frac{\frac{1}{1+e^{-D(x)}}}{1 - \frac{1}{1+e^{-D(x)}}} \right] \\
 &= \min_{G} \mathbb{E}_{x \sim p_{g}} \left[ D^{2}(x) \right] \\
\end{aligned}

を generator で最小化する。

Least squares generative adversarial networks

  • Xudong Mao, Qing Li, Haoran Xie, Raymond Y.K. Lau, Zhen Wang, Stephen Paul Smolley
  • 13 Nov 2016
  • https://arxiv.org/abs/1611.04076

導出

generator を固定したとき

\frac{1}{2} \mathbb{E}_{x\sim p_{\mathrm{data}}}[(D_{\phi}(x)-b)^{2}] + \frac{1}{2} \mathbb{E}_{x\sim p_{g}}[(D_{\phi}(x)-a)^{2}]

を最小化する discriminator は

D^{*}(x) = \frac{b p_{\mathrm{data}}(x) + a p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}

となる。

最適な discriminator を固定したとき

\mathbb{E}_{x\sim p_{\mathrm{data}}}[(D^{*}(x)-c)^{2}] + \mathbb{E}_{x\sim p_{g}}[(D^{*}(x)-c)^{2}]

を最小化する generator は

\begin{aligned}
&= \mathbb{E}_{x\sim p_{\mathrm{data}}}\left[\left(\frac{b p_{\mathrm{data}}(x) + a p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}-c\right)^{2}\right] + \mathbb{E}_{x\sim p_{g}}\left[\left(\frac{b p_{\mathrm{data}}(x) + a p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}-c\right)^{2}\right]\\
&= \int_{\mathcal{X}} dx: p_{\mathrm{data}}(x) \left(\frac{(b-c) p_{\mathrm{data}}(x) + (a-c) p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}\right)^{2} + p_{g}(x) \left(\frac{(b-c) p_{\mathrm{data}}(x) + (a-c) p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}\right)^{2}\\
&= \int_{\mathcal{X}} dx: \frac{\left\{(b-c) p_{\mathrm{data}}(x) + (a-c) p_{g}(x)\right\}^{2}}{p_{\mathrm{data}}(x) + p_{g}(x)}\\
&= \int_{\mathcal{X}} dx: \frac{\left\{(b-c) [p_{\mathrm{data}}(x) + p_{g}(x)] - (b-a) p_{g}(x)\right\}^{2}}{p_{\mathrm{data}}(x) + p_{g}(x)}\\
\end{aligned}

ここで $b - c = 1 \wedge b - a = 2$ (たとえば $a = -1 \wedge b = 1 \wedge c = 0$) とすると

\begin{aligned}
&= \int_{\mathcal{X}} dx: \int_{\mathcal{X}} dx: \frac{\left[2 p_{g}(x) - \{p_{\mathrm{data}}(x) + p_{g}(x)\}\right]^{2}}{p_{\mathrm{data}}(x) + p_{g}(x)}\\
&= \chi_{\mathrm{Pearson}}^{2}(p_{\mathrm{data} + p_{g}} \parallel 2 p_{g})\\
\end{aligned}

と Pearson $\chi^{2}$ divergence の最小化したものに等しい。

考察

論文の例のように $a = 0 \wedge b = 1 \wedge c = 1$ とすると

D^{*}(x) = \frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}

となり、generator は

\begin{aligned}
\int_{\mathcal{X}} dx: \frac{p^{2}_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}
 &= \mathbb{E}_{x\sim p_{g}}\left[\frac{p_{g}(x)}{p_{\mathrm{data}}(x) + p_{g}(x)}\right]
\end{aligned}

を最小化することになる。これは $p_{g}(x)$ を最小化すれば達成できるので、あまりよくない気がする。

f-GAN: training generative neural samplers using variational divergence minimization

  • Sebastian Nowozin, Botond Cseke, Ryota Tomioka
  • 2 Jun 2016
  • https://arxiv.org/abs/1606.00709

導出

\begin{aligned}
\mathcal{D}_{f}(P \parallel Q)
 &= \int_{\mathcal{X}} dx: q(x) f\left(\frac{p(x)}{q(x)}\right)\\
 &\geq \sup_{T \in \mathcal{T}}\left\{\int_{\mathcal{X}}dx: p(x) T(x) - \int_{\mathcal{X}}dx: q(x) f^{*}(T(x))\right\}\\
 &= \sup_{T \in \mathcal{T}}\left\{\mathbb{E}_{x\sim P} T(x) - \mathbb{E}_{x\sim Q}f^{*}(T(x))\right\}
\end{aligned}
  • $f: \mathfrak{R}_{+} \rightarrow \mathfrak{R}$
    • generator function という (GAN の G とは関係ない)
    • $f(1) = 0$
    • 凸関数
  • $f^{*}(t) = \sup_{u \in \mathrm{dom}_{f}}\left\{u t - f(u)\right\}$
    • $f$ の凸共役な関数
    • $f^{**} = f$
    • $f(u) = \sup_{t \in \mathrm{dom}_{f^{*}}}\left\{t u - f^{*}(t)\right\}$

変分関数

F(\theta, \omega) = \mathbb{E}_{x \sim p_{\mathrm{data}}}\left[g_{f}(V_{\omega}(x))\right] + \mathbb{E}_{x \sim p_{G_{\theta}}}\left[-f^{*}\left(g_{f}(V_{\omega}(x)\right))\right]

  • D-step: $\omega$ (discriminator) について最大化
  • G-step: $\theta$ (generator) について最小化

する。

f-divergence $g_{f}(v)$ $f^{*}(t)$ $-f^{*}(g_{f}(v))$
Total Variation $\frac{1}{2}\tanh(v)$ $t$ $-\frac{1}{2}\tanh(v)$
Kullback-Leibler $v$ $e^{t-1}$ $-e^{v-1}$
Reverse KL $-e^{-v}$ $-1-\ln(-t)$ $1-v$
Person χ2 $v$ $t \left(\frac{t}{4}+1\right)$ $-v\left(\frac{v}{4}+1\right)$
Neyman χ2 $1-e^{-v}$ $2(1-\sqrt{1-t})$ $2(e^{-\frac{v}{2}}-1)$
Squared Hellinger $1-e^{-v}$ $\frac{t}{1-t}$ $1-e^{v}$
Jeffrey $v$ $W(e^{1-t}) + \frac{1}{W(e^{1-t})} + t - 2$ $2 - W(e^{1-t}) - \frac{1}{W(e^{1-t})} - t$
Jensen-Shannon $\ln \varsigma(v) + \ln 2$ $-\ln(2 - e^{t})$ $\ln\left\{1 - \varsigma(v)\right\} + \ln 2$
Jensen-Shannon Weighted $\ln\varsigma(v)-\pi\ln\pi$ $(1-\pi)\ln\frac{1-\pi}{1-\pi e^{\frac{t}{\pi}}}$ $-(1-\pi)\ln\frac{1-\pi}{1-\varsigma^{\frac{1}{\pi}}(v)}$
GAN $\ln \varsigma(v)$ $-\ln(1 - e^{t})$ $\ln\left\{1-\varsigma(v)\right\}$
α-div. ($\alpha < 1 \wedge \alpha \neq 0$) $\frac{1}{1-\alpha}-\ln(1+e^{-v})$ $\frac{1}{\alpha}\left\{t(\alpha-1)+1\right\}^{\frac{\alpha}{\alpha-1}} - \frac{1}{\alpha}$ $\frac{1}{\alpha}+\frac{1}{\alpha}\left\{\right(\alpha-1)\ln(1-e^{-v})\}^{\frac{\alpha}{\alpha-1}}$
α-div. ($\alpha > 1$) $v$ $\frac{1}{\alpha}\left\{t(\alpha-1)+1\right\}^{\frac{\alpha}{\alpha-1}} - \frac{1}{\alpha}$ $\frac{1}{\alpha} - \frac{1}{\alpha}\left\{v(\alpha-1)+1\right\}^{\frac{\alpha}{\alpha-1}}$
  • $W$: ランベルトのW関数
  • weighted JS: $D^{*}(x)^{\frac{1}{\pi}} = \frac{p(x)}{\pi p(x) + (1-\pi) q(x)}$ となる。
  • $g_{f}(v) = \ln 2 + \frac{1}{2} \ln \varsigma(v)$, $f^{*}(t) = -\frac{1}{2} \ln\left(4 - e^{2 t}\right)$ でも Jensen-Shannon divergence は導出できるのでは?

Generative adversarial nets from a density ratio estimation perspective

  • Masatoshi Uehara, Issei Sato, Masahiro Suzuki, Kotaro Nakayama, Yutaka Matsuo
  • 10 Oct 2016
  • https://arxiv.org/abs/1610.02920

b-GAN

導出

$r(x)=\frac{p(x)}{q(x)}$ を推定する。測度 $q(x) dx$ の元でベングマン・ダイバージェンス $\mathfrak{B}[r(x) \parallel r_{\theta}(x)]$ を最小化する。

\int dx: q(x) \mathfrak{B}[r(x) \parallel r_{\theta}(x)]
 = \int dx: q(x) \left\{f[r(x)] - f[r_{\theta}(x)] - f'[r_{\theta}(x)] [r(x) - r_{\theta}(x)] \right\}

$\theta$ に無関係な項を省略すると

\begin{aligned}
&= \int dx: q(x) \left\{-f[r_{\theta}(x)] - f'[r_{\theta}(x)] r(x) + f'[r_{\theta}(x)] r_{\theta}(x) \right\} \\
&= \int dx: q(x) \left\{ f'[r_{\theta}(x)] r_{\theta}(x) - f[r_{\theta}(x)] \right\} - p(x) f'[r_{\theta}(x)] \\
&= \mathbb{E}_{x\sim q(x)} \left\{ f'[r_{\theta}(x)] r_{\theta}(x) - f[r_{\theta}(x)] \right\} - \mathbb{E}_{x \sim p(x)} \left\{ f'[r_{\theta}(x)]\right\} \\
\end{aligned}

となる。

また

= \int dx: f'[r_{\theta}(x)] [r_{\theta}(x) q(x) - p(x)] - \mathcal{D}_{f}(q r_{\theta} \parallel q)

でもある。これは

\mathbb{E}\left[f\left(\frac{p}{q}\right)\right] = \sup_{\theta} \mathbb{E}_{x \sim p(x)} \left\{ f'[r_{\theta}(x)]\right\} - \mathbb{E}_{x\sim q(x)} \left\{ f'[r_{\theta}(x)] r_{\theta}(x) - f[r_{\theta}(x)] \right\}

なので、D-step ではこれを $\theta$ について最大化する。G-step では

-\mathbb{E}_{x\sim q(x)} \left\{ f'[r_{\theta}(x)] r_{\theta}(x) - f[r_{\theta}(x)] \right\}

あるいは

-\mathbb{E}_{x\sim q(x)} \left\{ f'[r_{\theta}(x)]\right\}

を最小化する。

Improved Training of Wasserstein GANs

  • Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, Aaron Courville
  • https://arxiv.org/abs/1704.00028

擬似コード

input:
  B: the batch size
  lambda: the gradient penalty (=10)
  nc: the number of critic iterations per generator iteration (=5);
initialize generator parameters theta
   and discriminator parameters phi;
while True:
  for _ in range(nc):
    sample a minibatch:
      x[i] ~ P(X)
      z[j] ~ N(Z)
    t = np.random.rand((B,))
    x_hat = lerp(x, G(z; theta), t)

    update the discriminator:
      lambda (|nabla_{x_hat} D(x_hat; phi)| - 1) ** 2
        - D(x; phi)
        + D(G(z; theta); phi) -> min; phi

  sample a minibatch:
    z[j] ~ N(Z)
  update the generator:
    -D(G(z; theta); phi) -> min; theta

How to Train Your DRAGAN

  • Naveen Kodali, Jacob Abernethy, James Hays, Zsolt Kira
  • https://arxiv.org/abs/1705.07215

擬似コード

input:
  B: the batch size
  lambda: the gradient penalty (=10)
  C: perturbation parameter (=0.5);
initialize generator parameters theta
   and discriminator parameters phi;
while True:
  sample a minibatch:
    x[i] ~ P(X)
    z[j] ~ N(Z)
  t = np.random.rand((B,)) * C
  x_hat = x + np.std(x, axis=0, keepdims=True) * t

  update the discriminator:
    lambda (|nabla_{x_hat} D(x_hat; phi)| - 1) ** 2
      - ln[D(x; phi)]
      - ln[1 - D(G(z; theta); phi)] -> min; phi
  update the generator:
    ln[1 - D(G(z, theta); phi)] -> min; theta

Fisher GAN

  • Youssef Mroueh, Tom Sercu
  • https://arxiv.org/abs/1705.09675

定式化

d_{\mathcal{D}}(\mathbb{P}, \mathbb{Q})
  = \mathrm{sup}_{D \in \mathcal{D}}
    \frac{\mathbb{E}_{x \sim \mathbb{P}} D(x) - \mathbb{E}_{x \sim \mathbb{Q}} D(x)}{\sqrt{\frac{1}{2} \mathbb{E}_{x \sim \mathbb{P}} D^{2}(x) - \frac{1}{2} \mathbb{E}_{x \sim \mathbb{Q}} D^{2}(x)}}

と定義される Fisher IPM (Integral Probability Metric) を使う (これじたはレイリー商の形になっている)。

学習時には

d_{\mathcal{D}}(\mathbb{P}, \mathbb{Q})
  \equiv \frac{1}{N} \sum_{i=1}^{N} D(x_{i}; \phi)
       - \frac{1}{M} \sum_{j=1}^{M} D(g(z_{j}; \theta); \phi)

を $\frac{1}{2} \hat{\Omega}(D_{\phi}, G_{\theta}) = 1$ の条件の下で最大化する。

\hat{\Omega}(D_{\phi}, G_{\theta})
  = \frac{1}{N} \sum_{i=1}^{N} D^{2}(x_{i}; \phi)
  + \frac{1}{M} \sum_{j=1}^{M} D^{2}(G(z_{j}; \theta); \phi)

制約つき最適化には、ラグランジュの未定乗数法を使う。

擬似コード

input:
  B: the batch size
  rho: penalty weight (=3e-7/2)
  nc: number of iterations for training the critic (=5);
initialize generator parameters theta
   and discriminator parameters phi
   and Lagrange multiplier lambda=0;
while True:
  for _ in range(nc):
    sample a minibatch:
      x[i] ~ P(X)
      z[j] ~ N(Z)
    Omega = np.mean(D(x; phi) ** 2 + D(G(z; theta); phi) ** 2) / 2

    update the discriminator:
      lambda (Omega - 1) + rho * (Omega - 1) ** 2
        - D(x; phi)
        + D(G(z; theta); phi) -> min; phi and lambda
  sample a minibatch:
    z[j] ~ N(Z)
  update the generator:
    -D(G(z; theta); phi) -> min; theta

The Cramer distance as a solution to biased Wasserstein gradients

  • Marc G. Bellemare, Ivo Danihelka, Will Dabney, Shakir Mohamed, Balaji Lakshminarayanan, Stephan Hoyer, Rémi Munos
  • https://arxiv.org/abs/1705.10743

定式化

Cramér 距離を使う。

l_{p}(\mathbb{P}, \mathbb{Q}) \equiv \left( \int_{-\infty}^{\infty} dx: \left| F_{\mathbb{P}}(x) - F_{\mathbb{Q}}(x) \right|^{p} \right)^{\frac{1}{p}}

$p=1$ で Wasserstein 距離, $p=2$ で Cramér 距離になる。ここで、$F_{\mathbb{P}}(\cdot)$ および $F_{\mathbb{Q}}(\cdot)$ は、そえぞれ確率分布 $\mathbb{P}$ および $\mathbb{Q}$ の累積密度関数である。ちなみに p-Wasserstein 距離は

w_{p}(\mathbb{P}, \mathbb{Q}) \equiv \left( \int_{0}^{1} du: \left| F_{\mathbb{P}}^{-1}(u) - F_{\mathbb{Q}}^{-1}(u) \right|^{p} \right)^{\frac{1}{p}}

と定義される。

最適化では、Cramér 距離の代わりに Energy distance を使う。

\mathcal{E}(P, Q) \equiv
  2 \mathbb{E}\| X - Y \|_{2}
  - \mathbb{E}\| X - X' \|_{2}
  - \mathbb{E}\| Y - Y' \|_{2}

ここで $\mathcal{E}(P, Q) = 2 l_{2}^{2}(P, Q)$ と同じ意味になる。

擬似コード

input:
  B: the batch size
  lambda: the gradient penalty (=10);
initialize generator parameters theta
   and discriminator parameters phi;
while True:
  sample a minibatch:
    x[i] ~ P(X)
    z[j] ~ N(Z)
    y[k] ~ N(Z)
  t = np.random.rand((B,))
  x_hat = lerp(x, G(z; theta), t)

  update the discriminator:
    lambda (|nabla_{x_hat} D(x_hat; phi)| - 1) ** 2
      - |D(  x        ; phi) - D(G(y; theta); phi)|_{2}
      + |D(G(z; theta); phi) - D(G(y; theta); phi)|_{2}
      + |D(  x        ; phi)                      |_{2}
      + |D(G(z; theta); phi)                      |_{2} -> min; phi
  update the generator:
      |D(x; phi)           - D(G(z; theta); phi)|_{2}
    + |D(x; phi)           - D(G(y; theta); phi)|_{2}
    - |D(G(z; theta); phi) - D(G(y; theta); phi)|_{2} -> min; theta

備考

問題あるのではという指摘がある

MMD GAN: towards deeper understanding of moment matching network

  • Chun-Liang Li, Wei-Cheng Chang, Yu Cheng, Yiming Yang, Barnabás Póczos
  • https://arxiv.org/abs/1705.08584

定式化

Maximum Mean Discrepancy を利用する。

\mathrm{MMD}^2(\mathbb{P}, \mathbb{Q})
  = \mathbb{E}_{x \in \mathbb{P}, x' \in \mathbb{P}} k(x, x')
  + \mathbb{E}_{y \in \mathbb{Q}, y' \in \mathbb{Q}} k(y, y')
  - \mathbb{E}_{x \in \mathbb{P}, y' \in \mathbb{Q}} k(x, y')
  - \mathbb{E}_{x' \in \mathbb{P}, y \in \mathbb{Q}} k(x', y)

ここで $k_{a}(x, y) = \exp\left(-a \|x - y \|^{2} \right)$ である。

学習時は

M_{D_{\phi}}(\{x_{i}\}, \{y_{j}\})
  = \frac{1}{\left( \begin{array}{c} n \\ 2 \end{array} \right)} \sum_{i \neq i'} k_{1}\left(D(x_{i}; \phi), D(x_{i'}; \phi)\right)
  - \frac{2}{\left( \begin{array}{c} n \\ 2 \end{array} \right)} \sum_{i \neq j} k_{1}\left(D(x_{i}; \phi), D(y_{j}; \phi)\right)
  + \frac{1}{\left( \begin{array}{c} n \\ 2 \end{array} \right)} \sum_{j \neq j'} k_{1}\left(D(y_{j}; \phi), D(y_{j'}; \phi)\right)

を使う。

擬似コード

input:
  B: the batch size
  lambda: the gradient penalty
  nc: the number of iterations of discriminator per generator update
  c: clipping parameter
  alpha; kernel parameter
initialize generator parameter theta
   and discriminator parameter phi;
while True:
  for t in range(nc):
    sample a minibatch:
      x[i] ~ P(X)
      z[j] ~ N(Z)
    update the discriminator:
      lambda |x - D^{-1}(D(x; phi))|^{2}
        + |G(z; theta) - D^{-1}(D(G(z; theta); phi))|^{2}
        - M_{D_{\phi}}(x, G(z; theta)) -> min; phi
    phi <- clip(phi, -c, c)

  sample a minibatch:
    x[i] ~ P(X)
    z[j] ~ N(Z)
  update the generator:
    M_{D_{\phi}}(x, G(z; theta)) -> min; theta

$D^{-1}$ は Discriminator を Autoencoder として構成して実現する。

VEEGAN: reducing mode collapse in GANs using implicit variational learning

  • Akash Srivastava, Lazar Valkov, Chris Russell, Michael Gutmann, Charles Sutton
  • https://arxiv.org/abs/1705.07761

定式化

  • $q_{\gamma}(x)$ なるサンプリング可能な分布を獲得したい。
    • $x$ は画像や音声などのデータ
    • 真の (観測不可能な) データの分布は $p(x)$ と表記することとする。
  • 決定的な generator network $G_{\gamma}$ を獲得して $G_{\gamma}(Z) \sim q_{\gamma}(x)$ とする構成を考える。
    • ただし $Z \sim \mathcal{N}(0, I)$ とする。
    • つまり $G_{\gamma}$ は標準正規分布にしたがう確率変数を $x$ に写像する。
  • $G_{\gamma}$ とは逆に $x$ を標準正規分布にしたがうサンプルに写像する reconstructor network $F_{\theta}$ を考える。
    • $F_{\theta}(X) \sim \mathcal{N}(0, I)$ ただし $X \sim p(x)$ としたい。
    • 再構成誤差 $d(z, F_{\theta}(x)) \geq 0$ (ユークリッド距離の二乗を使う) を最小化するように学習する。
  • 標準正規分布との KL ダイバージェンスを最小化するように discriminator network $D_{\omega}$ を作る。
    • $p_{\theta}(z) = \int dx: p_{\theta}(z \mid x) p(x)$
    • $p_{\theta}(z \mid x)$ を $F_{\theta}$ で構成する。
\begin{aligned}
\mathcal{D}_{\mathrm{KL}}(Z \parallel F_{\theta})
 &= \int dz: \mathcal{N}(z) \ln \frac{\mathcal{N}(z)}{p_{\theta}(z)} \\
 &= \int dz: \mathcal{N}(z) \ln \int dx: \frac{\mathcal{N}(z)}{p_{\theta}(z \mid x) p(x)} \\
 &= \int dz: \mathcal{N}(z) \ln \int dx: \frac{\mathcal{N}(z)}{p_{\theta}(z \mid x) p(x)} \frac{q_{\gamma}(x \mid z)}{q_{\gamma}(x \mid z)} \\
 &\leq \int dz: \mathcal{N}(z) \int dx: q_{\gamma}(x \mid z) \ln \frac{q_{\gamma}(x \mid z) \mathcal{N}(z)}{p_{\theta}(z \mid x) p(x)} \\
 &= \int dz: \int dx: q_{\gamma}(x \mid z) \mathcal{N}(z) \ln \frac{q_{\gamma}(x \mid z) \mathcal{N}(z)}{p_{\theta}(z \mid x) p(x)} \\
 &= \mathcal{D}_{\mathrm{KL}}\left[ q_{\gamma}(x \mid z) \mathcal{N}(z) \parallel p_{\theta}(z \mid x) p(x) \right] \\
 &\leq \mathcal{D}_{\mathrm{KL}}\left[ q_{\gamma}(x \mid z) \mathcal{N}(z) \parallel p_{\theta}(z \mid x) p(x) \right] + \mathbb{E}_{\mathcal{N}(z)} d(z, F_{\theta}(x)) \\
\end{aligned}

この上限 $\mathcal{D}_{\mathrm{KL}}\left[ q_{\gamma}(x \mid z) \mathcal{N}(z) \parallel p_{\theta}(z \mid x) p(x) \right] + \mathbb{E}_{\mathcal{N}(z)} d(z, F_{\theta}(x))$ を最小化する。

$\ln \varsigma(D_{\omega}(z, x)) + \ln \left\{1 - \varsigma(D_{\omega}(z, x))\right\}$ を最大化すると

\varsigma(D_{\omega}(z, x)) = \frac{p_{\theta}(z \mid x) p(x)}{p_{\theta}(z \mid x) p(x) + q_{\gamma}(x \mid z) \mathcal{N}(z)}

が獲得されるので、$D_{\omega}(z, x) = \ln \frac{q_{\gamma}(x \mid z) \mathcal{N}(z)}{p_{\theta}(z \mid x) p(x)}$ (対数密度比) を学習していることになる。

擬似コード

while True:
  sample a minibatch:
    x[i] ~ p(X)
    z[i] ~ N(Z)
    x_g[i] = G_gamma(z[i])
    z_g[i] = F_theta(x[i])

  update discriminator:
    -ln sigmoid(D_omega(z[i], x_g[i])) - \ln (1 - sigmoid(D_omega(z_g[i], x[i]))) -> min; omega

  update reconstructor:
    d(z[i], x_g[i]) -> min; theta

  update generator:
    d(z[i], x_g[i]) + D_omega(z[i], x_g[i]) -> min; gamma

Information maximizing GANs

  1. Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, Pieter Abbeel. 2016. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
  2. InfoGAN: unsupervised conditional GAN in TensorFlow and Pytorch

導出

InfoGANs は、相互情報量 $I(c ; G(z, c))$ を最大化して、$c$ と $G(z, c)$ に従属関係を埋め込む GAN。

\begin{aligned}
I(X; Y) &= H(X) - H(X \mid Y) \\
        &= H(Y) - H(Y \mid X)
\end{aligned}

そのままでは解けないので、変分相互情報量を最大化する問題とする。

\begin{aligned}
I(c; G(z, c))
  &= H(c) - H(c \mid G(z, c)) \\
  &= H(c) + \mathbb{E}_{x \sim G(z, c)}\left[ \mathbb{E}_{c' \sim P(c \mid x)}  \left[ \ln P(c' \mid x) \right] \right] \\
  &= H(c) + \mathbb{E}_{x \sim G(z, c)}\left[ \mathbb{E}_{c' \sim P(c \mid x)} \left[ \ln Q(c' \mid x) \right] + D_\mathrm{KL}(P(c' \mid x) \parallel Q(c' \mid x)) \right] \\
  &\geq H(c) + \mathbb{E}_{x \sim G(z, c)}\left[ \mathbb{E}_{c' \sim P(c \mid x)}  \left[ \ln Q(c' \mid x) \right] \right] \\
  &= H(c) + \mathbb{E}_{c \sim P(c), x \sim G(z, c)}\left[ \ln Q(c \mid X) \right] \\
\end{aligned}

より (ここで、$D_\mathrm{KL}(P(c’ \mid x) \parallel Q(c’ \mid x)) \geq 0$ を使った)

L_{I}(G, Q) = \frac{1}{N} \sum_{i=1}^{N} \ln Q(c \mid x)

を最大化すればよいことになる。

ベルヌーイ型

$c$ がカテゴリ変数の場合、$p = Q(x)$ と $Q(c \mid x)$ のパラメータを推定するニューラルネットとすると、$Q(c \mid x) = \prod_{k=1}^{K} p_{k}^{c_{k}}$ となるので

L_{I}(G, Q) = \frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} c_{k} \ln p_{k}

と、負の交差エントロピーを最大化すればよい。

ガウシアン型

$c$ が連続変数の場合、ベルヌーイ型と同様に求められる。

あとで書く

Semi-supervised learning with deep generative models

  1. Diederik P. Kingma, Danilo J. Rezende, Shakir Mohamed, Max Welling. 2014. Semi-supervised learning with deep generative models.
  2. http://musyoku.github.io/2016/07/02/semi-supervised-learning-with-deep-generative-models/

ラベル付きデータ

\begin{aligned}
\ln p_{\theta}(\vec{x}, y)
  &= \left[\ln p_{\theta}(\vec{x}, y)\right] \left[ \int q_{\phi}(\vec{z} \mid \vec{x}, y) d\vec{z} \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)} \left[\ln p_{\theta}(\vec{x}, y) \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{p_{\theta}(\vec{z} \mid \vec{x}, y)}
                   {p_{\theta}(\vec{z} \mid \vec{x}, y)} p_{\theta}(\vec{x}, y) \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{p_{\theta}(\vec{x}, y, \vec{z})}
                   {p_{\theta}(\vec{z} \mid \vec{x}, y)} \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{p_{\theta}(\vec{x}, y, \vec{z})}
                   {p_{\theta}(\vec{z} \mid \vec{x}, y)}
              \frac{q_{\phi}(\vec{z} \mid \vec{x}, y)}
                   {q_{\phi}(\vec{z} \mid \vec{x}, y)} \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{q_{\phi}(\vec{z} \mid \vec{x}, y)}
                   {p_{\theta}(\vec{z} \mid \vec{x}, y)} \right]
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{p_{\theta}(\vec{x}, y, \vec{z})}
                   {q_{\phi}(\vec{z} \mid \vec{x}, y)} \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z} \mid \vec{x}, y))
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{p_{\theta}(y) p_{\theta}(\vec{z}) p_{\theta}(\vec{x} \mid \vec{z}, y)}
                   {q_{\phi}(\vec{z} \mid \vec{x}, y)} \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z} \mid \vec{x}, y))
   - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}
    \left[\ln \frac{q_{\phi}(\vec{z} \mid \vec{x}, y)}
                   {p_{\theta}(\vec{z})} \right]
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(y) \right]
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(\vec{x} \mid \vec{z}, y) \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z} \mid \vec{x}, y))
   - D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z}))
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(y) \right]
   + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(\vec{x} \mid \vec{z}, y) \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z} \mid \vec{x}, y))
   - L(\theta, \phi; \vec{x}, y)
\end{aligned}
L(\theta, \phi; \vec{x}, y)
   = D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z}))
   - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(y) \right]
   - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[\ln p_{\theta}(\vec{x} \mid \vec{z}, y) \right]

ラベルなしデータ

\begin{aligned}
\ln p_{\theta}(\vec{x})
  &= \left[ \ln p_{\theta}(\vec{x}) \right] \left\{ \int q_{\phi}(y \mid \vec{x}) \left[ \int q_{\phi}(\vec{z} \mid \vec{x}, y) d\vec{z} \right] dy \right\} \\
  &= \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln p_{\theta}(\vec{x})
      \right]
    \right] \\
  &= \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{p_{\theta}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{z}, y \mid \vec{x})} p_{\theta}(\vec{x})
      \right]
    \right] \\
  &= \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{p_{\theta}(\vec{x}, y, \vec{z})}
                 {p_{\theta}(\vec{z}, y \mid \vec{x})}
      \right]
    \right] \\
  &= \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{p_{\theta}(\vec{x}, y, \vec{z})}
                 {p_{\theta}(\vec{z}, y \mid \vec{x})}
            \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {q_{\phi}(\vec{z}, y \mid \vec{x})}
      \right]
    \right] \\
  &= \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{z}, y \mid \vec{x})}
      \right]
    - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{x}, y, \vec{z})}
      \right]
    \right] \\
  &= \mathbb{E}_{q_{\phi}(\vec{z}, y \mid \vec{x})}\left[
        \ln \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{z}, y \mid \vec{x})}
      \right]
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{x}, y, \vec{z})}
      \right]
    \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z}, y \mid \vec{x}) \parallel p_{\theta}(\vec{z}, y \mid \vec{x}))
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{q_{\phi}(\vec{z}, y \mid \vec{x})}
                 {p_{\theta}(\vec{x}, y, \vec{z})}
      \right]
    \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z}, y \mid \vec{x}) \parallel p_{\theta}(\vec{z}, y \mid \vec{x}))
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln \frac{q_{\phi}(\vec{z} \mid \vec{x}, y) q_{\phi}(y \mid \vec{x})}
                 {p_{\theta}(\vec{x} \mid \vec{z}, y) p_{\theta}(\vec{z}) p_{\theta}(y)}
      \right]
    \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z}, y \mid \vec{x}) \parallel p_{\theta}(\vec{z}, y \mid \vec{x}))
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      D_\mathrm{KL}(q_{\phi}(\vec{z} \mid \vec{x}, y) \parallel p_{\theta}(\vec{z}))
    - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln p_{\theta}(\vec{x} \mid \vec{z}, y)
      \right]
    - \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln p_{\theta}(y)
      \right]
    + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln q_{\phi}(y \mid \vec{x})
      \right]
    \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z}, y \mid \vec{x}) \parallel p_{\theta}(\vec{z}, y \mid \vec{x}))
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      L(\theta, \phi; \vec{x}, y)
    + \mathbb{E}_{q_{\phi}(\vec{z} \mid \vec{x}, y)}\left[
        \ln q_{\phi}(y \mid \vec{x})
      \right]
    \right] \\
  &= D_\mathrm{KL}(q_{\phi}(\vec{z}, y \mid \vec{x}) \parallel p_{\theta}(\vec{z}, y \mid \vec{x}))
    - \mathbb{E}_{q_{\phi}(y \mid \vec{x})}\left[
      L(\theta, \phi; \vec{x}, y)
    \right]
    - \mathcal{H}\left[q_{\phi}(y \mid \vec{x}) \right]
\end{aligned}