最尤推定と最大事後確率推定
MLE と MAP は統計的推論における2つの中心的な手法です。ニューラルネットワークの訓練の本質 ≈ 最尤推定。
概念の解説
手元に一組の観測データがあり、そのデータが既知のタイプの確率分布(例えば正規分布)から得られたと信じているが、その分布のパラメータ(平均 μ と標準偏差 σ)が分からないとしよう。
MLE と MAP は同じ問いに答えます:データが与えられたとき、最も合理的なパラメータの値は何か?
両者の違いは——MLE はデータ自体だけを見るのに対し、MAP はパラメータに対する事前の知識も参照します。
尤度 vs 確率:同じことを2つの方向から見る
確率 P(データ|パラメータ):パラメータを固定し、「このパラメータの下で、これらのデータが観測される確率はどのくらいか?」と問う。
尤度 L(パラメータ|データ):データを固定し、「どのパラメータの値がこれらのデータを最も生成しやすいか?」と問う。
尤度関数の値自体は正規化されていません(合計が1である必要はありません)。その意味は、異なるパラメータ値の相対的な妥当性を比較することにあります。。
MLE:どのパラメータがこれらのデータを最も生成しやすいか?
\[ \hat{\theta}_{\text{MLE}} = \arg\max_\theta P(D | \theta) \]データだけを見て、観測データを最も生成しやすいパラメータを選択します。
なぜ log を取るのか?
- 掛け算が足し算になる:数値がより安定する(アンダーフロー防止)
- 微分が容易になる:対数が掛け算を足し算に変える
- 極値点を変えない:log は単調増加関数だから
MAP:事前知識の導入
\[ \hat{\theta}_{\text{MAP}} = \arg\max_\theta P(\theta | D) = \arg\max_\theta P(D | \theta) \cdot P(\theta) \]MAP = MLE + 事前分布 P(θ)。事前分布が一様分布のとき、MAP = MLE となります。
MLE はデータだけを見て、MAP は事前分布も見ます。データ量が多いと事前分布の影響は薄まり、MAP は MLE に近づきます。
データ量が少ないとき、事前分布は「正則化」の役割を果たします——L2 正則化 ≡ ガウス事前分布による MAP。
身近な例
1日の平均売上を推定する
ネットショップの連続10日間の日別売上:[23, 25, 22, 24, 26, 23, 25, 24, 22, 24]。
売上が正規分布に従うと仮定すると、平均の MLE 推定値 = これらの数の平均値 ≈ 23.8。
直感的にもそうするでしょう——MLE は直感を数学的にしたものです。
Python で実際にやってみる
実例
np.random.seed(42)
data = np.random.normal(5.0, 2.0, 100) # 真の μ=5, σ=2
# MLE: μ = 標本平均
mu_mle = np.mean(data)
print(f"MLE μ = {mu_mle:.3f} (真の値=5.0)")
# MAP: 事前分布 μ ~ N(0, 1)、事前分布の方向に収縮
prior_mu, prior_var = 0.0, 1.0
n = len(data)
mu_map = (prior_mu/prior_var + n*mu_mle/np.std(data)**2) / (1/prior_var + n/np.std(data)**2)
print(f"MAP μ = {mu_map:.3f} (MLEと事前分布0の間で妥協)")
実行出力:
MLE μ = 4.968 (真实=5.0) MAP μ = 4.776 (在MLE和先验0之间折中)
AI での応用シーン
損失関数の設計 = MLE
クロスエントロピー損失の最小化 ≈ 多項分布の仮定の下で最尤推定を行うこと。MSE の最小化 ≈ 誤差が正規分布に従う仮定の下で MLE を行うこと。損失関数は適当に選ばれているわけではありません——各損失関数は暗黙の確率分布の仮定に対応しています。
L2 正則化 = ガウス事前分布による MAP
損失に \( \lambda\|w\|^2 \) を加えることは、重み w の事前分布が \( N(0, 1/\lambda) \) であると仮定することに相当します。MAP はデータの尤度と事前分布の間で折り合いをつけます——データが少ないときは事前分布が支配的(重みは 0 に近づく)、データが多いときは尤度が支配的になります。
L1 正則化 = ラプラス事前分布による MAP
損失に \( \lambda\|w\|_1 \) を加えることは、重み w の事前分布が \( Laplace(0, 1/\lambda) \) 分布であると仮定することに相当します。ラプラス分布は 0 の点で尖っているため——MAP はスパースな解(多くの重みがちょうど 0 になる)を生み出しやすく、自動的な特徴選択を実現します。
ベイズニューラルネットワーク
通常のニューラルネットワークの重みは決定論的な点推定(MLE/MAP)です。ベイズニューラルネットワークは各重みに確率分布(事後分布)を割り当て、出力も確率分布になります——そのため自然な不確実性推定が可能です。予測時には重みを複数回サンプリングし、出力の分散を見ることで、モデルが自身の予測に対してどれだけ確信しているかを判断できます。
その他の拡張