最尤推定法
最尤推定法(Maximum Likelihood Estimation)は、観測されたデータに対する尤度を最大にするパラメータ $\theta$ を推定値とする方法です。
このページでは観測値が独立同分布(i.i.d.)に従う場合の導出を扱います。尤度関数・対数尤度関数の定義と導出、i.i.d. でない場合(分類器・LLM など)は 尤度関数 を参照してください。
NOTE
\[\underset{\theta}{\arg\max}\ \log L(\theta) = \underset{\theta}{\arg\min}\ \bigl(-\log L(\theta)\bigr)\]
深層学習は損失を最小化するようにパラメータを更新するため、最尤推定を最小化問題の形で扱います。そのために負の対数尤度関数を損失として使用しますが、本記事では対数尤度関数の最大化問題として記載します。最尤推定量は、対数尤度の最大化と負の対数尤度の最小化のどちらで求めても同じ値になります。
「パラメータ $\theta$ を求める」ことの正確な意味
「確率 $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$ の分布全体(事後分布)を求めます。
最尤推定量と最尤推定値
- 最尤推定量:観測値の関数として見た $\hat\theta$(観測値が変われば値も変わる、確率変数)
- 最尤推定値:実際の観測値を代入して得られた具体的な値
なお $\arg\max$ は一般には集合で、最大点が複数ある場合もあります。
ベルヌーイ分布
ベルヌーイ試行の観測値を ${x_1, x_2, \dots, x_n}$(各 $x_i\in{0,1}$)とします。成功確率を $p$ とし、この節では $\theta=p$ です。
前提(尤度関数 の再掲)
尤度関数と対数尤度関数は次のとおりです(導出は尤度関数のページを参照)。
\[L(p) = \prod_{i=1}^{n} p^{x_i}(1-p)^{1-x_i}\] \[\log L(p) = \sum_{i=1}^{n} \left( x_i \log p + (1-x_i)\log(1-p) \right)\]成功の総数を $k=\sum_{i=1}^{n}x_i$ とおくと、$\sum_i(1-x_i)=n-k$ なので次のように書けます。
\[\log L(p) = k\log p + (n-k)\log(1-p)\]NOTE
以下の導出(微分 $=0$ を解く)は、成功も失敗も 1 回以上ある($0<k<n$)場合、つまり $0<p<1$ の範囲に微分 $=0$ の点が存在する場合を扱います。$k=0$ や $k=n$ の場合は「最大点であることの確認」で扱います。
最尤推定値の導出
$\log L(p)$ を $p$ で微分して $0$ とおきます。$\dfrac{d}{dp}\log p=\dfrac{1}{p}$、$\dfrac{d}{dp}\log(1-p)=-\dfrac{1}{1-p}$ を使います。
\[\begin{aligned} \frac{d}{dp}\log L(p) &= \sum_{i=1}^{n} \left( \frac{x_i}{p} - \frac{1-x_i}{1-p} \right) \\ &= \sum_{i=1}^{n} \frac{x_i(1-p) - (1-x_i)p}{p(1-p)} \\ &= \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( \sum_{i=1}^{n} x_i - np \right) \end{aligned}\]$0<p<1$ より $p(1-p)\neq 0$ なので、これが $0$ になるのは
\[\sum_{i=1}^{n} x_i - np = 0\]のときです。$p$ について解くと、微分 $=0$ を満たす点(停留点)が得られます。
\[\hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i = \frac{k}{n}\]微分 $=0$ から得られるのは最大点の候補(停留点)です。最大点であることは次節で確認します。
最大点であることの確認
$\hat p$ が最大点であることを、2 階微分で確認します。
\[\frac{d^2}{dp^2}\log L(p) = -\frac{k}{p^2} - \frac{n-k}{(1-p)^2}\]$0<k<n$ のとき、$0<p<1$ で右辺は常に負です。したがって $\log L(p)$ は凹関数で、微分 $=0$ の点 $\hat p=k/n$ は最大点です。
$k=0$ または $k=n$ のときは、微分 $=0$ の点が $0
尤度が大きくなります)。最大点は境界($p=0$ または $p=1$)になり、結果は同じ $\hat p=k/n$ です。
ベルヌーイ分布と二項分布の最尤推定値の関係
ベルヌーイ試行 $n$ 回のうち $k$ 回成功したという情報だけを、二項分布の 1 個の観測値として扱った場合、尤度は
\[L(p)=\binom{n}{k}p^{k}(1-p)^{n-k}\]です。二項係数 $\binom{n}{k}$ は $p$ に依存しないので、$p$ についての最大化には影響せず、同じ $\hat p = k/n$ が得られます。
\[\frac{1}{n}\sum_{i=1}^{n} x_i = \frac{k}{n}\]カテゴリカル分布(マルチヌーイ分布)
カテゴリカル分布の尤度関数から、最も尤もらしいパラメータ $\boldsymbol{p}$ を導出します。
前提条件(尤度関数 の再掲)
- $N$:観測値の数(データ数)、$M$:カテゴリ数
- $\boldsymbol{x}^i = (x^i_1,\dots,x^i_M)$:$i$ 番目の観測値(one-hot ベクトル)
- $x^i_j = 1$:$i$ 番目の観測値がカテゴリ $j$ のとき
- $x^i_j = 0$:それ以外のとき($\sum_{j=1}^{M} x^i_j = 1$)
- 観測値は独立同分布(i.i.d.)を仮定する
- $\boldsymbol{p} = (p_1,\dots,p_M)$:推定したいパラメータ(各カテゴリの確率)。この節では $\boldsymbol{\theta}=\boldsymbol{p}$
$\boldsymbol{p}$ は確率なので、次の2つを満たします。
\[p_j > 0 \quad (j=1,\dots,M), \qquad \sum_{j=1}^{M} p_j = 1\]\[L(\boldsymbol{p}) = \prod_{i=1}^{N} \prod_{j=1}^{M} p_j^{x^i_j}\] \[\log L(\boldsymbol{p}) = \sum_{i=1}^{N} \sum_{j=1}^{M} x^i_j \log p_j = \sum_{j=1}^{M} N_j \log p_j, \qquad N_j := \sum_{i=1}^{N} x^i_j\]NOTE
$p_j = 0$ になるカテゴリがある場合は $\log p_j$ が定義できません。ここでは全カテゴリが 1 回以上観測された($N_j \ge 1$)場合を扱います。$p_j>0$ は導出のための仮定です。$N_j = 0$ のカテゴリがある場合は後述の補足で扱います。
$N_j$ は $N$ 回の観測のうちカテゴリ $j$ が選ばれた回数です。総和の順序の入れ替えによる $N_j$ の導入は、尤度関数 を参照してください。
$\sum_j N_j = N$ の確認
後の計算で使うので、ここで示しておきます。
\[\sum_{j=1}^{M} N_j = \sum_{j=1}^{M} \sum_{i=1}^{N} x^i_j = \sum_{i=1}^{N} \sum_{j=1}^{M} x^i_j = \sum_{i=1}^{N} 1 = N\]3つ目の等号で総和の順序を入れ替えています(有限個の項の足し算なので順序を変えても結果は同じです)。4つ目の等号は、各観測値 $\boldsymbol{x}^i$ が one-hot ベクトル(1 が 1 個だけで残りは 0)なので $\sum_{j} x^i_j = 1$ となることによります。
解くべき問題
求めたいのは、制約のもとで対数尤度を最大にする $\boldsymbol{p}$ です。
\[\max_{\boldsymbol{p}} \ \sum_{j=1}^{M} N_j \log p_j \quad \text{ただし} \quad \sum_{j=1}^{M} p_j = 1\]$\sum_j p_j = 1$ という制約があるため、各 $p_j$ を自由に動かせません(制約を無視すると $p_j$ をいくらでも大きくして $\log p_j$ を増やせてしまいます)。
ラグランジュの未定乗数法
制約付きの最大化問題を解く方法がラグランジュの未定乗数法です。
制約を $= 0$ の形($1 - \sum_j p_j = 0$)に直し、未定乗数 $\lambda$ を掛けて目的関数に足した関数 $\mathcal{L}$ を作ります。
制約を満たす点では $1 - \sum_j p_j = 0$ なので、ラグランジュ関数 $\mathcal{L}(\boldsymbol{p},\lambda)$ の値は、対数尤度関数 $\log L(\boldsymbol{p}) = \sum_j N_j \log p_j$ の値と一致します。
\[\mathcal{L}(\boldsymbol{p},\lambda) = \sum_{j=1}^{M} N_j \log p_j + \lambda \underbrace{\left( 1 - \sum_{j=1}^{M} p_j \right)}_{=\,0\ \text{(制約を満たすとき)}} = \log L(\boldsymbol{p})\]$\mathcal{L}$ を $p_1,\dots,p_M$ と $\lambda$ のそれぞれで偏微分して $0$ と置いた連立方程式を解きます。これで得られるのは最大点の候補(停留点)で、最大点であることは後で確認します。
$p_j$ での偏微分
$\mathcal{L}$ を $p_j$ で偏微分するとき、他の $p_k$($k \neq j$)は定数として扱います。$p_j$ を含む項だけが残ります。
\[\mathcal{L}(\boldsymbol{p}, \lambda) = \sum_{k=1}^{M} N_k \log p_k + \lambda - \lambda \sum_{k=1}^{M} p_k\](偏微分する対象の添字 $j$ と、総和で動く添字を区別するため、総和側を $k$ と書いています。)
- $\dfrac{\partial}{\partial p_j} \sum_{k=1}^{M} N_k \log p_k = \dfrac{N_j}{p_j}$($k=j$ の項だけが残り、$\log p_j$ の微分が $1/p_j$)
- $\dfrac{\partial}{\partial p_j} \lambda = 0$($p_j$ を含まない)
- $\dfrac{\partial}{\partial p_j} \lambda \sum_{k=1}^{M} p_k = \lambda$($k=j$ の項だけが残る)
したがって、すべての $j = 1,\dots,M$ について次が成り立ちます。
\[\frac{\partial \mathcal{L}}{\partial p_j} = \frac{N_j}{p_j} - \lambda = 0 \qquad \cdots (1)\]$\lambda$ での偏微分
\[\frac{\partial \mathcal{L}}{\partial \lambda} = 1 - \sum_{j=1}^{M} p_j = 0 \qquad \cdots (2)\]これは元の制約条件そのものです。$\lambda$ を導入して偏微分することで、制約式が連立方程式の 1 本として自動的に加わります。
式の数と未知数の数
- 未知数:$p_1,\dots,p_M,\ \lambda$ の $M+1$ 個
- 式:(1) が $M$ 本、(2) が 1 本の計 $M+1$ 本
未知数と式の数が一致しているので、これらを連立して解きます(次のステップで実際に解が求まります)。
連立方程式を解く
ステップ 1:$p_j$ を $\lambda$ で表す
(1) より
\[\frac{N_j}{p_j} = \lambda\]ここで $\lambda \neq 0$ です。もし $\lambda = 0$ なら (1) から $N_j / p_j = 0$、つまりすべての $j$ で $N_j = 0$ となり、$\sum_j N_j = N \ge 1$ に矛盾します。
$\lambda \neq 0$ なので、両辺に $p_j$ を掛けて $\lambda$ で割ると
\[p_j = \frac{N_j}{\lambda} \qquad \cdots (3)\]ステップ 2:制約式 (2) に代入する
(2) を変形して $\sum_j p_j = 1$ とし、(3) を代入します。
\[\sum_{j=1}^{M} \frac{N_j}{\lambda} = 1\]$\dfrac{1}{\lambda}$ は $j$ に依存しない定数なので、$\sum$ の外に出せます。
\[\frac{1}{\lambda} \sum_{j=1}^{M} N_j = 1\]$\sum_j N_j = N$ を使うと
\[\frac{N}{\lambda} = 1 \quad \Longrightarrow \quad \lambda = N\]$\lambda$ は、確率の総和を 1 にするという制約を満たすように決まる定数で、その値は総データ数 $N$ です。
ステップ 3:$\lambda = N$ を (3) に代入する
\[\hat{p}_j = \frac{N_j}{N}\]最尤推定値の候補であることを示すため、$p_j$ にハットを付けて $\hat{p}_j$ と表記します。
\[\text{(カテゴリ } j \text{ の確率の推定値)} = \frac{\text{カテゴリ } j \text{ が出現した回数}}{\text{全データ数}}\]制約を満たしていることの確認
求めた $\hat{p}_j$ が確率の条件を満たすことを確認します。
- 正:$N_j \ge 1,\ N \ge 1$ より $\hat{p}_j = N_j / N > 0$
- 総和が 1:
最大点であることの確認
ここまでで求めたのは、ラグランジュの条件(偏微分 $=0$)を満たす停留点です。これが最大点であることを確認します。
目的関数 $\sum_j N_j\log p_j$ の 2 階偏微分は次のとおりです。
\[\frac{\partial^2}{\partial p_j\,\partial p_k}\sum_{l=1}^{M} N_l\log p_l = \begin{cases} -\dfrac{N_j}{p_j^2} & (j=k) \\[6pt] 0 & (j\neq k) \end{cases}\]ヘッセ行列は対角行列で、$N_j\ge1$ なら対角成分がすべて負なので負定値です。したがって目的関数は $p_j>0$ の範囲で(狭義)凹関数です。制約 $\sum_j p_j=1$ は線形(凸集合)なので、ラグランジュの条件を満たす点 $\hat{\boldsymbol p}$ は、制約付き問題の大域的最大点になります。
最尤推定値のベクトル表記
\[\hat{\boldsymbol{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}\]これは「手元のデータから見積もった、このサイコロ(あるいは単語など)が各目を出す確率の分布」そのものです。
具体例(サイコロ)
サイコロを $N = 10$ 回振り、各目の出た回数が次のとおりだったとします。
| 目 $j$ | 1 | 2 | 3 | 4 | 5 | 6 | 合計 |
|---|---|---|---|---|---|---|---|
| 回数 $N_j$ | 1 | 2 | 4 | 1 | 1 | 1 | $N=10$ |
最尤推定値は $\hat{p}_j = N_j / 10$ なので
\[\hat{\boldsymbol{p}} = (0.1,\ 0.2,\ 0.4,\ 0.1,\ 0.1,\ 0.1), \qquad \sum_j \hat{p}_j = 1\]このとき対数尤度は
\[\sum_{j=1}^{6} N_j \log \hat{p}_j = 4\log 0.1 + 2\log 0.2 + 4\log 0.4\]です($\log 0.1$ が 4 回、$\log 0.2$ が 2 回、$\log 0.4$ が 4 回)。たとえば $\boldsymbol{p} = (1/6,\dots,1/6)$(均等)と比べると、実際に観測された回数に合う $\hat{\boldsymbol{p}}$ の方が対数尤度が大きくなります。
| 対数尤度(自然対数) | |
|---|---|
| $\hat{\boldsymbol{p}} = (0.1,0.2,0.4,0.1,0.1,0.1)$ | $\approx -16.09$ |
| 均等 $(1/6,\dots,1/6)$ | $10 \log(1/6) \approx -17.92$ |
補足
- 導出は $N_j\ge1$(全カテゴリが 1 回以上観測された)を仮定している。$p_j>0$ は導出のための仮定であり、最尤推定値が常に $\hat p_j>0$ になるという意味ではない($N_j=0$ なら $\hat p_j=0$)
- $N_j=0$ のカテゴリの項は目的関数に寄与しない($0\cdot\log p_j=0$)。そのカテゴリに確率を割り当てると他のカテゴリに配分できる確率が減り対数尤度が下がるため、最大化では $\hat p_j=0$ となる。$p_j=0$ のとき $0\log0=0$ と規約すると、解は同じ形 $\hat p_j=N_j/N$($=0$)になる
- ただし $\hat p_j=0$ は「そのカテゴリの確率は 0」という強い主張になる。データが少ないと、実際には起こりうるカテゴリに確率 0 を与えてしまい(ゼロ頻度問題)、そのカテゴリを含む新しいデータの尤度が $0$(対数尤度が $-\infty$)になる
- 対策としてラプラススムージング($\hat p_j=(N_j+1)/(N+M)$)やベイズ推定(ディリクレ事前分布、ディリクレ分布 を参照)がある
- LLM は softmax により $q_t(j)>0$ なので、損失計算で $0\cdot\log$ の不定形は生じない。ただし実装上は丸め誤差で $0$ になりうるため、
1e-7の加算などの対策がとられる(交差エントロピー を参照)。LLM・分類器では確率が観測ごとに変わり、$\hat p_j=N_j/N$ のような閉じた解は使えません(尤度関数 を参照)