« 潜在ディリクレ配分のトピック数を手軽に決める方法 (Rのldatuningパッケージが提供する謎の4つの指標について) | メイン | 読了: Roberts, Steward, Tingley (in preparation) 構造的トピックモデルのRパッケージ stm »
2017年9月12日 (火)
6月末頃に作ったメモ。トピックモデルの表記が資料によって違っているせいで、混乱しちゃったのである。
岩田(2015)「トピックモデル」の表記
文書集合$\{\mathbf{w}_1, \ldots, \mathbf{w}_D\}$について考える。文書$\mathbf{w}_d$に含まれる単語を$w_{d1}, \ldots, w_{dN_d}$とする(順序は問わない)。文書集合を通して現れる語彙の数を$V$とする。
トピックモデルによれば、文書は次のように生成される。文書集合の背後には$K$個のトピックがある。
- トピック$k=1,\ldots,K$のそれぞれについて、単語分布$\mathbf{\phi}_k = (\phi_{k1}, \ldots, \phi_{kV})$が生成される。
$\mathbf{\phi}_k \sim Dirichlet(\beta)$ - 文書$d=1,\ldots,D$のそれぞれについて...
- トピック分布 $\mathbf{\theta}_d = (\theta_{d1}, \ldots, \theta_{dK})$が生成される。
$\mathbf{\theta}_d \sim Dirichlet(\alpha)$
トピックが生成されているわけではない点に注意。文書はあるトピックを持っているのではない(トピックの確率分布を持っている)。逆向きにいうと、トピックモデルは文書にトピックを割り当てない。 - 単語 $n=1, \ldots, N_d$ について...
- まずはトピック $z_{dn}$が生成される。単語が生成される前に、単語の数だけトピックが生成されている。逆向きにいうと、単語にトピックを割り当てていることになる。
$z_{dn} \sim Categorical(\mathbf{\theta}_d)$ - いよいよ単語が生成される。あらかじめ作っておいた単語分布$\mathbf{\phi}_{z_{dn}}$を参照して、
$w_{dn} \sim Categorical(\mathbf{\phi}_{z_{dn}})$
- まずはトピック $z_{dn}$が生成される。単語が生成される前に、単語の数だけトピックが生成されている。逆向きにいうと、単語にトピックを割り当てていることになる。
- トピック分布 $\mathbf{\theta}_d = (\theta_{d1}, \ldots, \theta_{dK})$が生成される。
佐藤(2015)「トピックモデルによる統計的潜在意味解析」の表記
トピック$k$における単語の出現分布を$\mathbf{\phi}_k = (\phi_{k,1}, \ldots, \phi_{k,V})$とし、
$\mathbf{\phi}_k \sim Dir(\beta)$
文書$d$のトピック分布(トピックの構成比率)を$\mathbf{\theta}_d = (\theta_{d,1}, \ldots, \theta_{d,K})$とし、
$\mathbf{\theta}_d \sim Dir(\alpha)$
文書$d$における$i$番目の潜在トピック$z_{d,i}$について、
$z_{d,i} \sim Multi(\mathbf{\theta}_d)$
$i$番目の単語$w_{d,i}$について
$w_{d,i} \sim Multi(\phi_{z_{d, i}})$
Griffiths & Steyvers (2004, PNAS)の表記
細かいところを端折ると、
$w_i | z_i, \phi^{(z_i)} \sim Discrete(\phi^{(z_i)}) $
$\phi \sim Dirichlet(\beta)$
$z_i | \theta^{(d_i)} \sim Discrete(\theta^{(d_i)})$
$\theta \sim Dirichlet(\alpha)$
こういう順番で書かれるとめっさわかりにくいが、まあとにかく、ハイパーパラメータは$\alpha, \beta$である。
ふつうそうですよね。良識ある大人なら、たいていの人がハイパーパラメータを$\alpha, \beta$と書いていたら、その世間の風潮にあわせますよね。俺様だけは$\beta$を$\delta$と書くぜ、読者どもよついてこい、なんて子供じみた真似はしませんよね?
Grun & Hornik (2011, J.Stat.Software) の表記
...というか、Rのtopicmodelsパッケージの表記。
さあ、ここで我々は、世間の風潮など気にもしない漢たちを目の当たりにし、驚愕することになるのである。はい深呼吸!
文書$w$について考える。文書$w$に含まれる単語を$w_{1}, \ldots, w_{N}$とする(順序は問わない)。
文書は次のように生成される。文書集合の背後には$k$個のトピックがある。
- それぞれのトピックについて、単語分布$\beta$が生成される。
$\beta \sim Dirichlet(\delta)$ - 文書$w$について...
- トピック分布 $\theta$が生成される。
$\theta \sim Dirichlet(\alpha)$ - 単語 $w_i$ について...
- まずはトピック $z_i$が生成される。
$z_{i} \sim Multinomial(\theta)$ - 多項確率分布 $p(w_i | z_i, \beta)$から単語が生成される。
- まずはトピック $z_i$が生成される。
- トピック分布 $\theta$が生成される。
実のところ、こうやってメモしててやっと謎が解けたんだけど、topicmodelsパッケージで LDA(x, k, control = list(estimate_beta = FALSE), model=...) と指定した場合、固定される「beta」とは、トピック別単語分布のハイパーパラメータ$\beta$ではなく、トピック別単語分布そのものなのだ。ハイパーパラメータはdeltaと呼ぶのである。なんだかなあ、もう...
なお、ハイパーパラメータのほうは、Gibbsサンプリングの場合のみ control=list(delta=...)として指定できる由。
雑記:データ解析 - トピックモデルの表記比較 (いつも思うんですが、専門家のみなさん記号を統一していただけませんかね)