ABEJA Tech Blog

株式会社ABEJAのエンジニアたちがAI, IoT, Big Dataなど様々なテーマについて発信します

タカハシ春の GAN 祭り!〜 一日一GAN(๑•̀ㅂ•́)و✧ 〜

f:id:taka_t0m0:20170530141554j:plain

ABEJAでリサーチャーをしています高橋です。

昨今 deep learning 界隈では Generative Adversarial Net(GAN) が流行っていて、世はまさにガンガン行こうぜ時代ですね。

GAN を用いると綺麗な絵が作成できたり二つの絵の中間のような絵を生成できたりします。例えばこの論文のような感じです。このように GAN は有用なモデルである一方、最近の GAN では急によくわからない式が出てきたりするので、勉強も兼ねて「一日一GAN」をやってみました。今回読んだ論文のリストは以下です。

それぞれの論文の概要と自分なりの考察を報告できればと思います! 論文を読む前や読んでいる途中に参考になったなら幸いです。

一応実装も行い こちらで公開していますが、パラメータの調節などはしておらずそのままでうまくいかなさそうである旨ご了承ください。今後各 GAN の比較実験を行なった際には、その結果や使い勝手なども報告できればと考えています。一日一GANでパラメータ調節や比較実験までやるのは厳しかったです。

本筋に入る前に


GAN の 概要

本筋に入る前に GAN について説明します。

GAN のたとえ話

数式で説明する前に、GAN の学習過程についてよくあるたとえ話を述べたいと思います。

GAN で行なっていることは、贋作師と真贋鑑定士の対決、つまりガンの飛ばし合いです。贋作師は世に偽物を売るために有名な絵とそっくりな絵を描く能力が重要で、真贋鑑定士は偽物が世の中に出回らないように偽物と本物を区別する能力が重要となります。真贋鑑定士が偽物と本物を見分ける能力が向上したとします。すると贋作師は自分の偽物の絵が世に出回らなくなり困ったことになるので、更に本物に近い絵を描けるように能力の向上を目指します。能力が向上し偽物が出回ると、今度は真贋鑑定士が困ったことになるので真贋鑑定士は本物と偽物を見分ける能力の向上を目指します。そうすると、また贋作師が困ったことになって。といった具合に、二人が対決することで二人の能力がどんどん上がっていくわけです。特に贋作師の方に注目すれば、最終的には本物と区別がつかないような絵を作れるようになる、という話です。

GAN の objective

上記のような話を考えるのは簡単ですが、具体的にどういう学習をするの、とか、うまくいく理論保証はあるの、と言った部分が気になります。ということでこの部分についても触れたいと思います。以下、絵など模倣したい対象 data set があり、そのうちの一つを $x$ と書くことにします。また、$x$ は 確率分布$p_{data}(x)$に従っているとします。

真贋鑑定士 Discriminator $D$は、data 内にある $x$ を本物と判定できる様に、つまり、$x\sim p_{data}(x)$に対して$D(x) = 1$ とできる様に学習を行います。贋作師 Generator $G$ はどの様に偽物を作るのかと言えば、何らかの事前に決めた分布 $p_z$ に従う $z$ を用意し、$G$ は $z$ を入力として贋作を出力します。つまり、Generator は $D(G(z)) = 1$ とする様に頑張り、Discriminator は $D(G(z)) = 0$ となる様に学習を行います。

以上から、例えば以下の様な objective を設定して学習を行えば良さそう、と考えられます。 \begin{align} \min_{G}\max_D \left[\mathbb{E}_{x\sim p_{data}}\left[\log D(x)\right]+\mathbb{E}_{z\sim p_{z}}\left[\log(1 - D(G(z)))\right]\right]\ . \end{align} 以上で良さそうだと思えるのは、$G$ を固定すれば$D$ は $D(x)$ を大きくし、$D(G(x))$ を小さくする様に学習され、$D$ を固定すれば $G$ は $D(G(z))$ を大きくする様に学習されるためです。

理論解析

この学習で良い偽物を作れる理由を述べたいと思います。 以下 $p_z$ と $G(z)$から誘導される確率分布$p_g(x)$ と書くことにすると、 良い偽物が作れるようになる理由は、この最適化問題の global optimum が $p_g(x)$と $p_{data}(x)$が一致する時だからです。以下でそれを確認します。

まず、$G$ を固定した際、最良の $D_G$ は以下のように計算できます。 objective $\mathcal{L}$ が \begin{align} \mathcal{L}(G, D) &= \int p_{data}(x) \log(D(x)) dx+ \int p_z(z)\log(1 - D(G(z)))dz \\ &=\int p_{data}(x) \log(D(x)) + p_g(x) \log(1 - D(x)) dx \end{align}

と書き直せますが、$f(x) = a\log(x) + b\log(1 - x)$ の最大値は $x = a/(a + b)$で取るから \begin{align} D_G = \frac{p_{data}}{p_{data} + p_g} \end{align} となります。これを用いてちょっと計算すると \begin{align} \max_{D}\mathcal{L}(G, D) &= \mathbb{E}_{x\sim p_{data}}\left[\log\left(\frac{p_{data}}{p_{data} + p_g}\right)\right] +\mathbb{E}_{x\sim p_g} \left[\log\left(\frac{p_g}{p_{data} + p_g}\right)\right] \\ &= -\log(4) + 2 JS(p_{data}||p_g)\ . \end{align} ここで JS は Jensen-Shannon divergence。JS は $p_{data} = p_g$ となる際に最小値を取るので、上式はこの時に最小となります。

以上をまとめれば、objective $\mathcal{L}$ を min max 最適化をしていけば、 確率分布が一致するという意味で $G$ は対象の data を良く模倣できるようになる、というのが理論的な根拠となります。

長くなりましたが、ようやく準備終了。以下では、一日一GAN を報告していきます!

Day 1 EBGAN


論文は https://arxiv.org/abs/1609.03126 です。

EBGAN の概要

Original GAN とやることは同じで、 objective だけを変更した論文で、違う objective でも二つの確率分布が一致することを示した論文です。 論文同様ポンと objective を紹介すると、EBGAN では以下を objective としています。

\begin{align} \mathcal{L} = \sum_{x\in p_{data}}D(x) + \sum_{z\in p_z}\max(0, m - D(G(z)))\ . \end{align}

この論文では、この objective でも original GAN の様に min max 最適化をしていけば、 $p_{data}$ と$p_g$ が一致するようになることを示しています。

理論解析

二つの確率分布$p_{data}$と$p_g$が一致するようになる証明は通常の GAN と似ているが少しだけ違う感じです。 GAN と同じように、任意の $G$ に対して最良の $D$を探し、$\mathcal{L}$ に代入しちょっと計算すると

\begin{align} \max_{D}\mathcal{L}(G, D) = m + m\int \mathbb{1}_{p_{data}(x) < p_g(x)}(p_{data}(x) - p_g(x)) dx \end{align}

となります。最良の $G$ を考えるとこれの第二項が $0$ にならなければならず、それは二つの確率が一致する時、という証明です。第二項が$0$になることの詳細は論文を。GAN と似ていますが、JS divergence に帰着させないのが違いです。

ちょっとした考察

論文を読んでいただければ分かるかと思いますが、論文の一番最初の式が上の objective なんですよね。いやぁ急にこの objective をポンと与えられても、というのが率直な感想ではないかと思います。

EBGAN は energy base ということなので、なんらかの分布と繋がってればと考えたのですが、ここ ではそれは無理と主張されています。それにもめげずにちょっと考えてみたところ、完璧な対応関係とはほど遠いですが、ある極限では GAN の objective と EBGAN の objective は Fermi分布を通して繋がっていそうと思えてきたので述べてみます。予め断っておきますが、本当に完璧な対応関係からはほど遠いです。。。

GAN の discriminator は[0, 1]の確率を返すので、ここでは Fermi 分布だと思いましょう。

\begin{align} D_{GAN}(x) = \frac{1}{1 + \exp( (E(x) -\mu)/k_BT )}\ . \end{align}

ここで $E(x) \geq 0$は energy, $\mu$ は chemical potential に対応する positive な constant、$T$ は温度に対応する定数、$k_B$は Boltzman constant。特に今回は低温($k_BT << \mu$)な Fermi 分布だとします。 この場合、$E(x) \sim 0$において

\begin{align} D_{GAN}(x) \sim 1 - \exp( (E(x) -\mu)/k_BT )\ \end{align}

$E(x) >> \mu$ に対して

\begin{align} D_{GAN}(x) \sim \exp(-E(x)/k_BT) \end{align}

と近似できます。この近似を利用して、GAN の discriminator にとって非理想的な極限(本物を偽物と思い、偽物を本物と思う)を考えると、

\begin{align} L_{GAN}& = -\sum_{x\in p_{data}}\log\left(D_{GAN}(x)\right) - \sum_{z\in p_z}\log\left(1-D_{GAN}(G_{GAN}(z))\right)\\ &\sim \frac{1}{k_BT}\left[\sum_{x\in p_{data}}E(x) + \sum_{z\in p_z}(\mu - E(G_{GAN}(z)))\right] \end{align}

となりEBGANの objective に近しいものが得られます。$max(0, *)$ がない(理論解析ではこの max が本質)などズレも大きいですが、ただポンと objective が与えられるよりかは energy という気分が伝わるかと思います!

Day 2 WGAN


論文は https://arxiv.org/abs/1701.07875 です。

WGAN 概要

WGAN も original GAN から objective を変更した論文です。

基本的に、GAN は $p_{data}$ と $p_g$ を一致させることで Generator が実際のデータを良く模倣できるという話なので、確率分布間の距離を定義して、その距離を近くすれば良いというのも自然な話です。最初に見たように、original GAN では間接的には JS divergence という距離を最小化していることに対応しています。WGAN では、Earth Mover’s distance(EMD) で距離を測り、直接これの最小化をすることで二つの分布を一致させることを狙います。EMD は扱いが面倒なので、それと等価である Wasserstein distance

\begin{align} D(p_{data},p_g) = \sup_{f \in 1-Lipschitz}\left[\mathbb{E}_{x\sim p_{data}}\left(f(x)\right)-\mathbb{E}_{x\sim p_{g}}\left(f(x)\right)\right] \end{align}

を用いて二つの確率分布を近づけるように学習を行う、というのがこの論文の話です。

理論解析

上記したように、確率分布間の距離最小化なので、original GAN のような理論解析は不要かと思います。

ちょっとした考察

この論文では、EMD の定義だとか Wasserstein distance が EMD の双対だとかポンと出てくる印象です。ここでは定義とか双対性に付いて少し考えてみようと思います。「ちょっとした」と書きましたが、結構長くなるのでご注意ください。

discrete 版 EMD

EMD の定義の気分を知ったり双対と言った部分をはっきりさせるために、以下、discrete に切って考えてみます。discrete に切るとは、$x\in R^n$をそのまま考えるのではなく、格子状に切って${x_i}$という集合を作って考えることを意味します。

まずは EMD から。論文には訳のわからない定義が書いてありますが、discrete に切ると、以下のような線形の最適化問題に帰着します。

\begin{align} &\min_{x_{ij}} \sum_{ij} d_{ij}x_{ij}\\ &s.t. x_{ij} \geq 0, \sum_{i}x_{ij} = p_{data}(x_j), \sum_{j}x_{ij} = p_g(x_{i}) \end{align}

ここに $d_{ij}$ が二点間の距離で、$x_{ij}$ が求めたい変数。このように書き下してみると、この問題は「最も効率よく$p_g$という山を$p_{data}$という山に移すためにはどうすれば良いか」という問題に対応することが分かります。というのも、$x_{ij}$が$i\rightarrow j$と輸送する量(対角成分は $i$ 地点に残す量)だと思えば、各制約は

  • 一つ目の制約$i\rightarrow j$ に輸送する量は$0$以上と言う自明な制約
  • 二つ目は $j$ 地点に輸送して欲しい量の制約
  • 三つ目は $i$ 地点から運び出すことができる量の制約

をそれぞれを表しているためです。「効率よく」というのは総移動距離$\times$輸送量の最小化を意味しています。

この線形最適化問題について、例えば、$p_{data} = p_g$ であれば、全部残せば良いので自明に最良解は $0$ となり、確率分布に少しでも差が出れば、輸送が必要になるので最良の目的関数値は $0$ より大きくなります。そのため、上記線形計画問題が二つの確率分布の一致具合を測る指標となるわけです。

EMD と Wasserstein distanceの双対性

EMD の気分が分かったので、 Wasserstein distance との双対性を確認してみます。まず、上記最適化問題は線形の最適化問題なので、最良の目的関数値を知る上ではLagrange 双対問題を考えても何ら問題ありません。Lagrange 双対の詳細はここ をご参照ください。上記最適化問題の Lagrange双対問題は

\begin{align} &\max_{\lambda,\nu} \sum_{i}\lambda_i p_g(x_i) + \sum_{j}\nu_j p_{data}(x_j)\\ &s.t.\ \ \lambda_i + \nu_j \leq d_{ij} \end{align} となります。ここに$\lambda, \nu$は双対変数を表します。以下ではこの問題を Original Problem と呼び、この問題の最適解を $z^{*}$ と書くことにします。

このOriginal Problemですが、実は以下のような$\lambda_i + \nu_i = 0$という制約を追加したような問題(Modified Problem)を考えても最良の目的関数値は同じになります。以下ではそのことを示します。

\begin{align} &\max \sum_{i}\lambda_i p_g(x_i) - \sum_{j}\lambda_j p_{data}(x_j)\\ &s.t.\ \ \lambda_i - \lambda_j \leq d_{ij} \end{align}

この Modified Problem の最適な目的関数値を $z_{mod}^*$と書くことにすれば、$z_{mod}^*\leq z^*$ と $z^*\leq z_{mod}^*$の両方が示せれば良く以下ではそれを確認します。

まずは前者ですが、これは自明。上述したように、Modified Problem は Original Problemに制約を追加して作っているため、最良の目的関数値は悪くなるため。 ということで、$z^*\leq z_{mod}^*$を頑張って示せば良い事になります。

OriginalProblem の最適解を $\lambda_i^*, \nu_j^*$と書くことにします。これらを使って、新しく次のような量を定義します。

\begin{align} \mu_i := \min_j\left(d_{ij} - \nu_j^* \right) \end{align} この$\mu$には、以下のような二つの性質があります。

  1. $\lambda_i^*\leq \mu_i\leq -\nu_i^*$
  2. $|\mu_i - \mu_j|\leq d_{ij}$

以下ではこの二つの性質を示しますが、この二つが示せた場合のご利益を先に述べます。Original Problemにおいて$p_{data}$, $p_g$が positiveであることから、一つ目の性質から、単なる値比較をすると

\begin{align} z^*\leq \sum_{i}\mu_i p_g(x_i) - \sum_{j}\mu_j p_{data}(x_j) \end{align} という不等式が得られます。よく見ると、右辺は Modified Problemの目的関数と同じ形をしており、さらに $\mu$ の二つ目の性質から、$\mu_i$は Modified Problemの制約を満たしています。このこととModified Problemが最大化問題であることを考慮すれば、 \begin{align} z^*\leq \sum_{i}\mu_i p_g(x_i) - \sum_{j}\mu_j p_{data}(x_j)\leq z_{mod}^* \end{align} という評価が得られ証明終了とななります。ということで頑張って$\mu_i$の性質をcheck できればOK。

まずは一つ目。$\lambda_i^*$がOriginalProblem の制約を満たしているので、$\lambda_i^* \leq d_{ij} - \nu_j^*$が成立。これがすべての$j$について成り立ち、 $\mu_i$の定義を思い出せば、$\lambda_i^{*}\leq \mu_i$が成立します。また$\mu_i$の定義から$\mu_i\leq d_{ii} - \nu_{i} = -\nu_i$となるので一つ目の性質は成り立ちます。 続いて二つ目。各$\mu_i = \min_k\left(d_{ik} - \nu_k^* \right)$について、右辺を最小とする$k$を$k_i$と書くことにすれば、任意の$j$に対して、$\mu_i = \min_k\left(d_{ik} - \nu_k^* \right)= d_{ik_i} - \nu_{k_i}^*\leq d_{ik_j} - \nu_{k_j}^*$が成立します。$\mu_i > \mu_j$のとき、この性質と三角不等式を使えば、

\begin{align} |\mu_i - \mu_j| \leq |d_{ik_j} - \nu_{k_j}^* - (d_{jk_j} - \nu_{k_j}^*)|\leq |d_{ik_j} - d_{jk_j}| \leq d_{ij} \end{align} となります。$\mu_i < \mu_j$の際もほぼ同様の式変形で同じ評価が得られるので、二つ目の性質が成り立ちます。 よって、Modified Probelm と Original Problem は同じ最良値を持つことが示せました。

Modified Probelm の目的関数から、これの連続版は Wasserstein distance の目的関数となることが想像できると思いますし、Modified Problem の制約から 1-Lipschitz の制約が出てくるのも見えるかと思います!

ふぅ、疲れた。。。

Day 3 LSGAN


論文は https://arxiv.org/abs/1611.04076 です。

LSGAN 概要

Original GAN から objective を変えた論文です。

そもそも Discriminator の学習では、本物に対しては $1$ を返し偽物に対しては $0$ を返せるようになれば良く、 Generator の学習では Discriminator の出力を $1$ にできるようにすれば良いです。とすると、素直に以下のような objective を minimize して行けば良いのでは、と思えてきます。

\begin{align} \mathcal{L}_D &= \mathbb{E}_{x\sim p_{data}}\left(D(x) - 1\right)^2 + \mathbb{E}_{z\sim p_{z}}\left(D(G(z))\right)^2\\ \mathcal{L}_G &= \mathbb{E}_{z\sim p_{z}}\left(D(G(z)) - 1\right)^2 \label{lsgan_naiive} \end{align} このように変更すると、sigmoid cross entropy よりも勾配損失が起こりにくくなり安定して計算がしやすくなりそう、というのがご利益です。

LSGAN論文ではもっと一般的に、 \begin{align} \mathcal{L}_D = \mathbb{E}_{x\sim p_{data}}\left(D(x) - b\right)^2 + \mathbb{E}_{z\sim p_{z}}\left(D(G(z)) - a\right)^2\\ \mathcal{L}_G = \mathbb{E}_{x\sim p_{data}}\left(D(x) - c\right)^2 + \mathbb{E}_{z\sim p_{z}}\left(D(G(z)) - c\right)^2 \end{align} とした場合に、どのような$(a, b, c)$だとうまく二つの確率分布が一致するのか、を調べています。なお、$\mathcal{L}_G$ の第一項は、最適化計算では関係ありませんが、テクニカルな理由で付けてあります。

理論解析

以下では二つの分布が一致する条件を調べますが、証明は完全に original GAN で紹介したものと同じ道筋を辿ります。original GAN では、任意の $G$ に対して最良の $D$ を計算し、それを元の objective に代入してちょっと計算すると JS divergence になって、という証明でした。LSGAN も全く同様の計算をしていけば大丈夫です。 $\mathcal{L}_D$ から $G$ を固定した場合の最良の $D$ は \begin{align} D_G = \frac{bp_{data} + ap_g}{p_{data} + p_g} \end{align} となります。これを $\mathcal{L}_G$ に代入してちょっと計算すると \begin{align} \mathcal{L}_G = \int \frac{( (b - c)(p_{data} + p_g) - (b - a)p_g)^2}{p_{data} + p_g} \end{align} という評価が得られます。この評価にたどり着く際に、先に付け加えた項が効いてきます。この評価から、例えば \begin{align} b - c = 1, b - a = 2 \end{align} の場合には \begin{align} \mathcal{L} = \chi^2_{Pearson}(p_{data} + p_g||2p_g) \end{align} と Pearson $\chi$ squared divergence の形になり、やっぱり $p_{data} = p_g$ の際に最小となることが示せます。

ちょっとした考察

LSGAN の最初に述べた objective は $b = c = 1, a = 0 $なので、条件を満たしていないように感じます。しかし、少し置き換えをして計算してやればやっぱりPearson $\chi$ squared の形になることを示せます。 論文では $(a, b, c)$として条件に合うものに注目していますが、論文推奨のパラメータ以外でももっと良いものがあるかもです!

Day 4 f-GAN


論文は https://arxiv.org/abs/1606.00709 です。

f-GAN の概要

f-GAN も original GAN から objective を変更した論文です。

GAN は二つの確率分布を同じにするのが基本です。なので、二つの確率分布間の距離を定義し、$p_{data}$ と $p_g$の距離を $0$ にするように学習するのは素直な話です。Wasserstein GAN もそうでしたね。Wasserstein GAN は EMD あるいは Wasserstein distance で考えていましたが、f-GAN では f-divergence class \begin{align} D(p_{data}||p_g) = \int p_gf\left(\frac{p_{data}}{p_{g}}\right) dx\ . \end{align} をベースとして考えています。ここに $f$ は $f(1) = 0$を満たす関数で、例えば、$f(x) = x\log(x)$ とすれば KL divergence になり、$f(x) = x^2-1$とすれば Pearson $\chi$ sqruaredとなります。この f-divergene ですが、凸解析の定理や Jensen不等式などを使用すると下から評価でき、f-GAN ではその下からの bound を良い指標と思って学習を行います。

理論解析

他の項目の理論解析とは少々異なりますが、ここでは f-divergence の下からの評価を確認したいと思います。

定理と定義

論文では凸解析の定理を使っているので、ここでは、定理の適用範囲を確認ということで定義とか定理を述べるだけ述べておこうと思います。詳しくは凸解析の参考書などをご覧ください。

論文で使用している定理は「閉真凸関数であれば、$f^{**} = f$」です。ということで、以下では閉真凸と$f^{*}$ の定義だけ述べておきます。

以下では $f: R^N \rightarrow [-\infty, \infty]$ とします。

  • 凸で、全ての $x$ について$f(x) > -\infty$ かつ $f(x) < \infty$ という $x$ が存在する関数が真凸関数。
  • 真凸かつ下半連続(任意の$x_0$ について $\liminf_{x \rightarrow x_0} f(x)\geq f(x_0)$)である関数が閉真凸関数。

$f^{*}$ の定義は以下です。

  • 真凸関数に対して $f^{*}(\xi) = \sup_x\left(\xi^Tx - f(x)\right)$ が Fenchel 双対。

今回利用している定理は最初にも述べたように「閉真凸関数であれば、$f^{**} = f$」なので、使う際には$f$ が上記した閉真凸であることの確認が必要になるのでご注意を。

f-GAN の objective

先に紹介したように、$f$ が閉真凸関数であった場合、$f = f^{**}$が成立するので \begin{align} f(x) = f^{**}(x) = \sup_{\xi}\left(x^T\xi - f^{*}(\xi)\right) \end{align} が成り立ちます。これを f-divergence の定義 \begin{align} D(p_{data}||p_g) = \int p_gf\left(\frac{p_{data}}{p_{g}}\right) dx\ . \end{align} に代入してJensen 不等式などを利用すると、 \begin{align} D(p_{data}||p_g) \geq \sup_{D}\left[ \mathbb{E}_{x \in p_{data}}\left(D(x)\right) - \mathbb{E}_{x\in p_g}\left(f^{*}(D(x))\right)\right] \end{align} という評価を得られます。右辺を f-divergence の良い指標と思い GAN のような min max 学習を行っていくのが f-GAN です。

個人的な印象ですが、motivation があり導出が一直線な気持ち良い論文です!

ちょっとした考察

実は、真凸などでも $f\geq f^{**}$ は成立するので、上記不等式自体はもう少し広いクラスでも成立はします。まぁ、真凸と閉真凸の差は$dom_f$の boundery くらいなので真凸ではあまり面白いことはできないかと思いますが。。。

Day 5 DualGAN


論文は https://arxiv.org/abs/1704.02510 です。

DualGAN の概要

GAN を利用したアプリケーション系の論文です。

やりたいことは domain 変換です。例えば、イラスト $\leftrightarrow$ 写真といった変換で、イラストを与えた時にそれっぽい写真を作成したり、その逆をしたりできるように学習を行います。 この論文の手法の特徴としては、pix2pix とは異なり、データが対にはなっていないこと。つまり、学習データとして「イラストとそれに対応する写真」が与えられるのではなく、「イラストの集合と写真の集合」がデータとして与えられている状況で上記の学習を行います。

DualGAN の学習方法

他の項目では理論解析と称していましたが、 アプリケーションよりの論文ということで学習方法という項とさせて頂きます。

学習の基本戦略は以下の図の通りです。図は論文より引用。 f:id:taka_t0m0:20170522161949j:plain 図のように、Generator と Discriminator を二組み用意します。Generator で domain 変換、Discriminator は違う domain からの絵を偽物と判定、といった感じで学習を行いますが、詳細な手順は以下の通りです。

domain U の絵に対しては、

  1. domain U から絵を draw。この絵については Discriminator B で True と判定。
  2. その絵を Generator A で domain V に変換
  3. 変換された絵を Discriminator A で Flase と判定
  4. 変換された絵を Generator B で domain U に戻し、reconstruction error を加える。

とします。domain V に対しても $A \leftrightarrow B$, $U \leftrightarrow V$ とした手続きをすれば OKです。 このように学習を行い、二つの Generator で domain が行き来できるようになることを狙います。

ちょっとした考察

具体的にどうやれば良いのか見えていませんが、auto encode する際に、$p(x^{\prime}|x) = \sum_y p(x^{\prime}|y)p(y|x)$ と思って sum を考慮したらどうなるかが気になります。DualGAN の論文でも指摘されているように、今回の変換は機械翻訳の話から inspire されています。そして機械翻訳の場合にはこれを考慮していることがあります。例えば、https://arxiv.org/abs/1606.04596 です。これを考慮できるのか否かや入れて良くなるかどうかは全く見えていませんが、今後も考察をと考えています!

Day 6 infoGAN


論文は https://arxiv.org/abs/1606.03657 です。

infoGAN の概要

GAN の学習ができれば、latent の各次元にも意味が出てくることが期待されます。例えば、MNIST であれば、latent の変数をうまく動かせば違う数字を出力できるようになる、といった具合です。ただ、どの変数をどうすればどう変わるのか、というのは予めは分からないので、そこをなんとかできないか、と考えたのが infoGAN です。つまり、latent の中である次元に指定の意味を持つように学習を行います。この論文では、それを目指すために相互情報量を正則化項として加えています。

理論解析

理論解析ではありませんが、正則化に用いる項や objective を紹介できればと思います。

上記した通り、latent の一部に明確な意味を持たせるために、相互情報量を正則化項として加えます。明確な意味を持たせるには、generator に食わせる latent を $z_{full} = (c, z)$ と分けた時、なんらかの事後確率 $P(c|G(c, z))$ が高くなりなさい、という制約のもとで学習を行えば良いことが想像されます。例えば、MNIST であれば、c を数字の種類だと思うと、$c$ と $z$ を与えて絵を generate し、その絵は $c$ である確率が高くありなさいという条件を課せば、latent の中でも$c$は数字の種類の情報を持つことが期待できます。論文では $P(c|G(c, z))$ ではなく相互情報量を正則化項として加えています。ここに相互情報量の定義は以下の通りです。 \begin{align} I(c; G(c, z)) = H( c) - H(c|G(c, z)) = -\log(p( c)) + \log(p(c|G(c, z)))\ . \end{align} 本当の $P(c|G(c, z))$ を求めるのは難しいので、DNN で近似した $Q(c|G(c, z))$ を用いると、上記相互情報量を以下のように下から抑えることができます。(詳細は論文を。) \begin{align} I(c; G(c, z)) \geq H( c) + \mathbb{E}_{c\in P( c), x \in G(c, z)}\left[Q(c| G(c, z))\right] := \mathcal{L_{m}}\ . \end{align}

infoGAN ではこの下限を用いて、 \begin{align} \mathcal{L} = \mathcal{L}_{GAN} - \lambda\mathcal{L_{m}} \end{align} という objective を利用して学習を行います。$\mathcal{L}_m$を見ればわかるように、$P( c)$から $c$ を選び、その $c$ について、$Q(c|G(c, z))$ が高くなるという制約のもと $G$ の学習が進めるので、これで目的が達成できる訳です。

ちょっとした考察

完全に的外れ感もあり、また、具体的な話ではありませんが、やはり相互情報量というとnegative sampling を考えてみたくなります。もちろんラベルが少ないうちはこんなものを考える必要はありませんが、多くなった場合などのためにうまく組み合わせられないかな、と考えています!

Day 7 CVAEGAN


論文は https://arxiv.org/abs/1703.10155 です。

CVAEGAN の概要

CVAEGAN は、GAN を利用したアプリケーションよりの論文です。

やりたいこととしては、人の写真から「表情は同じで違う人」の絵を作ることです。もう少し言えば、写真と人の名前を input として一つのベクトルを作り、そのベクトルと別な名前から対象の人で同じ表情の写真を作ることを目指します。同じ表情で違う人、だけであればCVAEでもできそうですが、VAE 系の場合、loss として pixel 毎の二乗誤差 を使うためか絵がボヤけることが多い印象があります。そこで、mean squared error で測るのではなく、Discriminator で測りましょうというのがこの論文です。

CVAEGAN の学習方法

学習方法ですが、以下の絵を見ればそのまんまです。絵は論文から引用。 f:id:taka_t0m0:20170522162007j:plain

VAE 部分については以下のような手続き。

  1. 絵とそのラベルを draw
  2. 絵とラベルから Encoder で hidden vector zを作成。
  3. z とラベルから絵を Generator が作成。作成した絵と元の絵で pixel wise mean squared error。

GAN 部分については以下のような手続き。

  1. 絵とそのラベルを draw。z も draw。
  2. z とラベルから絵を Generator が作成。その絵を Discriminator が False と判定。
  3. draw してきた絵を Discriminator が True と判定。

残りのロスは feature map loss です。

このように学習すれば、ある $(x, c)$から hidden $z$ を作り、その $z$ と $c^{\prime}$ を使って Generator にかけてやれば目的が達成できるかと思います。

ちょっとした考察

論文では supervised、つまり全ての絵にクラスが付いている状況でやっているようですが、おそらくこのモデルは semi-supervised に拡張可能かと思います。上記CVAE論文のごとくやれば行けると思います!

終わりに


以上、一日一GAN を報告しました。一応論文で急に出てきた式を考察したり、論文を読んでこういうこともできるかもを意識して書いてみましたが、いかがだったでしょうか? 考察中と述べた部分もございましたし、この辺り一緒に議論して頂ける人がいらっしゃいますと幸いです。最初にも述べましたが、それぞれ implementation はしたけれどもパラメータ調節などはしていない、という状況です。機会があればこれらの比較実験もして報告できれば、と思います! またその時まで!長々とありがとうございました。

宣伝


ABEJA では、イケててヤバいエンジニアを募集しています。GAN はしばらく流行りそうですし、今後 GAN でできることもガンガン広がっていくと思います。新しいGAN を含め最先端技術を使ってガンガン行きたい方是非お待ちしております!

ABEJAが発信する最新テクノロジーに興味がある方は、是非ともブログの読者に!

ABEJAという会社に興味が湧いてきた方はWantedlyで会社、事業、人の情報を発信しているので、是非ともフォローを!! www.wantedly.com

ABEJAの中の人と話ししたい!オフィス見学してみたいも随時受け付けておりますので、気軽にポチッとどうぞ↓↓

学生向けの勉強会もしています!ガンガン応募してください!

https://abeja-innovation-meetup.connpass.com/event/57686/

参考文献

[1] Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in neural information processing systems. 2014.

[2]Radford, Alec, Luke Metz, and Soumith Chintala. “Unsupervised representation learning with deep convolutional generative adversarial networks.” arXiv preprint arXiv:1511.06434 (2015).

[3] Zhao, Junbo, Michael Mathieu, and Yann LeCun. “Energy-based generative adversarial network.” arXiv preprint arXiv:1609.03126 (2016).

[4] Arjovsky, Martin, Soumith Chintala, and Léon Bottou. “Wasserstein gan.” arXiv preprint arXiv:1701.07875 (2017).

[5] Mao, Xudong, et al. “Least squares generative adversarial networks.” arXiv preprint arXiv:1611.04076 (2016).

[6] Nowozin, Sebastian, Botond Cseke, and Ryota Tomioka. “f-GAN: Training generative neural samplers using variational divergence minimization.” Advances in Neural Information Processing Systems. 2016.

[7] Yi, Zili, Hao Zhang, and Ping Tan Gong. “DualGAN: Unsupervised Dual Learning for Image-to-Image Translation.” arXiv preprint arXiv:1704.02510 (2017).

[8] Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, Pieter Abbeel. “InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets.” arXiv preprint arXiv:1606.03657(2016).

[9] Bao, Jianmin, et al. “CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training.” arXiv preprint arXiv:1703.10155 (2017).

[10] http://www.inference.vc/are-energy-based-gans-actually-energy-based

[11] http://www.msi.co.jp/nuopt/glossary/term_c93514f7967b5ea6f4c77d569addef8d655072df.html

[12] Cheng, Yong, et al. “Semi-supervised learning for neural machine translation.” arXiv preprint arXiv:1606.04596 (2016).

[13]Kingma, Diederik P., et al. “Semi-supervised learning with deep generative models.” Advances in Neural Information Processing Systems. 2014.