DeepMindの外部メモリーによる生成モデルの論文を読む

ランニング30分   英語できず

(1) DeepMindの外部メモリーによる生成モデルの論文を読む

「Variational Memory Addressing in Generative Models」https://arxiv.org/pdf/1709.07116.pdf

   この論文は深層学習の生成モデルVAEやGANで成果を出していることに対抗して、DeepMindが得意とする外部メモリを使ったより柔軟な生成モデルを提案したものです。

   DeepMindはNTM(Neural Turing Machine)やDNC(Defferencial Neural Computer)で外部メモリーを組み込んだ推論を実現しており、この成果を生成モデルに応用しています。

   VAEは生成データと実データの差をパラメータ化して深層学習で解消しますが、一方この論文の手法は外部メモリーに条件を設定し、この条件を満たすVAEを実現するものです。

  しかも下図(左)の様に生成データと実データの差を条件とすれば既存のVAEと同じ事が出来、大変柔軟性に富んだ手法となっています。

f:id:mabonki0725:20170927233809p:plain

 (1.1) 手法

 VAEなので条件Mを満たすxを生成する隠れ変数z変分法で求めます。

  p(x|M) = \sum_a p(a|M) \int p(z|m_a) p(x|z,m_a) dz

 変分の下界は次式の右辺で、これが最大になる様にzaを深層学習で訓練します。

     \log p(x|M) \ge \mathbb{E}_{a,z \sim q(\cdot |M,x)} \left( \log p(x,z,a | M) - \log q(a,z|M,x) \right)

        ここで

           aはMemoryMの番地

   azは独立と見做せるので上式のサンプリング\mathbb{E}_{a,z \sim q(\cdot |M,x)}の事後分布は次となります。 

      q(a,z|M,x) = q(a|M,x) \cdot q(z | m_a,x)

 この論文はq(a|M,x)q(z|m_a,x)の事後分布を各々解いています。

 1) q(a|M,x)の事後分布

  ここではNTMはDNCでの外部メモリーのキーの学習と同じ考え方を導入しています。

  q(a|M,x) \propto \exp S_\phi^q(m_a,x)

       S_\phi^q(m_a,x) = \frac{\lt e_a,e^q \gt}{{||e_a||}^2}

       ここで

        e_a = h_\phi(m_a)は外部メモリーの関数h_\phiによる番地の隠れ変数

        e^q = h^q(x)は顕在データxの関数h^pによる隠れ変数

      即ちxm_aの隠れ変数が近くなる様に関数h_\phih^qを訓練した結果を

  S_\phi^qとして、これを事後分布q(a|M,x)としています。      

 2) q(z|m_a,x)の事後分布

   この事後分布はm_aが離散なので簡単に計算できません。

  そこでVIMCOというモデルで離散の事後分布を次式の変分で求めています。

  \log(x) \ge \mathbb{E}_{a^{(k)} \sim q_\phi(a|x) \   z^{(k)} \sim q_\theta(z|m_a,x)} \left( \log \frac{1}{K} \sum_{k=1}^K \frac{p(x,m_a,z)}{q(a,z|x)} \right)

   ここで kは離散のインデックスです

  右辺を各々\theta\phi微分して下界を最大化しています。

       この辺までの記述になるとかなり式の展開が曖昧になっています。

(1.2) 結果

  下図は学習された番地毎のメモリーの状態m_aが示してあり、正解の図xと推定された番地p(a|x)の画像が近いことが分ります。

f:id:mabonki0725:20170928085531p:plain