Z-Forcing 再帰深層学習に導入した潜在変数の適合を強いる論文を読む

深層生成モデルを使った強化学習が発表されており、この安定化のためZ-Forcingなるモデルを使っていたので、この論文を読んでみる。

深層ベイズモデルによる長期予測での強化学習の論文を読む - mabonki0725の日記

VAEを発展させ再帰深層学習(LSTM)にも潜在変数z_tを導入して系列での生成モデルを構築する試みがある。このモデルでもVAEと同じ潜在変数を多変量ガウシアンで仮定し、この最適解(平均と分散)は変分ベイズをつかったELBO(Evidence Lower Band)の最大化より求める手法は同じである。しかし長期の系列の潜在変数は適切な収束が難しいのでより学習データに接近させるため、拘束的なZ-Forcingなる手法が提案されている。

[1711.05411] Z-Forcing: Training Stochastic Recurrent Networks

この手法で講演音声の解析や手書き文字の予測、および自然言語の生成を行っていて、特に音声の解析では優秀な結果を出している。

まだ試していないが著者の一人Sordnoniの実装がgithubに揚げている。

GitHub - sordonia/zforcing: ZForcing Repo

生成過程と推定過程を繰返し潜在変数を精緻化するVAEと同様に、次に示す様に再帰的深層生成でも後進時の状態b_tを使って潜在変数z_tを精緻化している。

 

入力x_t→(生成過程)→潜在変数z_t←(推定過程)←状態b_t

 

しかし系列なので潜在変数が安定的に収束しないため、後進時の状態b_tと潜在変数z_tとにガウシアンな強制的関係を補助コストとして導入しようとするのが本論文の手法である。

f:id:mabonki0725:20200213161846p:plain

左図が従来型の潜在変数z_tを使った系列学習で、右図が本提案のグラフィカル図である。相違としては潜在変数z_tが推定過程の状態b_tに依存し、状態b_tが入力x_tに拠っていることが分る。青い2重線はその依存関係を示す。

本論では次の様に定式化されている。

・生成過程   

 h_t = \vec{f}(x_t,h_{t-1},z_t)

     \vec{f}再帰深層学習 

  h_tは隠れ変数

・潜在変数の事前分布

    p_\theta(z_t | x_{i:t},z_{1:t}) = \mathcal{N}(z_t:\mu_t^{(p)},\sigma_t^{(p)})

         ここで  [\mu_t^{(p)},\sigma_t^{(p)}] = f^{(p)}(h_{t-1})

                      f^{(p)}は対角ガウス分布

・推定(逆)過程

  b_t=\overleftarrow{f}(x_{t+1},b_{t+1})

    q_\phi(z_t | x_t) = \mathcal{N}(z_t:\mu_t^{(q)},\sigma_t^{(q})

      ここで  [\mu_t^{(q)},\sigma_t^{(q)}] = f^{(q)}(h_{t-1},b_t)

                   f^{(q)}は深層学習

・補助コスト

    q_\xi(b_t | z_t) = \mathcal{N}(z_t:\mu_t^{(a)},\sigma_t^{(a})

      ここで  [\mu_t^{(a)},\sigma_t^{(a)}] = f^{(a)}(z_t)

                   f^{(a)}は深層学習

 

潜在変数z_tの学習は次の下位限界の最大化となるが、

   \mathcal{L}(x;\theta,\phi,\xi) = \sum_t  \mathbb{E}_{q_\phi(z_t|x_t)} [\log p_\theta(x_{t+1}|x_{1:t},z_{1:t}) + \alpha \log p_\xi(b_t|z_t) ] - \mathcal{D}_{KL}(q_\phi(z_t|x_{1:T}) || p_\theta(z_t|x_{1:t},z_{1:t-1}))

 ELBOの定式化するため補助コスト項\alpha \log p_\xi(b_t|z_t) は期待値から便宜的に外に出し次式で下位限界を最大化する。

   \mathcal{L}(x;\theta,\phi,\xi) = \sum_t  \mathbb{E}_{q_\phi(z_t|x_t)} [\log p_\theta(x_{t+1}|x_{1:t},z_{1:t}) ]+ \beta \log p_\xi(b_t|z_t) - \mathcal{D}_{KL}(q_\phi(z_t|x_{1:T}) || p_\theta(z_t|x_{1:t},z_{1:t-1}))

 

・実験結果

 (a)スピーチ

  2つのスピーチの認識実験について最大対数尤度を達成している。

   Bizzardは1人の300時間の英語のスピーチ TIMITは630人による6300個のスピーチである。対数尤度は実測の出現分布と予測分布で求められている。

    f:id:mabonki0725:20200213220602p:plain

       aux:補助コストモデル  kla:焼き鈍しKLモデル
  モデル構成 1024-2048 LSTM  潜在変数の次元256

 (b)文字認識

  再帰方式による手書き文字MNISTの認識で最大の負の対数尤度を達成

    f:id:mabonki0725:20200213220644p:plain

モデル構成 1024 LSTM  


     (c)自然言語生成(文章の混合例)

  自然言語生成の評価としてのPerplexity(正解の確率の逆数:低い方が良い)の比較は示されていない。ここではELBOとIWAE(Important Weight Autoregression)との比較のみ表示している。

    f:id:mabonki0725:20200214081026p:plain


本実験は潜在変数による文章の生成をおこなっている。次の映画評価の異なる上下の文章の潜在変数を内挿\alphaして中間文章の生成をしている。従って最初の例では\alphaに応じて「酷い映画」と「良い映画」との中間の文章を生成している。\alphaが小さいと上段、大きいと下段に寄る文章を生成している。左は確率の高い言葉のみでの文章で、右はランダムに抽出した文章を生成している。内挿値に従った文章が生成しているのが分かる。

次の例は「暴力」と「楽しい」の間の文章を生成した結果である。

f:id:mabonki0725:20200213221113p:plain

 モデル構成はLSTM(500の隠れ変数)言葉は300次元にコード化 潜在変数の次元は64である。

 

・感想

 GitHubにある実装で試してみなければ評価できないが、長い系列でのAutoEncoderでの潜在変数の解は不安定であると推察される。この論文Z-forcingでは補助コストで入力と潜在変数を拘束して安定化を図っている。しかし文章の様な系列では構造があるのでZ-forcingに頼る必要はないと思われる。この様な手法は非構造的な現象には便利で強化学習での場面の予測には都合がいいかもしれない。