機械学習の勉強Part5: ノンパラメトリック3 ~ディリクレ過程~
イキサツ
さて,この機械学習の勉強シリーズは私がさぼってきたノンパラメトリックベイズの勉強のために始めました.今回は大詰めのディリクレ過程について書きたいと思います.本記事では数式が多用されるため,ご注意ください.
本記事はディリクレ分布から前回紹介した分割モデルを導出する過程になります.なので,実装のみやノンパラメトリックベイズの概要のみ知りたい方は,参照しなくても問題ない記事となります.
また,前回,前々回のノンパラシリーズのリンクを貼っておくので,良ければご参照ください.
また,引き続き参考書はオーム社の「続・わかりやすいパターン認識―教師なし学習入門」です.
また,本記事もNotionAIとChatGPTがお供についてきてくれています.
概要
ディリクレ過程とは,確率分布を表現するためのツールの1つでベイズ統計学でよく使われます.例えば,サイコロを投げたときの各目の出る確率を推定するときに使います.統計を扱う人はサイコロがお好き.
ディリクレ過程は事前分布として使われ,次のように生成されます.まず,ある基底測度(base measure)とその重み付けのための正の定数パラメータを与え,その基底測度から確率分布を一つサンプリングします.そして,その確率分布に対して,新しい確率値を生成する確率を計算します.その確率分布に対して,新しい確率値を追加するかどうかを決め,追加する場合は新しい確率値を生成します.このプロセスを繰り返し行い,最終的に生成された確率分布がディリクレ過程に従うと言います.
ディリクレ過程は,機械学習にも応用され,クラスタリングやトピックモデリングなどに利用されます.例えば,文書集合を分析するときに,ディリクレ過程を使ってトピックの分布を推定することができます.
ま,何言ってるかわからないですよね!!笑
とりあえず,太字の文字だけでも頭に残しておいてください.
ディリクレ分布と分割モデル
ノンパラメトリックベイズでは,ディリクレ分布を用いて混合正規分布のパラメータなどを算出していきます.このため,ディリクレ分布から分割モデルのルールが導出されなければ,そもそも使えません.このため,数式を展開して,導出を行っていきます.また,ディリクレ分布の詳しいことにつきましては,参考書に書いてありますので,そちらはご自身で勉強して下さい.
さて,現在$${c}$$個のクラスタ$${\omega_1, \cdots , \omega_c}$$を潜在変数である$${s_1,\cdots,s_n}$$に確率的に割り当てることを考える.ノンパラシリーズの1章でも出てきたが,$${s}$$はデータ$${x}$$に対応するクラスタ集合である.
また,ここで$${s_k}$$に$${\omega_i}$$が割り振られる確率を$${\pi_i}$$とし,$${n<<c}$$である.このとき,$${s_k}$$は$${\omega_1, \cdots , \omega_c}$$のうちの1つのみが割り当てられるので,
$${\sum^c_{i=1} \pi_i = 1,\bm \pi = (\pi_1, \cdots , \pi_c)}$$
と定義されます.また,$${\bm \pi}$$を生成する確率分布として,ディリクレ分布を用います.定義は次式で示す.
$${p(\bm \pi) = {\rm Dir}(\alpha_1,\cdots,\alpha_c) = \frac{\Gamma (\alpha)}{\prod_{i=1}^c \Gamma (\alpha_i)} \prod_{i=1}^c \pi_i^{\alpha_i-1}}$$
$${\Gamma}$$はガンマ関数で,$${\alpha_i}$$の総和は$${\alpha }$$となります.ガンマ関数は階乗の一般系を指します.階乗は$${n!}$$のやつです.任意の正の整数に対して以下の性質を持ちます.
$${\Gamma(n+1) = n!}$$
1つずれることについて注意して下さい.
生成された$${\bm \pi }$$に基づいて,クラスタの結果$${s_1,\cdots,s_n}$$が確率$${\pi_1^{n_1},\cdots,\pi_c^{n_c}}$$で生成される.この時の$${n_i}$$は各クラスタに所属しているデータの個数を示している.
さて,ちょっと難しくなってきましたね笑
全ての数式を追うのは少し難しいので,概要や機能だけ抽出しましょう(もちろん,全部を把握するのが一番良いです).ここからが本番です.これまでは前準備で,料理でいうところの下ごしらえが終わりました(料理だとこっちが本番??).ここから,実際に分割ルールを導出していきます.
前記事のホップの壺や中華料理店過程(CRP)では,既に投入or着席された玉or客のに基づいて,確率計算を行っておりました.と,いうことは分割ルールを使用するためには$${s_1,\cdots,s_{n-1}}$$が既に分かっていて,$${s_n = \omega_i}$$となる条件付き確率$${P(s_n = \omega_i|s_1,\cdots,s_{n-1})}$$を求めることになります.
条件付き確率の読み方は「|」より右が既知の情報や過去の事象,左が右の事象が起こった時の今回求める確率の事象です.$${P(B|A)}$$ならば,Aだった時にBが発生する確率は?となります.
ここで,$${P(s_n = \omega_i|s_1,\cdots,s_{n-1})}$$は次の様な展開が可能になります.
$${P(s_n = \omega_i|s_1,\cdots,s_{n-1}) = \frac{P(s_1 \cdots s_{n-1}, s_n = \omega_i)}{P(s_1 \cdots s_{n-1})} }$$
$${=\frac{\Gamma(n-1+\alpha)}{\Gamma(n +\alpha)} \times \frac{\Gamma(n_i+1+\alpha/c)}{\Gamma(n_i +\alpha/c)} = \frac{n_i+\alpha/c}{n-1+\alpha} }$$
それっぽい式が出てきましたね! さて,最初のほうに$${c>>n}$$という条件を付けておきました.これは,存在するクラスタの数が観測されたデータ数よりも十分に大きいことを示します.ネタばれになりますが,このcを無限大に持っていくことで,先ほどのホップの壺やCRPの式の導出ができます.さらに,クラスタの数であるcを無限にするということは,クラスタの分割が無限に可能なわけですね! このため,ノンパラメトリックベイズは無限次元や無限個のクラスタを扱うなどと言われます.
さて,上記の式では$${\omega_{i}}$$における所在について記していませんでした.この$${\omega_{i}}$$は$${s_1,\cdots,s_{n-1}}$$のいずれかに既出しているクラスタor新規クラスタの2パターンが考えられます.
既出クラスタの場合はc→∞で$${\frac{n_i}{n-1+\alpha}}$$となります.
新規クラスタの場合は,まだ既出していない無限のクラスタから選択する必要があるので,$${\frac{c-既出クラスタ数}{c}\frac{\alpha}{n-1+\alpha}}$$となる.ここで,$${n_i=0}$$なのでc→∞で$${\frac{\alpha}{n-1+\alpha}}$$となります.まとめると,
$${既出クラスタ : P(s_n = {\omega_i}|s_1,\cdots,s_{n-1})=\frac{n_i}{n-1+\alpha}}$$
$${新規クラスタ : P(s_n = {\omega_i}|s_1,\cdots,s_{n-1})=\frac{\alpha}{n-1+\alpha}}$$
上記の式は前回記事のホップの壺,CRPについて同様の式となっていると思われます.このように,ディリクレ分布から生成確率を求め,クラスタを無限大に設計することで,分割ルールが導出されます.
まとめ
本記事では,ディリクレ分布からホップの壺やCRPの分割ルールについて導出しました.読者の皆様からしたら,「これで?」「実際にはどうやって使うの?」みたいな感想があるとは思われますが,そちらに関しては次回の記事になる予定です.
また,おかげさまでフォロワー様も100を超えようとしております.牛歩ではありますが,進歩には変わらないと思っております.日頃のスキ・フォローをありがとうございます.今後もよろしくお願いいたします.
この記事が気に入ったらサポートをしてみませんか?