今回は離散分布(Discrete distribution)の代表格である多項分布(Multinomial distribution)や、その共役事前分布であるディリクレ分布(Dirichlet distribution)との関係性や計算方法を整理したいと思います。
離散分布というと、本来はポアソン分布なども含めた離散値を出力するような分布全般のこと指します。しかし実際に論文などを読んでいると、くじ引きのように単純に出目の比率が与えられたような分布を離散分布と名付けてしまっている場合もよく見られます。まぁ文脈的に誤解を招くことはあまりないと思うのですが、くじ引きの分布をもっとキッチリ表現するなら、複数あるカテゴリーから1つを抽出するという意味でカテゴリカル分布(Categorical distribution)と呼ぶのが適切かと思います。あるいは、観測回数が1の場合の多項分布とかって呼ぶこともできますね。
とまぁ別に名前はどうでもいいのですが、これらの離散分布の関係性をまとめてみると次の図のようになります。
ピンクの線が多次元変数への一般化で、オレンジの線が複数回の試行を行った場合に対する一般化です。グレーの点線矢印は、それぞれの確率分布に対する共役の関係性を示しています(矢印の元に当たるのが共役事前分布です)。
結論としては、多項分布とその共役事前分布であるディリクレ分布の計算だけある程度馴染んでおけば、後はその特殊な例なのでいちいち気にする必要はないですということになりますね。
<各確率分布の自己紹介>
さて、これからいろいろ計算確認をする前に、それぞれの確率分布の定義式を列挙してみます。
・ベルヌーイ分布(Bernoulli)
お馴染みのひしゃげたコインの分布です。は0か1のどちらかの値を必ず取り、パラメータはをみたします。*1
・二項分布(Binomial)
コイントスを回行った時の、表面の回数に関する分布です。したがっては0以上以下の整数値を取ります。ベルヌーイ分布と同様、です。
・カテゴリカル分布(Categorical)
こちらもお馴染みの面を持つひしゃげたサイコロの分布ですね。次元ベクトルであるの要素は0か1のどちらかの値を必ず取り、いずれか1つのしか1にならないので、をみたします。それぞれの出目の確率はで与えられ、をみたすように設定します。
・多項分布(Multinomial)
面を持つひしゃげたサイコロを回投げた時の、出目の回数に関する分布です。したがって次元ベクトルであるの要素は非負の整数値を必ず取り、をみたします。カテゴリカル分布と同様です。
・ベータ分布(Beta)
コイントスの共役事前分布に当たる分布です。コインの「ひしゃげ具合」に関する分布になります。この分布から出てくる値は過ならず0と1の間に収まってくれるように作られています。分布の特徴を決めるやは、0より大きい実数値を設定する必要があります。ちなみに正規化項に当たる部分にはイカつい格好のガンマ関数の塊がいます。ガンマ関数は階乗「!」の実数値バージョンですが、これはライブラリとか使えば簡単に計算できるのであまり怖がる必要はないです。*2
・ディリクレ分布(Dirichlet)
サイコロの共役事前分布に当たる分布です。サイコロの「ひしゃげ具合」に関する分布ですが、混合モデルに使われるほか、自然言語処理で使われるLDA(Latent Dirichlet Allocation)の由来にもなっていますね。出てくる値は必ずをみたしてくれるように分布が作られています。また、すべてのに対しては0より大きい実数値を設定する必要があります。ここでもまたイカついの塊が先頭にありますが、多くの場合で無視して計算できるので気にしなくても大丈夫です。
<各確率分布の関係性>
さて、自己紹介が終わったところでそれぞれの分布の関係性を式で確認してみましょう。ここでは、多項分布やディリクレ分布がその他の分布の特別な場合であることを確認してみます。
・多項分布=>カテゴリカル分布
多項分布においてと設定してあげれば、
となり、カテゴリカル分布に一致します。と設定したことによりは0か1かしか取らなくなったことと、の計算に注意してください。
・多項分布=>二項分布
多項分布において次元をと設定してあげれば、
となり、二項分布になります。 の制約があるので、実質のみの確率分布になるのがポイントです。パラメータもわざわざ2個持つ必要はなく、を考慮すればだけ持っておけば大丈夫ですね。
・ディリクレ分布=>ベータ分布
ディリクレ分布において次元をと設定してあげれば、
となり、ベータ分布になります。ここでも、の制約条件を利用することによって実質のみの確率分布にすることができます。
同様に、ベルヌーイ分布はカテゴリカル分布からとおくか、二項分布からとおくと導けます。簡単なので省略します。
<共役事前分布とベイズ推論>
さて最後に、ディリクレ分布が多項分布の共役事前分布であることを確認してみましょう。共役事前分布とは、観測モデルとかけ合わせた後に同じ関数形状が出てくるような分布のことです。つまり、ベイズの定理
を適用したときに、事前分布と事後分布が確率変数に関して同じ形式の関数になるようにを定めるということですね。このような事前分布を選んでおくと、各種推論計算が解析的に簡単に計算できるようになるほか、データを小分けにして学習させるオンライン学習(追加学習、逐次学習)を構築することも容易になります。
ということで、ディリクレ分布を事前分布とし、多項分布に従うデータを観測した後の事後分布を計算してみましょう。
に関係する部分にだけ注目し、正規化項(ガンマ関数とか階乗とか含んでる項)を無視して計算するのがラクする秘訣です。さて、結果の式を見てみると、ディリクレ分布と同じ関数形状をしていることがわかります。したがって、とおいてあげれば、
ということになり、事後分布もディリクレ分布になることがわかりました。*3
また、上のベイズ推論でと置けば、カテゴリカル分布のパラメータに関する学習も同様にディリクレ分布を使って行うことができることがわかります。これは特に混合モデル(クラスタリングなど)を扱うときに出てくる計算なので、ある程度慣れておくと便利です。