# 最尤推定
## 定義
最尤推定(maximum likelihood estimation, MLE)とは、観測データ $X=\{x^{(1)},\ldots,x^{(N)}\}$ を生成している確率分布 $p(x)$ を、パラメータ $\theta$ で特徴づけられたモデル $q(x;\theta)$ で推定するとき、観測の尤度 $p(u;\theta)$(確率 $p(x)$ 上で事象 $u$ が観測される確率 $p(x=u)$、「尤もらしさ」を表す)が最大となるようなパラメータを推定結果として利用する原理である。言い換えると、観測データを最も高い確率で生成するようなパラメータを推定結果として用いる。データが独立同分布(i.i.d.)からサンプリングされていると仮定すると、データ $X$ の尤度は各データの生成尤度の積 $p(X;\theta)=\prod_{i=1}^N p(x^{(i)};\theta)$ として表せる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7)
## 対数尤度への変換
尤度の積 $p(X)$ を直接最大化することもできるが、(1) 多数の1以下の数の積となるため非常に小さい値になり計算機で扱いにくい、(2) 積の最大化問題は一般に扱いにくい、という2つの問題がある。そこで尤度の対数(対数尤度)を考え、これを最大化する。対数は単調増加関数であり($a<b\Leftrightarrow\log a<\log b$)、対数尤度の最大化は尤度の最大化と同じ解を与える。対数をとることで積が和になり、計算上扱いやすく最適化しやすくなる。$\log p(X)$ の最大化は $-\log p(X)=-\sum_{i=1}^N\log p(x^{(i)})$ の最小化と同じであり、負の対数尤度 $-\log p(x^{(i)})$ を[[損失関数]]として使った学習とみなすこともできる。クロスエントロピー損失を使ったパラメータ推定は最尤推定と一致する(ただし、クロスエントロピー損失が扱う分布が経験分布以外(たとえば他のモデルの確率分布)の場合は最尤推定と一致しない)。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7)
## 一致性と観測数が少ない場合の弱点
最尤推定で求められる確率分布は、i.i.d.が成り立つ問題であれば観測が増えるほど真のパラメータに近づく(一致性、consistent)。しかし観測数が少ない場合、最尤推定は真の分布からずれている可能性が高い。箱の中に赤・青・黄の3色ボールが少なくとも1個ずつ入っており、3回取り出して赤2回・青1回だった場合、最尤推定は赤2/3・青1/3・黄0/3と推定するが、黄は少なくとも1個入っているため黄の確率を0とするのは誤りである。このように、観測だけからパラメータを決定せず、確率分布について知っている知識(事前分布)を組み込むことで、より良い推定ができる可能性がある。詳細はMAP推定・ベイズ推定([[ベイズ推定]]を参照)。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7)
## MAP推定・点推定とベイズ推定
事前分布 $p(\theta)$ を導入し、ベイズの公式 $P(\theta\mid X)=\frac{P(X\mid\theta)P(\theta)}{P(X)}$ から得られる事後分布 $P(\theta\mid X)$ を最大化するパラメータを求める推定を最大事後確率(MAP: Maximum a posteriori)推定と呼ぶ。$P(X)$ は $\theta$ に依存しないため無視でき、MAP推定は $\theta_{MAP}=\arg\max_\theta P(X\mid\theta)P(\theta)$ を求めることに帰着する。最尤推定 $\theta_{ML}=\arg\max_\theta P(X\mid\theta)$ と比較すると、MAP推定は尤度に事前確率を考慮した推定になっている。$\theta$ の事前分布として平均0・分散 $\sigma^2$ のガウス分布を仮定すると、$\log p(\theta)=-\theta^2/\sigma^2+(\theta$に依存しない項$)$ となり、これはパラメータのL2ノルムを正則化として加えた学習と一致する。同様に事前分布にラプラス分布を仮定した場合のMAP推定は、L1ノルムによる正則化と一致する。すなわちMAP推定は、負の対数尤度を損失関数とし、パラメータの事前確率から導出される正則化項を使った目的関数の最適化と一致する。詳細は[[正則化]]を参照。
最尤推定・MAP推定はいずれも一つのパラメータを推定する点推定(point estimation)である。これに対し、最終的に得たいのが予測値 $p(x)$ や $p(y\mid x)$ である場合、パラメータを周辺化消去した $p(x\mid D)=\int_\theta p(x;\theta)p(\theta\mid D)\,d\theta$ を最終結果とすることができる。これはパラメータの点推定ではなく事後分布 $p(\theta\mid D)$ 全体を利用するベイズ推定にあたる。ニューラルネットワークにこの推定を適用したものをベイジアンニューラルネットワーク(Bayesian Neural Network)と呼び、点推定に比べ安定した推定・予測の不確実性の扱いというメリットがあるが、パラメータについての積分が必要なため計算量が大きい。異なる初期値から学習した複数のニューラルネットワークのアンサンブルによる予測値でベイジアンニューラルネットワークによる推定を近似する手法にDeep Ensembles(Fort et al., arXiv:1912.02757, 2019)があり、多くの計算リソースを使って事後分布を直接求めた研究(Izmailov et al., 「What Are Bayesian Neural Network Posteriors Really Like?」ICML, 2021)によれば、Deep Ensemblesは良い近似になっていると報告されている。詳細は[[ベイズ推定]]を参照。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7)
## 深層生成モデルにおける最尤推定の使われ方(『ディープラーニングを支える技術〈2〉』第3章)
『ディープラーニングを支える技術〈2〉』第3章は、生成モデルの学習目標を「学習データセットが従う未知の分布P(x)に、モデルの分布Q(x)をできるだけ近づけること」として導入し、これは本ページが定義する最尤推定と同じ目標を確率分布の推定という言葉で言い換えたものである。VAE・自己回帰モデル・正規化フロー・拡散モデルはいずれも最尤推定で学習するのに対し、GANは最尤推定を使わず2つのネットワークの競合によって学習する点で対照的に位置づけられる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.1, §3.2, §3.3)
## ソフトウェア信頼性成長モデルにおける最尤推定(Handbook of Software Reliability Engineering 第3章)
*Handbook of Software Reliability Engineering* 第3章は、独立同分布(i.i.d.)なサンプル列を前提とする本ページの基本設定とは異なり、**時系列の障害データ(故障間隔または単位時間あたりの故障数)に対する最尤推定**という応用を提供する。ソフトウェア信頼性成長モデル(SRGM、[[ソフトウェア信頼性成長モデル]])の大半のモデルは、観測データの尤度関数を構成し、対数尤度をパラメータについて偏微分してゼロと置いた連立方程式(多くは非線形で数値解法が必要)を解くことで最尤推定量を得る。たとえば Jelinski-Moranda モデルでは故障間隔 $X_i$ の同時密度から $N,\phi$ の MLE 方程式を導き、NHPP モデルでは各区間の故障数 $f_i$ を独立ポアソン確率変数とみなした同時密度から $N,b$ の MLE 方程式を導く。いずれの場合も MLE の不変性(invariance property)を用いて、パラメータの MLE から平均値関数・故障強度関数など他の信頼性指標の MLE を「代入するだけ」で得られる点が繰り返し強調される(Source: [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 3 Software Reliability Modeling Survey]] §3.1, §3.3.1.4, §3.3.2.4)。
## 横断的知見
- **Handbook ch.3 の各SRGMが使う最尤法の一般手続きは、同書付録B §B.4.1.1 が与える教科書的定義(尤度関数 $L(\theta)=\prod_{i=1}^n f(x_i|\theta)$、対数尤度の微分をゼロと置く手続き、例B.8: 指数分布の到着率 $\lambda$ の MLE $\hat\lambda=n/\sum x_i$)をそのまま特殊化したものである**: 付録Bの例B.8は「故障間隔が指数分布に従う」という設定でのMLE導出そのものであり、これは Jelinski-Moranda モデルの基本仮定(残存障害数に比例するハザード率のもとでの指数分布)と同一の設定になっている。付録Bはこの一般的な手続きを i.i.d. サンプルという最も単純な設定で示すにとどまり、ch.3 のように条件付き独立性(残存障害数が観測ごとに変化する)を持つ時系列データへの拡張には踏み込まない。(Source: [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Appendix B Review of Reliability Theory, Analytical Techniques, and Basic Statistics]] §B.4.1.1, [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 3 Software Reliability Modeling Survey]] §3.3.1)
- **Handbook ch.3 の SRGM における最尤推定は、本ページの他ソース(ディープラーニング書籍)が扱う i.i.d. サンプルの最尤推定とは異なり、時間的に依存した観測(故障間隔の列、または区間ごとの故障数)に対する尤度構成という点で応用の幅を広げる**: 本ページの他ソースは観測 $X=\{x^{(1)},\ldots,x^{(N)}\}$ が独立同分布であることを前提に尤度の積 $p(X;\theta)=\prod_i p(x^{(i)};\theta)$ を定義するが、Handbook ch.3 の各 SRGM(Jelinski-Moranda・NHPP・Weibull・幾何モデルなど)では、$i$ 番目の故障間隔の分布パラメータ自体が $i-1$ 個までの障害検出結果(残存障害数など)に依存して変化する——すなわち条件付き独立性($X_i$ は $T_{i-1}$ を条件として指数分布に従う)という、より弱い構造のもとで尤度関数(同時密度)を構成する。この違いは、最尤推定という原理そのものは i.i.d. 設定を必須としないこと、条件付き独立性さえ確保できれば時系列データにも同じ「尤度を最大化する」という操作が適用できることを、応用分野を跨いで裏づける。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7, [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 3 Software Reliability Modeling Survey]] §3.3.1)
- **本ページのMAP推定=正則化の対応(ガウス事前分布→L2、ラプラス事前分布→L1)は、[[統計的機械学習]]・[[経験リスク最小化]]が既に2〜3ソース(応用物理、SLO第9章、Mathematics for Machine Learning第8-9章)から独立に確認してきた同一の対応の、4件目の独立した確認になる**: [[統計的機械学習]]は「ガウス事前分布→MAP推定→リッジ回帰」「ラプラス事前分布→MAP推定→LASSO回帰」という対応を応用物理・SLO・MMLという3系統のソースから積み上げてきたが、本書ch.2はディープラーニングの入門書という4つ目の独立した文脈から、全く同じ数式的対応($\log p(\theta)=-\theta^2/\sigma^2+$定数、ラプラス分布→L1)を導出する。応用分野(材料科学の回帰、SREのSLI推定、抽象的な機械学習理論、ディープラーニング入門)がここまで異なっても同一の対応が独立に導かれることは、この対応が特定分野の慣習ではなく機械学習という枠組み自体に内在する構造であることを裏づける。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7, [[統計的機械学習]]の横断的知見)
- **最尤推定が最小化する向きのKLダイバージェンスは、本ページ(ch.2)では単に「対数尤度の最大化」として抽象的に扱われていたが、ch.3のGANとの対比によって初めて「$KL(P\|Q)$の最小化」という具体的な向きを持つことが明確になる**: 本ページ§「対数尤度への変換」は最尤推定を$-\log p(X)$の最小化として定義するにとどまり、これがKLダイバージェンスのどちら向きの最小化に対応するかには触れていない。ch.3 §3.3は、データ分布P・生成分布Qに対し最尤推定が$KL(P\|Q)$(Pの複数の山を平均的にカバーする挙動)を最小化するのに対し、GANの学習はベイズ最適な識別器のもとで逆向きの$KL(Q\|P)$(Pの一つのモードを捉える挙動)を最小化することを示す。この対比により、最尤推定の「対数尤度最大化」という操作的な定義の背後にある確率分布間の距離の構造(順方向KL)が、GANという最尤推定を使わない対抗例との比較を通じて初めて可視化される。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.7, [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3)
- **潜在変数を持つモデルでの最尤推定は、本ページ(ch.2)が想定する解析的に評価できる尤度とは異なり、周辺化の積分が直接計算できないという固有の困難を持つ**: 本ページはMLEを「観測の尤度$p(u;\theta)$を最大化する」という直接評価可能な尤度を前提に定義しているが、[[VAE(変分オートエンコーダ)]]や[[拡散モデル]]のような潜在変数モデルでは対数尤度$\log\int p(x|z;\theta)p(z)dz$の積分が解析的に解けず、単純なモンテカルロ近似も不偏推定にならない。VAE・拡散モデルはこの困難をJensenの不等式によるELBO(尤度の下限)の最大化に置き換えることで回避しており、これは本ページのMLEの定義を素朴に適用できない場合に生じる、深層生成モデル特有の技術的課題である。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2, §3.6, [[VAE(変分オートエンコーダ)]]の定義節)
## 未解決の問い
- 最尤推定の一致性(観測が増えるほど真のパラメータに近づく)は、i.i.d.が崩れる非i.i.d.環境(共変量シフト・ドメイン適応)ではどう修正されるか。
- Deep Ensemblesが「良い近似になっている」とする根拠(Izmailov et al. 2021)を、本章は結論の紹介にとどめている。どのような条件下で近似の質が悪化するかは本章の範囲外。
- ch.3が示す「最尤推定=$KL(P\|Q)$最小化、GAN=$KL(Q\|P)$最小化」という対比は、本ページのMAP推定・ベイズ推定の枠組みとどう接続するか。事前分布を導入したMAP推定は依然として$KL(P\|Q)$の向きを保つのか、それとも異なる正則化項がKLの向きに影響を与えうるか、本ページ・ch.3ともに扱っていない。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] / [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] / [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 3 Software Reliability Modeling Survey]] / [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Appendix B Review of Reliability Theory, Analytical Techniques, and Basic Statistics]]
- concept: [[ベイズ推定]](MAP推定・事後分布の詳細) / [[損失関数]](クロスエントロピー損失=最尤推定の導出) / [[正則化]] / [[統計的機械学習]] / [[経験リスク最小化]] / [[VAE(変分オートエンコーダ)]](潜在変数モデルでの最尤推定の困難とELBOによる解決) / [[GAN(敵対的生成ネットワーク)]](最尤推定を使わない対照例) / [[ソフトウェア信頼性成長モデル]](時系列障害データへの最尤推定の応用)
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, 第2章, §2.7.
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第3章, §3.1-§3.3, §3.6.
- William Farr, "Software Reliability Modeling Survey", in Michael R. Lyu (ed.), *Handbook of Software Reliability Engineering*, IEEE Computer Society Press / McGraw-Hill, 1996, Chapter 3, §3.1, §3.3.1.4, §3.3.2.4.