マルチヌーイ分布 | 確率・統計
本記事はベクトルは太字($\boldsymbol{x}$)、スカラーは細字($x$)を使用します。
コイン投げ( 2 つの結果)を一般化して、K 個の結果がある 1 回の試行を考えます。例えば、サイコロを 1 回振る、赤・青・緑のボールから 1 つ引く、といった状況です。
- ベルヌーイ分布: 選択肢は 2つ $\rightarrow$ 試行は 1 回
- マルチヌーイ分布: 選択肢は複数 $\rightarrow$ 試行は 1 回
確率分布
\[\begin{aligned} P(\boldsymbol{x} \mid \boldsymbol{p}) &= \prod_{k=1}^{K} p_k^{x_k} \\ &= p_1^{x_1} \times p_2^{x_2} \times \dots \times p_i^{x_i} \times \dots \times p_K^{x_K} \\ &= p_1^{0} \times p_2^{0} \times \dots \times p_i^{1} \times \dots \times p_K^{0} \\ &= 1 \times 1 \times \dots \times p_i \times \dots \times 1 \\ &= p_i \\ \text{※}\ \boldsymbol{x}\ \text{はワンホットベクトル(one-hot Vector)} \end{aligned}\]- $\sum_{k=1}^{K} p_k = 1$ (すべての確率を足すと1)
- $x_k \in {0, 1}$ かつ $\sum_{k=1}^{K} x_k = 1$ (1つだけが1で、他は0、Deep Learning の ワンホット形式)
$P(\boldsymbol{x} \mid \boldsymbol{p})$
一般的いにマルチヌーイ分布は $P(\boldsymbol{X} = \boldsymbol{x})$ ではなく $P(\boldsymbol{x} \mid \boldsymbol{p})$ と書きます。
Deep Learning(尤度関数)の計算に都合がいいためです。
Deep Learning の目的は、手元にあるデータ $\boldsymbol{x}$(固定)に対して、最も辻褄の合うパラメータ $\boldsymbol{p}$(変数)を探すことです。
$P(\boldsymbol{X} = \boldsymbol{x})$ は主題が確率変数 $\boldsymbol{X}$ に見えます。$P(\boldsymbol{x} \mid \boldsymbol{p})$ と書くと、$\boldsymbol{p}$ をいろいろ動かして、この確率を最大化(最尤推定)するというモデルを訓練するときの視点が数式に色濃く反映されるようになります。
具体例
\[\boldsymbol{p} = \begin{pmatrix} p_1 \\ p_2 \\ p_3 \\ p_4 \\ p_5 \\ p_6 \end{pmatrix} = \begin{pmatrix} 0 \\ 1/10 \\ 6/10 \\ 1/10 \\ 1/10 \\ 1/10 \end{pmatrix} \quad , \quad \boldsymbol{x} = \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5 \\ x_6 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ 1 \\ 0 \\ 0 \\ 0 \end{pmatrix}\]例えば $k = 3$ の場合、$p_3 = 0.6$ になります。
\[P(\boldsymbol{x} \mid \boldsymbol{p}) = 0^0 \times (0.1)^0 \times (0.6)^1 \times (0.1)^0 \times (0.1)^0 \times (0.1)^0 = 0.6\]マルチヌーイ分布の最尤推定(MLE)
最尤推定(Maximum Likelihood Estimation: MLE)はマルチヌーイ分布(カテゴリカル分布)の確率質量関数から、最も尤もらしいパラメータ $\boldsymbol{p}$ を導出します。
簡単に言うとデータの中でその選択肢が出現した割合(頻度)が最尤推定値になります。
設定と前提条件
あるサイコロ($K$ 択の選択肢)を $N$ 回独立に振り、データが集まったとします。
データ全体を $\mathcal{D} = {\boldsymbol{x}^1, \boldsymbol{x}^2, \dots, \boldsymbol{x}^N}$ とします。
データ番号が上、次元・成分が下という Deep Learning で標準的な記法を採用します。
- $x^n_k$ : $n$ 番目のデータの $k$ 番目の成分($1$ または $0$ のワンホット形式)
- $p_k$ : $k$ 番目の選択肢が起こる確率(真のパラメータ)
最尤推定を 4 ステップに分けて考えます。
Step 1. 尤度関数(Likelihood Function)を立てる
集まったデータ $N$ 個が「同時に、このパターンで発生する確率」を計算します。
各試行は独立(無関係)に起きると仮定するため、単純にすべてのデータの確率質量関数を掛け合わせます。
この $L(\boldsymbol{p})$ を最大化するような $\boldsymbol{p}$ が最尤推定量になります。
Step 2. 対数尤度関数に変形する
掛け算(総乗 $\prod$)のままだと微分が複雑になるため、全体の自然対数($\log$)を取って、計算しやすい足し算(総和 $\sum$)の形に変換します。
\[\log L(\boldsymbol{p}) = \log \left( \prod_{n=1}^{N} \prod_{k=1}^{K} p_k^{x^n_k} \right) = \sum_{n=1}^{N} \sum_{k=1}^{K} x^n_k \log p_k\]ここで、$\sum_{n=1}^{N} x^n_k$ に注目します。これは $N$ 回の試行のうち、 $k$ 番目の選択肢が選ばれた合計回数を表しています。これを $N_k$ と置き換えて式を整理します。
\[\log L(\boldsymbol{p}) = \sum_{k=1}^{K} N_k \log p_k\]Step 3. ラグランジュの未定乗数法を適用する
対数尤度関数を最大化したいのですが、確率の性質上、「すべて足すと1になる」という制約ルールが存在します。
\[\text{制約条件: } \sum_{k=1}^{K} p_k = 1\]この制約付き最大化問題を解くために、ラグランジュの未定乗数法を使い、制約を組み込んだ新しい関数 $\mathcal{L}(\boldsymbol{p}, \lambda)$ を定義します。
\[\mathcal{L}(\boldsymbol{p}, \lambda) = \sum_{k=1}^{K} N_k \log p_k + \lambda \left( 1 - \sum_{k=1}^{K} p_k \right)\]Step 4. 偏微分して「傾き = 0」となる点を求める
求めたいパラメータ $p_k$ で偏微分し、その値を 0 と置きます。
この式を変形すると、次の関係式が得られます。 \(N_k = \lambda p_k\)
ここで、すべての選択肢($k=1$ から $K$ まで)について、この両辺の合計(総和)を取ってみます。
\[\sum_{k=1}^{K} N_k = \sum_{k=1}^{K} \lambda p_k\]- 左辺: すべての選択肢のカウント数を足すと、全試行回数 $N$ になります($\sum N_k = N$)。
- 右辺: $\lambda$ は $k$ に依存しない定数なので $\sum$ の外に出せます。また、制約条件より $\sum p_k = 1$ です。
したがって、式は以下のように書き換わります。 \(N = \lambda \times 1 \implies \lambda = N\)
これにより、未定乗数 $\lambda$ の正体が「総データ数 $N$」であることが判明しました。
最尤推定値(MLE)の導出
$\lambda = N$ を、一歩手前の式($N_k = \lambda p_k$)に代入し、目的のパラメータ $p_k$ について解きます。最尤推定値であることを示すために $\hat{p}_k$(ハット)を表記に加えます。
\[\hat{p}_k = \frac{N_k}{N}\] \[\text{(ある選択肢の確率)} = \frac{\text{その選択肢が出現した回数}}{\text{すべてのデータ数}}\]マルチヌーイ分布の最尤推定量は、要素の合計が $1$ になるベクトル(離散確率分布)として得られます。
最尤推定量 $\hat{p}_k = \frac{N_k}{N}$ の意味
データ全体 $N$ 回のうち、カテゴリ $k$ が発生した回数を $N_k$ としたとき、最尤推定量は以下のようにベクトルとして求まります。
\[\hat{\mathbf{p}} = \begin{pmatrix} \hat{p}_1 \\ \hat{p}_2 \\ \vdots \\ \hat{p}_K \end{pmatrix} = \begin{pmatrix} N_1 / N \\ N_2 / N \\ \vdots \\ N_K / N \end{pmatrix}\]これは各確率 $p_k$ の具体的な値を並べたものであり、「手元のデータから見積もった、このサイコロ(あるいは単語など)が各目を出す確率の分布」 そのものです。