からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

3.4.3:LDAの確率的変分ベイズ法【白トピックモデルのノート】

はじめに

 『トピックモデルによる統計的潜在意味解析』の学習時のメモです。基本的な内容は、数式の行間を読んで埋めたものになります。本と併せて読んでください。

 この記事では、3.4.3節のLDAの変分ベイズ法に自然勾配法を用いて確率的最適化する手法について書いています。

 数学よく解らない自分が理解できるレベルまで落として数式を書き下していますので、分かる人にはかなりくどいです。

【実装編】

www.anarchive-beta.com

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】

3.4.3 LDAの確率的変分ベイズ法

 単語分布の近似事後分布$q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})$を逐次学習により更新する。

・フィッシャー情報行列の導出

 まずは、フィッシャー情報行列を求めるために$\nabla^2_{\xi} \log q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})$を求める。

$$ \begin{align} \frac{ \partial^2 }{ \partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi} } \log p(\boldsymbol{\phi}_k | \boldsymbol{\xi}_{k}^{\phi}) &= \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \prod_{v=1}^V \phi_{k,v}^{\xi_{k,v}^{\phi} - 1} \\ &= \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \left( \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } + \sum_{v=1}^V (\xi_{k,v}^{\phi} - 1) \log \phi_{k,v} \right) \\ &= \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } + \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \sum_{v=1}^V (\xi_{k,v}^{\phi} - 1) \log \phi_{k,v} \tag{3.152} \end{align} $$

 後の因子は

$$ \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \sum_{v=1}^V (\xi_{k,v}^{\phi} - 1) \log \phi_{k,v} = \frac{\partial}{\partial \xi_{k,v}^\phi} \log \phi_{k,v'} = 0 $$

であるため

$$ \begin{aligned} \frac{ \partial^2 }{ \partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi} } \log p(\boldsymbol{\phi}_k | \boldsymbol{\xi}_{k}^{\phi}) &= \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \\ &= \frac{\partial}{\partial \xi_{k,v}^{\phi}} \frac{\partial}{\partial \xi_{k,v'}^{\phi}} \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \end{aligned} $$

となる。更に、式(3.103)を用いて期待値に置き換える。

$$ \begin{align} \frac{ \partial^2 }{ \partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi} } \log p(\boldsymbol{\phi}_k | \boldsymbol{\xi}_{k}^{\phi}) &= - \frac{\partial}{\partial \xi_{k,v}^{\phi}} \frac{\partial}{\partial \xi_{k,v'}^{\phi}} \left( - \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \right) \\ &= - \frac{\partial}{\partial \xi_{k,v}^{\phi}} \frac{\partial}{\partial \xi_{k,v'}^{\phi}} \left( \sum_{v=1}^V \log \Gamma(\xi_{k,v}^{\phi}) - \log \Gamma \Bigl(\sum_{v=1}^V \xi_{k,v}^{\phi} \Bigr) \right) \\ &= - \frac{\partial}{\partial \xi_{k,v}^{\phi}} \left( \Psi(\xi_{k,v'}^{\phi}) - \Psi \Bigl(\sum_{v=1}^V \xi_{k,v}^{\phi} \Bigr) \right) \\ &= - \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} [ \log \phi_{k,v'} ] \tag{3.153} \end{align} $$

 従って、式(3.144)より$q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})$のフィッシャー情報行列$G(\boldsymbol{\xi}_k^{\phi})$の$v, v'$要素は

$$ \begin{align} G_{v,v'} (\boldsymbol{\xi}_k^{\phi}) &= - \int q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi}) \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \log q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi}) d\boldsymbol{\phi}_k \\ &= - \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} \left[ \frac{\partial^2}{\partial \xi_{k,v}^{\phi} \partial \xi_{k,v'}^{\phi}} \log q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi}) \right] \\ &= - \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} \left[ - \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} [ \log \phi_{k,v'} ] \right] \\ &= \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} [ \log \phi_{k,v'} ] \tag{3.154} \end{align} $$

となる。

・変分下限の勾配の導出

 LDAの変分下限は3.3.6項の式(3.102)を用いる。

$$ \begin{align} F[q(\boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\xi}^{\theta}, \boldsymbol{\xi}^{\phi})] &= \sum_{k=1}^K \left[ \log \frac{ \Gamma(\sum_{v=1}^V \beta_v) }{ \prod_{v=1}^V \Gamma(\beta_v) } - \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \right] + \sum_{k=1}^K \sum_{v=1}^V ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_v - \xi_{k,v}^{\phi} ) \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &\qquad + \sum_{d=1}^M \left[ \log \frac{ \Gamma(\sum_{k=1}^K \alpha_k) }{ \prod_{k=1}^K \Gamma(\alpha_k) } - \log \frac{ \Gamma(\sum_{k=1}^K \xi_{d,k}^{\theta}) }{ \prod_{k=1}^K \Gamma(\xi_{d,k}^{\theta}) } \right] + \sum_{d=1}^M \sum_{k=1}^K ( \mathbb{E}_{q(\boldsymbol{z}_d)}[ n_{d,k} ] + \alpha_k - \xi_{d,k}^{\theta} ) \mathbb{E}_{q(\boldsymbol{\theta}_d | \boldsymbol{\xi}_d^{\theta})}[ \log \theta_{d,k} ] \\ &\qquad - \sum_{d=1}^M \sum_{i=1}^{n_d} \sum_{k=1}^K q(z_{d,i} = k) \log q(z_{d,i} = k) \tag{3.102} \end{align} $$

 変分下限の勾配$\nabla_{\xi_{k,v}^{\phi}} F[q(\boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\xi}^{\theta}, \boldsymbol{\xi}^{\phi})]$を求める。

$$ \begin{align} \frac{ \partial }{ \partial \xi_{k,v}^{\phi} } F[q(\boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\xi}^{\theta}, \boldsymbol{\xi}^{\phi})] &= \frac{\partial}{\partial \xi_{k,v}^{\phi}} \left( - \log \frac{ \Gamma(\sum_{v=1}^V \xi_{k,v}^{\phi}) }{ \prod_{v=1}^V \Gamma(\xi_{k,v}^{\phi}) } \right) + \frac{\partial}{\partial \xi_{k,v}^{\phi}} \left( - \xi_{k,v}^{\phi} \right) \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &\qquad + \sum_{v=1}^V ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &= \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] - \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &\qquad + \sum_{v=1}^V ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &= \sum_{v=1}^V ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \tag{3.104} \end{align} $$

・更新式の導出

 従って、式(3.150)より自然勾配を用いた更新式は、ステップサイズを$\nu_s$として

$$ \begin{align} \boldsymbol{\xi}_k^{\phi (s+1)} &= \boldsymbol{\xi}_k^{\phi (s)} + \nu_s G^{-1}(\boldsymbol{\xi}_k^{\phi}) \nabla_{\boldsymbol{\xi}_k^{\phi}} F[q(\boldsymbol{z}, \boldsymbol{\theta}, \boldsymbol{\phi} | \boldsymbol{\xi}^{\theta}, \boldsymbol{\xi}^{\phi})] \tag{3.156} \\ &= \boldsymbol{\xi}_k^{\phi (s)} + \nu_s G^{-1}(\boldsymbol{\xi}_k^{\phi}) \sum_{v=1}^V ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \end{align} $$

となる。
 また、各成分は、式(3.154)より

$$ \begin{align} \xi_{k,v}^{\phi (s+1)} &= \xi_{k,v}^{\phi (s)} + \nu_s G_{v,v'}(\boldsymbol{\xi}_k^{\phi})^{-1} ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &= \xi_{k,v}^{\phi (s)} + \nu_s \frac{ 1 }{ \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})} [ \log \phi_{k,v} ] } ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \frac{\partial}{\partial \xi_{k,v}^{\phi}} \mathbb{E}_{q(\boldsymbol{\phi}_k | \boldsymbol{\xi}_k^{\phi})}[ \log \phi_{k,v} ] \\ &= \xi_{k,v}^{\phi (s)} + \nu_s ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} ) \\ &= \xi_{k,v}^{\phi (s)} - \nu_s \xi_{k,v}^{\phi} + \nu_s ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} ) \\ &= (1 - \nu_s) \xi_{k,v}^{\phi} + \nu_s ( \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} ) \tag{3.157} \end{align} $$

となる。
 この更新式が$\nu_s = 1$のとき

$$ \xi_{k,v}^{\phi (s+1)} = \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} \tag{3.95} $$

となり、変分ベイズ法での更新式となることが確認できる。

・確率的最適化

 文書dに含まれる同一単語vの中でトピックkが割り当てられた単語数を$n_{d,k,v}$とすると、その期待値は

$$ \mathbb{E}_{q(\boldsymbol{z})} [n_{d,k,v}] = \sum_{i=1}^{n_d} q(z_{d,i} = k) \delta(w_{d,i} = v) $$

である。全文書における同一単語vの中でトピックkが割り当てられた単語数$n_{k,v}$の期待値は

$$ \mathbb{E}_{q(\boldsymbol{z})} [n_{k,v}] = \sum_{d=1}^M \mathbb{E}_{q(\boldsymbol{z})} [n_{d,k,v}] $$

となる。
 これを用いて、式(3.157)の(3行目の)勾配を

$$ \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} = \sum_{d=1}^M \frac{1}{M} \left( M \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi} \right) \tag{3.158} $$

と変形する。$p(d) = \frac{1}{M}$として、確率的最適化による更新式

$$ \xi_{k,v}^{\phi (s+1)} = \xi_{k,v}^{\phi (s)} + \nu_s ( M \mathbb{E}_{q(\boldsymbol{z})}[ n_{k,v} ] + \beta_{v} - \xi_{k,v}^{\phi (s)} ) \tag{3.159} $$

が得られる。

参考文献

  • 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ 8)奥村学監修,コロナ社,2015年.

おわりに

 この記事で勾配法の節が終了です。
 概ね解けたのですが、それぞれの数式で何をしているのかいまいち理解できていません。腹落ちしないまま書き終わってしまったというか…。ですが、今は納得感よりもまず先へ進みます。2週目する頃には理解できるようになってるといーなー。
 あと、本の誤植を見付けたのですが、果たして本当に誤植なのか自信がない。

 次も全く知らない手法が出てくるようなので、また日が空くかもしれませんがよろしくお願いします。

【次節の内容】

www.anarchive-beta.com