ディリクレ分布 – ベイズ推論の重要な確率分布・事前分布としての役割
こんにちは、青の統計学です!
今回は、ディリクレ分布 について解説します。
数学的背景も踏まえて、理解が深まる構成にしているのでぜひ最後までご覧ください。
青の統計学では、noteで統計検定やG検定に関するチートシートを掲載しております。
こちらをクリック!
ディリクレ分布
ディリクレ分布は、統計学や機械学習分野で幅広く用いられる確率分布の1つです。
特に応用範囲は広く、自然言語処理では、トピックモデルにおいてディリクレ分布が用いられています。
また、機械学習におけるマルチクラス分類問題や、ランキング問題などでも利用されています。
さらに、遺伝学や生物学の分野でも、ディリクレ分布が使われています。このように、ディリクレ分布は統計学や機械学習の様々な領域で重要な役割を果たしています。
この分布は、カテゴリカル分布や多項分布の事前分布として用いられることが多く、ベイズ推論において非常に重要な役割を果たします。
この辺りが参考になります。
ディリクレ分布は、$K$次元のシンプレックス上の確率密度関数として定義されます。
そして確率密度関数は、$K$次元のシンプレックス上で定義されます。
シンプレックスとは、非負の成分の和が1となる$K$次元ベクトルの集合のことです。
つまり、$\boldsymbol{\theta} = (\theta_1, \theta_2, \ldots, \theta_K)$が$K$次元のシンプレックス上のベクトルであるためには、$\theta_i \geq 0$かつ$\sum_{i=1}^K \theta_i = 1$を満たす必要があります。
ディリクレ分布の確率密度関数は、次のように表されます
$$\text{Dir}(\boldsymbol{\theta}|\boldsymbol{\alpha}) = \frac{\Gamma\left(\sum_{i=1}^K\alpha_i\right)}{\prod_{i=1}^K\Gamma(\alpha_i)}\prod_{i=1}^K\theta_i^{\alpha_i-1}$$
$\boldsymbol{\alpha} = (\alpha_1, \alpha_2, \ldots, \alpha_K)$はディリクレ分布のパラメータベクトルであり、$\Gamma(\cdot)$はガンマ関数を表します。
各$\alpha_i$は対応する$\theta_i$の値を制御する濃度パラメータと呼ばれます。
$\alpha_i$が大きいほど、対応する$\theta_i$の値が大きくなる傾向があります。
ディリクレ分布の平均値と分散は、それぞれ次のように与えられます
$$\begin{align*}
\mathbb{E}[\theta_i] &= \frac{\alpha_i}{\sum_{j=1}^K\alpha_j} \\
\mathbb{V}[\theta_i] &= \frac{\alpha_i\left(\sum_{j\neq i}\alpha_j\right)}{\left(\sum_{j=1}^K\alpha_j\right)^2\left(\sum_{j=1}^K\alpha_j+1\right)}
\end{align*}$$
この分布の嬉しい点は、ある確率分布がディリクレ分布に従うと仮定し、その分布からサンプルを観測した場合、その確率分布の事後分布もディリクレ分布になる、という点です。
この性質は、ベイズ推論における計算を大幅に簡略化します。
例えば、カテゴリカル分布$\text{Cat}(x|\boldsymbol{\theta})$の事前分布として$\boldsymbol{\theta} \sim \text{Dir}(\boldsymbol{\alpha})$を仮定し、$\boldsymbol{n} = (n_1, n_2, \ldots, n_K)$がカテゴリカル分布からの観測値の計数であるとします。この場合、$\boldsymbol{\theta}$の事後分布は、
$$\boldsymbol{\theta}|\boldsymbol{n} \sim \text{Dir}(\boldsymbol{\alpha}+\boldsymbol{n})$$
と求められます。
これにより、観測値を考慮した$\boldsymbol{\theta}$の更新された分布が得られます。
例えば、$K=3$の場合、$\boldsymbol{\alpha} = (2, 5, 3)$とすると、$\theta_2$の値が比較的大きくなる傾向があります。
具体的に、$\boldsymbol{\theta}$の平均値は$\mathbb{E}[\boldsymbol{\theta}] = \left(\frac{2}{10}, \frac{5}{10}, \frac{3}{10}\right)$となり、分散は\(\mathbb{V}[\theta_1] = \frac{2\times8}{10^2\times11} \approx 0.015\)、\(\mathbb{V}[\theta_2] = \frac{5\times5}{10^2\times11} \approx 0.023\)、\(\mathbb{V}[\theta_3] = \frac{3\times7}{10^2\times11} \approx 0.018\)となります。
このように、$\alpha_i$の値が大きいほど、対応する$\theta_i$の平均値が大きく、分散が小さくなる傾向があります。
潜在ディリクレ過程
LDAは、与えられた文書集合からその潜在的なトピック構造を発見し、文書がどのように各トピックに関連しているかを理解することをモチベーションにした、統計モデルであり、ディリクレ分布を活用しています。
アイテム(例:記事、製品)の説明文や特徴をLDAで分析し、トピック分布を得る、のような使い方ができるので、よくレコメンドシステムと一緒に使われます。
そもそものLDAの目的は、「各文書は複数のトピック(政治とか経済とか)の混合である」「各トピックは単語の確率分布である」という前提に基づき、観測された単語から潜在変数$${z}$$の事後分布を推定することです。
前もって書いておきますが、${Dir(α)}$ はディリクレ分布、${\alpha}$ と${\beta}$ はハイパーパラメータです
文書ごとの各トピック ${k}$ について
単語分布 ${\phi_k \sim \text{Dir}(\beta)}$ を生成
各文書 ${d}$ について
トピック分布 ${\theta_d \sim \text{Dir}(\alpha)}$ を生成
各単語位置 ${i}$ について
トピック ${z_{di} \sim \text{Multinomial}(\theta_d)}$ を選択
→文書${d}$の単語位置${i}$の トピックが ${\theta_d}$に従う多項分布からサンプリングされることを示します。
単語 ${w_{di} \sim \text{Multinomial}(\phi_{z_{di}})}$ を生成
→実際の単語が、選ばれたトピックの単語分布からサンプリングされることを示します。
LDAの結合確率分布は以下のように表現されます
$${p(\mathbf{w}, \mathbf{z}, \mathbf{\theta}, \mathbf{\phi}|\alpha, \beta) = \prod_{k=1}^K p(\phi_k|\beta) \prod_{d=1}^M p(\theta_d|\alpha) \prod_{i=1}^{N_d} p(z_{di}|\theta_d)p(w_{di}|\phi_{z_{di}})}$$
ややこしくて意味がわからないと思いますが、これはLDAモデルにおける全ての変数の同時分布を表しています。
- ${p(\phi_k|\beta)}$: 各トピック ${k}$ の単語分布
- ${p(\theta_d|\alpha)}$: 各文書 ${d}$ のトピック分布
- ${p(z_{di}|\theta_d)$: 文書 ${d}$の ${i}$ 番目の単語のトピック割り当て
- ${p(w_{di}|\phi_{z_{di}})}$: トピック ${z_{di}}$に基づく単語 ${w_{di}}$ の生成確率
これは変分推論やギプスサンプリングなどの手法で近似的に解くことができます。
今回は、ギプスサンプリングで解説します。
補足|ギプスサンプリング
さて、LDAの目的を再確認すると各単語に割り当てられたトピックzを推定することです。
で、ギプスサンプリングは他の全ての変数が与えられたときの、各変数の条件付き確率分布から サンプリングを繰り返す方法なので
完全条件付き分布からサンプリングを行います。
$${p(z_{di} = k|z_{-di}, \mathbf{w}) \propto \frac{n_{dk}^{-di} + \alpha_k}{\sum_{k’} (n_{dk’}^{-di} + \alpha_{k’})} \cdot \frac{n_{kv}^{-di} + \beta_v}{\sum_{v’} (n_{kv’}^{-di} + \beta_{v’})}}$$
- ${n_{dk}}$ は文書 ${d}$ でトピック ${k}$ に割り当てられた単語数
- ${n_{kv}}$ はトピック${ k}$ に割り当てられた単語 ${v}$ の数を表します。
- 上付きの ${-di}$ は、現在の単語を除外することを意味します。線形代数でよくみますね。
つまり、左側の分数は現在の文書${d}$におけるトピック${k}$の割合を表し、右側の分数はトピック${k}$における単語${v}$の割合を表します。
これ、結局は「他の全ての単語のトピック割り当て(${z_{-di}}$)と全ての観測された単語(${\mathbf{w}}$)が与えられたとき、現在の単語 ${w_{di}}$ にトピック ${k}$ を割り当てる確率」と言えます。(大事)
ギブスサンプリングでは、この条件付き確率を使って各単語のトピックを繰り返しサンプリングすることで、結果的に結合確率から潜在変数 $$z$$ の事後分布をサンプリングします。(だからあくまでも近似的。)
では、なぜ今の条件付き確率で「近似的」と言えるのでしょうか?
どこかに上述した変数の同時分布との比例関係があると言える必要があります。
実は、ベイズの定理を使うと、この条件付き確率は結合確率を用いて以下のように表現できます
$${p(z_{di} = k|z_{-di}, \mathbf{w}) \propto p(\mathbf{w}, \mathbf{z}, \mathbf{\theta}, \mathbf{\phi}|\alpha, \beta)}$$
つまり、ギブスサンプリングで使用する条件付き確率は、結合確率を特定の変数について周辺化したものと比例関係にあります。
これにより、複雑な結合確率から直接サンプリングすることなく、より簡単な条件付き確率を用いてLDAの潜在変数を効率的に推定することができます。
この辺りはMCMC法の考えやベイズ法の考えが必要になります。
詳しくは、こちらをどうぞ!
まとめ
ディリクレ分布のまとめは以下の通りです。
– ディリクレ分布は、統計学や機械学習において重要な確率分布の1つ
– カテゴリカル分布や多項分布の事前分布として用いられる
– ベイズ推論におけるコンジャゲート事前分布として機能する
– $K$次元のシンプレックス上の確率密度関数として定義される
– シンプレックスとは、非負ベクトルの集合で成分の和が1となる制約がある
– $\boldsymbol{\theta} = (\theta_1, \theta_2, \ldots, \theta_K)$が$K$次元のシンプレックス上のベクトル
– 確率密度関数: $$\text{Dir}(\boldsymbol{\theta}|\boldsymbol{\alpha}) = \frac{\Gamma\left(\sum_{i=1}^K\alpha_i\right)}{\prod_{i=1}^K\Gamma(\alpha_i)}\prod_{i=1}^K\theta_i^{\alpha_i-1}$$
– $\boldsymbol{\alpha} = (\alpha_1, \alpha_2, \ldots, \alpha_K)$がパラメータベクトル
– 各$\alpha_i$は対応する$\theta_i$の値を制御する濃度パラメータ
– 平均値: \(\mathbb{E}[\theta_i] = \frac{\alpha_i}{\sum_{j=1}^K\alpha_j}\)
– 分散: \(\mathbb{V}[\theta_i] = \frac{\alpha_i\left(\sum_{j\neq i}\alpha_j\right)}{\left(\sum_{j=1}^K\alpha_j\right)^2\left(\sum_{j=1}^K\alpha_j+1\right)}\)
– 自然言語処理、マルチクラス分類、ランキング問題など様々な分野で応用される
ディリクレ分布は、複数のカテゴリーに分類される確率変数の同時分布を表現するのに適しており、ベイズ推論における計算を簡略化する重要な役割を果たしています。