Latent Dirichlet Allocation(LDA)
参考:https://medium.com/@lettier/how-does-lda-work-ill-explain-using-emoji-108abf40fa7d
内容が間違っている箇所がございましたら,ご指摘いただけると大変嬉しいです.
##概要
LDAは,要素(単語など)から作られた複合物(文書など)の集まりの生成過程を確率的にモデル化した手法である.今回は文書に着目する.
##Dirichletの由来
LDAでは,トピックから単語が生成される確率分布と文書からトピックが生成される確率分布をディリクレ分布(多項分布内のそれぞれの確率をサンプリングできる事前分布)よりサンプリングするため,Latent Dirichlet Allocationと呼ばれる:
①あるトピックからある単語が生成される確率分布をディリクレ分布よりサンプリングする(後の$\alpha$が関係)
②ある文書からあるトピックが生成される確率分布をディリクレ分布よりサンプリングする(後の$\beta$が関係)
##LDAの生成過程
LDAでは以下の生成過程を仮定している
1.使用する単語を選ぶ
2.文書数を決める
3.文書ごとに何個単語を使用するか決める(ポアソン分布より決定する)
4.トピック数を決める(人が決定するハイパーパラメータ)
5.$\alpha$と$\beta$を決める(0でない正の値:人が決定)
6.トピックを選び,$\beta$を用いたディリクレ分布より単語分布をサンプリングする.
7.文書を選び,$\alpha$を用いたディリクレ分布よりトピック分布をサンプリングする.
8.実際に文書を生成する
1.文書のトピック分布からトピックをサンプリングする
2.トピックの単語分布から単語をサンプリングする
3.最初に決定した単語数になるまで繰り返す
###ハイパーパラメータについて
・$\alpha$は各文書のトピック分布を決めるためのディリクレ分布のハイパーパラメータであり,値を大きくするほどトピック分布は一様になりやすい.
そのため,各文書からいろんなトピックが生成されると仮定することと一緒である.
・$\beta$は各トピックの単語分布を決めるためのディリクレ分布のハイパーパラメータであり,値を大きくするほど単語分布は一様になりやすい.
そのため,各トピックからいろんな単語が生成されると仮定することと一緒である.
##LDAのパラメータ推定について
LDAではトピック分布を表す$\theta$と単語分布を表す$\phi$を推定することが目標である.
直接$\theta$と$\phi$を推定するのではなく,まずギブスサンプリングを用いて単語に対するトピックの付与を推定する.その後$\theta$と$\phi$を推定する.
初期値設定
1.各単語にランダムにトピックを付与する.(同じ単語でも別のトピックが付与されることもある)
ギブスサンプリング
2.ある単語(例:「夏」)を対象文書から選び,対象文書や他文書に含まれている「夏」を元に,「夏」が各トピックに所属する確率を以下の式より求める.
$トピックtに所属する確率=\frac{トピックtが付与されている「夏」の個数+\beta}{トピックtが付与されている全単語数+ユニーク単語数\ast\beta}\ast\frac{対象文書内でトピックtが付与されている単語数+\alpha}{対象文書内でトピックが付与されている単語数+トピック総数\ast\alpha}$
※この時,対象としている単語は個数に入れない!
ある単語に対し,全トピック分この確率を算出し,それらの確率からサイコロを振る要領でその単語にトピックを与える.
3.2を全単語で行うと1イテレーションになり,イテレーションを何回か繰り返すと単語のトピックが安定してくる.
$\theta$と$\phi$の推定
4.各文書$m$の$\theta$の推定は以下の式で行う.
$文書mの\theta_t=\frac{文書mの単語のうち,トピックtに所属する単語数+\alpha}{文書mの単語数+トピック数\ast\alpha}$
5.各トピック$t$の$\phi$の推定は以下の式で行う.($n$は各単語に与えられる番号)
$トピックtの\phi_n=\frac{トピックtが付与された単語nの個数+\beta}{全体での単語nの出現回数+ユニーク単語数\ast\beta}$
##まとめ
Latent Dirichlet Allocationのアルゴリズムを中心に書いた.
ギブスサンプリングによってなぜ確率分布が収束するかは今後調べる必要がある.