最尤推定法 | 確率・統計
最尤推定法(Maximum Likelihood Estimation)はある観測値(実験データ)が一番最もらしく(確率最大で)発生する確率 $p$ を求めます。
※ Deep Learning は損失を最小化するようにパラメータを更新するため最尤推定を最小化問題にします。そのために尤度関数" class="autolink-keyword">負の対数尤度関数を使用しますが本記事では一般的な尤度関数の最大化問題を記載します(最尤推定量は対数尤度関数の最大化と一致します)。
「$p$ を求める」ことの正確な意味
「確率 $p$ を求める」という言い方をしましたが、より正確には以下のように考えます。
- 分布の形(モデル)はあらかじめ決めておく(例:ベルヌーイ分布、正規分布など)
- その分布は、パラメータ $\theta$ によって特徴づけられる分布族 $p_\theta$ である、とみなす
- 最尤推定は、この $\theta$ を動かして尤度 $L(\theta) = p_\theta(x_1,\dots,x_n)$ を最大化する $\theta$ を探す手続きである
つまり、「$p$ という分布そのものを求める」のではなく、「$\theta$ を求めて、その結果として分布 $p_\theta$ が定まる」と捉えるのがより正確です。
ベルヌーイ分布であれば $\theta$ は成功確率 $p$(スカラー)、カテゴリカル分布であれば $\theta$ はパラメータベクトル $\boldsymbol{p}$ に対応します(下記参照)。
この視点は、ベイズ確率 と対応づけて理解するときに特に役立ちます。最尤推定が「$\theta$ という1点を求める」手続きであるのに対し、ベイズ推定は「$\theta$ の分布全体(事後分布)を求める」手続きである、という対比がはっきりします。
ベルヌーイ分布
ベルヌーイ試行の観測値を ${x_1, x_2, .. x_n}$ とします。
二項分布の( 1 回の)試行ではなくベルヌーイ試行を n 回実行した観測値です。
対数尤度関数
ベルヌーイ分布の対数尤度関数の導出過程は 尤度関数 を参照してください。
\[\begin{aligned} \log L(p) &= \sum_{i=1}^{n} \log p^{x_i}(1-p)^{1-x_i} \\ &= \sum_{i=1}^{n} \left( x_i \log p + (1-x_i)\log(1-p) \right) \end{aligned}\]上記を尤度関数" class="autolink-keyword">負の対数尤度関数に変換すると 2 クラス分類のニューラルネットワークの損失関数の形( 2 クラスの場合の交差エントロピー)です($-\sum_{i=1}^{n} \left( x_i \log p + (1-x_i)\log(1-p) \right)$)。
最尤推定量
\[\begin{aligned} \frac{d}{dp}\left( \log L(p)\right) = 0 \\ \hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i \end{aligned}\](導出過程は下記の補足1を参照)
カテゴリカル分布(マルチヌーイ分布)
カテゴリカル分布の確率質量関数から、最も尤もらしいパラメータ $\boldsymbol{p}$ を導出します。
対数尤度関数
カテゴリカル分布の対数尤度関数の導出過程は 尤度関数 を参照してください。
\[\begin{aligned} \log L(\boldsymbol{p}) &= \log \left( \prod_{i=1}^{N} \prod_{j=1}^{M} p_j^{x^i_j} \right) \\ &= \sum_{i=1}^{N} \sum_{j=1}^{M} x^i_j \log p_j \end{aligned}\]ここで、$\sum_{i=1}^{N} x^i_j$ に注目します。
これは $N$ 回の試行のうち、 $j$ 番目の選択肢が選ばれた合計回数を表しています。
これを $N_j$ と置き換えて式を整理します。
最尤推定値
この対数尤度を、確率の制約($\sum_{j=1}^{M} p_j = 1$)のもとで最大化すると、ラグランジュの未定乗数法により次の関係式が得られます(導出過程は下記の補足3を参照)。
\[N_j = \lambda p_j \quad (\lambda = N)\]$\lambda = N$ を上記の式に代入し、目的のパラメータ $p_j$ について解きます。最尤推定値であることを示すために $\hat{p}_j$(ハット)を表記に加えます。
\[\hat{p}_j = \frac{N_j}{N} \\ \boldsymbol{\hat{p}} = (\frac{N_1}{N}, \ldots, \frac{N_M}{N})\]補足
1. ベルヌーイ分布の最大推定値の導出過程
\[\begin{aligned} \frac{d}{dp}\left(-\log L(p)\right) &= -\sum_{i=1}^{n} \left( x_i \frac{d}{dp}\log p + (1-x_i)\frac{d}{dp}\log(1-p) \right) \\ &= -\sum_{i=1}^{n} \left( \frac{x_i}{p} - \frac{1-x_i}{1-p} \right) \\ &= -\sum_{i=1}^{n} \frac{x_i - p}{p(1-p)} \\ &= -\frac{1}{p(1-p)} \left( \sum_{i=1}^{n} x_i - p\sum_{i=1}^{n} 1 \right) \\ &= \frac{1}{p(1-p)} \left( np - \sum_{i=1}^{n} x_i \right) \end{aligned}\]となるため、
\[\frac{1}{p(1-p)} \left( np - \sum_{i=1}^{n} x_i \right) = 0\]を $p$ について解き、$p$ の最尤推定量として、
\[\hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i\]が得られます。
2. ベルヌーイ分布と二項分布の最尤推定量の関係
※ ベルヌーイ試行をベースにした確率分布(ベルヌーイ分布・二項分布など)において、最も尤もらしい確率 $p$ を最尤推定法で求めると、データの持ち方がどうあれ、最終的には必ずデータの平均値(標本平均)に一致します。二項分布の場合、$N$ 回の試行のうち成功した回数を $x$ とすると、以下のように書けます。
\[\frac{1}{n}\sum_{i=1}^{n} x_i \iff \frac{x}{N}\]3. カテゴリカル分布の最大推定値の導出過程
対数尤度関数を最大化したいのですが、確率の性質上、「すべて足すと1になる」という制約ルールが存在します。
\[\text{制約条件: } \sum_{j=1}^{M} p_j = 1\]この制約付き最大化問題を解くために、ラグランジュの未定乗数法を使い、制約を組み込んだ新しい関数 $\mathcal{L}(\boldsymbol{p}, \lambda)$ を定義します。
\[\mathcal{L}(\boldsymbol{p}, \lambda) = \sum_{j=1}^{M} N_j \log p_j + \lambda \left( 1 - \sum_{j=1}^{M} p_j \right)\]求めたいパラメータ $p_j$ で偏微分し、その値を 0 と置きます。
この式を変形すると、次の関係式が得られます。
\[N_j = \lambda p_j\]ここで、すべての選択肢($j=1$ から $M$ まで)について、この両辺の合計(総和)を取ってみます。
\[\sum_{j=1}^{M} N_j = \sum_{j=1}^{M} \lambda p_j\]- 左辺: すべての選択肢のカウント数を足すと、全試行回数 $N$ になります($\sum N_j = N$)。
- 右辺: $\lambda$ は $j$ に依存しない定数なので $\sum$ の外に出せます。また、制約条件より $\sum p_j = 1$ です。
したがって、式は以下のように書き換わります。 \(N = \lambda \times 1 \implies \lambda = N\)
これにより、未定乗数 $\lambda$ の正体が「総データ数 $N$」であることが判明しました。
最尤推定値(MLE)の導出
$\lambda = N$ を、一歩手前の式($N_j = \lambda p_j$)に代入し、目的のパラメータ $p_j$ について解きます。最尤推定値であることを示すために $\hat{p}_j$(ハット)を表記に加えます。
\[\hat{p}_j = \frac{N_j}{N}\] \[\text{(ある選択肢の確率)} = \frac{\text{その選択肢が出現した回数}}{\text{すべてのデータ数}}\]カテゴリカル分布の最尤推定量は、要素の合計が $1$ になるベクトル(離散確率分布)として得られます。
最尤推定量 $\hat{p}_j = \frac{N_j}{N}$ の意味
データ全体 $N$ 回のうち、カテゴリ $j$ が発生した回数を $N_j$ としたとき、最尤推定量は以下のようにベクトルとして求まります。
\[\hat{\mathbf{p}} = \begin{pmatrix} \hat{p}_1 \\ \hat{p}_2 \\ \vdots \\ \hat{p}_M \end{pmatrix} = \begin{pmatrix} N_1 / N \\ N_2 / N \\ \vdots \\ N_M / N \end{pmatrix}\]これは各確率 $p_j$ の具体的な値を並べたものであり、「手元のデータから見積もった、このサイコロ(あるいは単語など)が各目を出す確率の分布」 そのものです。