機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

カテゴリ分布のパラメータの事後分布

カテゴリ分布

カテゴリ分布は以下のように表されるのでした。
 {\bf s}=(s_1,\ldots,s_K)^\top,\ s_k\in\{0,1\}, \sum_{k=1}^K s_k=1
 {\boldsymbol\pi}=(\pi_1,\ldots,\pi_K)^\top,\ \pi_k\in(0,1),\ \sum_{k=1}^K\pi_k=1

\begin{eqnarray}
{\rm Cat}({\bf s}|{\boldsymbol\pi})=\prod_{k=1}^K\pi_k^{s_k}\tag{1}
\end{eqnarray}
 {\bf s}が確率変数で、 \boldsymbol\piがパラメータです。
カテゴリ分布に対数を取ったものは以下のようになります。
\begin{eqnarray}
\ln{\rm Cat}({\bf s}|{\boldsymbol\pi})=\sum_{k=1}^Ks_k\ln\pi_k\tag{2}
\end{eqnarray}
例えば、すべての kに対して\pi_k=1/6とおけば、さいころの出目に関する分布を表現できます。

ディレクレ分布

ディレクレ分布は以下のように表されるのでした。
 {\boldsymbol\pi}=(\pi_1,\ldots,\pi_K)^\top,\ \pi_k\in(0,1),\ \sum_{k=1}^K\pi_k=1
 {\boldsymbol\alpha}=(\alpha_1,\ldots,\alpha_K)^\top,\ \alpha_k\in{\mathbb{R}^+}

\begin{eqnarray}
{\rm Dir}({\boldsymbol\pi}|{\boldsymbol\alpha})=C_{\rm D}({\boldsymbol\alpha})\prod_{k=1}^K\pi_k^{\alpha_k-1}\tag{3}
\end{eqnarray}
C_{\rm D}({\boldsymbol\alpha})は正規化項です。
\begin{eqnarray}
C_{\rm D}({\boldsymbol\alpha})=\frac{\Gamma(\sum_{k=1}^K\alpha_k)}{\prod_{k=1}^K\Gamma(\alpha_k)}\tag{4}
\end{eqnarray}

ディレクレ分布に対数を取ったものは以下のようになります。

\begin{eqnarray}
\ln{\rm Dir}({\boldsymbol\pi}|{\boldsymbol\alpha})=\sum_{k=1}^K(\alpha_k-1)\ln\pi_k+\ln C_{\rm D}({\boldsymbol\alpha})\tag{5}
\end{eqnarray}

ディレクレ分布に関する基本的な期待値計算も記しておきます。

\begin{eqnarray}
\langle\pi_k\rangle=\frac{\alpha_k}{\sum_{i=1}^K\alpha_i}\tag{6}\\
\langle\ln\pi_k\rangle=\psi(\alpha_k)-\psi\left(\sum_{i=1}^K\alpha_i\right)\tag{7}
\end{eqnarray}
 \psi(\cdot)はディガンマ関数です。
 \psiの日本語のカナ読みは「プサイ」や「プシー」です。

事後分布

カテゴリ分布に従うN個の離散値データ{\bf S}=\{{\bf s}_1,\ldots,{\bf s}_N\}があります。

f:id:olj611:20210224052932p:plain

{\boldsymbol\pi}の事前分布はカテゴリ分布に対する共役事前分布であるディレクレ分布であるとします。

\begin{eqnarray}
p({\boldsymbol\pi})={\rm Dir}({\boldsymbol\pi}|{\boldsymbol\alpha})=C_{\rm D}({\boldsymbol\alpha})\prod_{k=1}^K\pi_k^{\alpha_k-1}\tag{8}
\end{eqnarray}

この時、{\boldsymbol\pi}の事後分布は次のように計算できます。

\begin{eqnarray}
p({\boldsymbol\pi}|{\bf S})&\propto&p({\bf S}|{\boldsymbol\pi})p({\boldsymbol\pi})\\
&=&\left(\prod_{n=1}^N{\rm Cat}({\bf s}_n|{\boldsymbol\pi})\right){\rm Dir}({\boldsymbol\pi}|{\boldsymbol\alpha})\tag{9}
\end{eqnarray}

対数を取ってみましょう。

\begin{eqnarray}
\ln p({\boldsymbol\pi}|{\bf S})&=&\sum_{n=1}^N \ln {\rm Cat}({\bf s}_n|{\boldsymbol\pi})+\ln {\rm Dir}({\boldsymbol\pi}|{\boldsymbol\alpha})+{\rm const}\\
&=&\sum_{n=1}^N \sum_{k=1}^K s_{nk}\ln\pi_k+\sum_{k=1}^K(\alpha_k-1)\ln\pi_k+\ln C_{\rm D}({\boldsymbol\alpha})+{\rm const}\\
&=&\sum_{k=1}^K\left(\sum_{n=1}^N  s_{nk}+\alpha_k-1\right)\ln\pi_k+{\rm const}\tag{10}\\
\end{eqnarray}

事後分布もディレクレ分布になっていることが分かります。

\begin{eqnarray}
p({\boldsymbol\pi}|{\bf S})={\rm Dir}({\boldsymbol\pi}|\hat{\boldsymbol\alpha})\tag{11}\\
\hat{\alpha_k}=\sum_{n=1}^N s_{nk}+\alpha_k\ for \ k=1,\ldots,K\tag{12}
\end{eqnarray}

偉人の名言

f:id:olj611:20210219104031p:plain
失敗したわけではない。それを誤りだと言ってはいけない。勉強したのだと言いたまえ。

トーマス・エジソン

参考文献

ベイズ推論による機械学習入門

動画

目次へ戻る