← サイトトップへ / 機械学習
ML-001
最大尤度推定 (MLE) とディープラーニング — 損失関数の統計学的基礎
作成日: 2026-05-27 | 対象読者: 統計学的 MLE を知っており、それが深層学習の損失関数とどう繋がるかを深く理解したい人(神経科学・物理出身で DL を学んでいる方)
【本ノートでの用語規約】
「尤度 (likelihood)」は パラメータの関数 として扱う。すなわち $L(\theta; \mathbf{x}) = p(\mathbf{x} \mid \theta)$(固定されたデータ $\mathbf{x}$ のもとで $\theta$ を変数とみる)。これは確率 $p(\mathbf{x} \mid \theta)$(固定された $\theta$ で $\mathbf{x}$ を変数とみる)と数値は同じだが、視点が異なる。
「MLE」は $\hat\theta = \arg\max_\theta L(\theta; \mathbf{x})$ を求める推定法。
「NLL」は negative log-likelihood $= -\log L(\theta; \mathbf{x})$。最小化が最大尤度推定に対応する。
目次
MLE の基礎 — 尤度関数の直感と定義
ディープラーニングの損失関数との等価性(最重要)
Softmax + Cross-Entropy の導出
MAP 推定・ベイズ推定との比較
KL ダイバージェンスとの関係
実装の視点 — PyTorch の内側
発展トピックへの橋渡し
参考文献
1. MLE の基礎 — 尤度関数の直感と定義
🟢 教科書確認済み
1.1 尤度関数の定義
データ $\mathcal{D} = \{x_1, x_2, \ldots, x_N\}$ が パラメータ $\theta$ を持つ確率モデル $p(x \mid \theta)$ から独立に生成されたとする。尤度関数 は:
$$L(\theta; \mathcal{D}) = \prod_{i=1}^{N} p(x_i \mid \theta)$$
対数尤度(log-likelihood)は積を和に変換し、計算を安定させる:
$$\ell(\theta; \mathcal{D}) = \log L(\theta; \mathcal{D}) = \sum_{i=1}^{N} \log p(x_i \mid \theta)$$
MLE は $\hat\theta_\text{MLE} = \arg\max_\theta \ell(\theta; \mathcal{D})$。負の対数尤度 (NLL) を最小化する表現と等価:
$$\hat\theta_\text{MLE} = \arg\min_\theta \underbrace{\left( -\sum_{i=1}^{N} \log p(x_i \mid \theta) \right)}_{\text{NLL (損失関数に対応)}}$$
1.2 直感的な意味
核心: 「観測データが実際に起こった」という事実を所与として、そのデータを最も起こりやすくするパラメータを選ぶ。尤度は「このパラメータならどれくらいデータが説明できるか」の指標。
1.3 尤度関数の形状 — ガウスモデルの例
観測データと3つのモデル候補
x
p
観測データ
θ = θ₁ (平均ずれ)
θ = θ̂ (MLE)
θ = θ₃ (分散大)
尤度関数 L(θ; data)
θ
L
θ̂_MLE
θ₁
θ₃
最大
Fig. 1: 左: 観測データ(赤線)に対して3種のパラメータ(平均ずれ・最適・分散大)のガウスモデルを重ねた図。右: θ を動かしたときの尤度関数の形状。MLE はこの山の頂点を探す。
2. ディープラーニングの損失関数との等価性
🟢 教科書確認済み(Bishop 2006, Goodfellow et al. 2016)
核心命題: ディープラーニングで使われる主要な損失関数は、特定の確率モデルを仮定したときの MLE (= NLL 最小化) と数学的に等価である。損失関数を「最小化する」行為は「尤度を最大化する」行為と同じ。
2.1 ニューラルネットを確率モデルとして見る
ニューラルネット $f_\theta$ は入力 $\mathbf{x}$ に対して出力を計算するが、確率的視点では:
$$f_\theta(\mathbf{x}) \longrightarrow \text{確率分布 } p(y \mid \mathbf{x}; \theta) \text{ のパラメータ}$$
分類タスクなら softmax 出力が $p(y \mid \mathbf{x}; \theta)$(カテゴリカル分布)、回帰タスクなら出力が $\mu$(ガウス分布の平均)になる。
入力
x
ニューラル
ネット f_θ
(パラメータ θ)
確率分布パラメータ
分類: softmax(z)
回帰: μ = f_θ(x)
→ p(y | x; θ)
尤度
L(θ; D)
= ∏p(yᵢ|xᵢ;θ)
損失関数
-log L
(NLL)
↓ 最小化
MLE の視点: 尤度 L を最大化 ⟺ DL の視点: NLL(損失)を最小化
Fig. 2: ニューラルネットを確率モデルとして解釈するパイプライン。損失関数の最小化は NLL の最小化 = 尤度の最大化に対応する。
2.2 交差エントロピー損失 = 分類タスクにおける MLE
🟢
導出: $K$ クラス分類。正解ラベル $y \in \{1,\ldots,K\}$(one-hot ベクトル $\mathbf{e}_y$)、モデル出力確率 $\hat\mathbf{p} = \text{softmax}(\mathbf{z})$。
カテゴリカル分布の確率: $p(y \mid \mathbf{x}; \theta) = \prod_{k=1}^{K} \hat p_k^{\, \mathbf{1}[y=k]}$
1サンプルの対数尤度: $\log p(y \mid \mathbf{x}; \theta) = \sum_{k=1}^K \mathbf{1}[y=k] \log \hat p_k = \log \hat p_y$
$N$ サンプルの NLL:
$$\mathcal{L}_\text{CE} = -\frac{1}{N} \sum_{i=1}^N \log \hat p_{y_i} = -\frac{1}{N}\sum_{i=1}^N \sum_{k=1}^K y_{ik} \log \hat p_{ik}$$
これがまさに交差エントロピー損失 。
2.3 平均二乗誤差 (MSE) = ガウスノイズ仮定下の MLE
🟢
導出: 回帰タスク。モデルが $\mu = f_\theta(\mathbf{x})$ を予測し、観測 $y$ はガウスノイズが乗る仮定:
$$p(y \mid \mathbf{x}; \theta) = \mathcal{N}(y; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\!\left(-\frac{(y-\mu)^2}{2\sigma^2}\right)$$
対数尤度($\sigma$ は固定と仮定):
$$\log p(y \mid \mathbf{x}; \theta) = -\frac{(y - f_\theta(\mathbf{x}))^2}{2\sigma^2} + \text{const}$$
NLL の最小化 ∝ $(y - f_\theta(\mathbf{x}))^2$ の最小化 = MSE 損失の最小化 。
タスク 確率モデルの仮定 NLL 最小化 DL の損失関数
多クラス分類 カテゴリカル分布 $-\sum \log \hat p_{y_i}$ Cross-Entropy Loss
2値分類 ベルヌーイ分布 $-\sum [y_i \log \hat p_i + (1-y_i)\log(1-\hat p_i)]$ Binary Cross-Entropy
回帰(ガウスノイズ) $\mathcal{N}(\mu, \sigma^2)$ $\sum (y_i - \hat\mu_i)^2 / (2\sigma^2)$ MSE Loss
回帰(ラプラスノイズ) ラプラス分布 $\sum |y_i - \hat\mu_i| / b$ MAE Loss (L1 Loss)
3. Softmax + Cross-Entropy の導出
🟢
3.1 Softmax はカテゴリカル分布のパラメータ化
ネットワークの最終層の出力(ロジット)を $\mathbf{z} = (z_1, \ldots, z_K)$ とする。Softmax は:
$$\hat p_k = \text{softmax}(\mathbf{z})_k = \frac{e^{z_k}}{\sum_{j=1}^K e^{z_j}}, \quad \sum_k \hat p_k = 1, \; \hat p_k > 0$$
これはカテゴリカル分布のパラメータ を満たす(確率の公理を満足)。この形式は指数族分布の natural parameterization として導出できる。
3.2 NLL を取ると Cross-Entropy になる
正解クラス $y$ に対する 1 サンプルの NLL:
$$-\log \hat p_y = -z_y + \log\!\sum_{j=1}^K e^{z_j} = \underbrace{-z_y}_{\text{正解クラスの活性}} + \underbrace{\log\!\sum_j e^{z_j}}_{\text{log-sum-exp(正規化項)}}$$
log-sum-exp の役割: これが「他のクラスを全部考慮した正規化」を担う。正解クラス $z_y$ を上げながら、他クラスの $z_j$ も下げるよう勾配が働く。
ロジット z
z₁ = 1.2
z₂ = 3.1 ★
z₃ = 0.5
z₄ = -0.3
(K=4 クラス)
softmax
softmax(z) = p̂
0.12
0.74
0.06
0.05
和 = 1.0
log
log p̂
-2.12
-0.30
-2.81
-3.00
one-hot y
0
1 ← 正解
0
0
内積
y·log p̂
= 1×(-0.30)
= -0.30
NLL = 0.30
·
NLL = -y·log p̂ = -log p̂_y(正解クラスの対数確率の負値)。one-hot なので正解クラス以外はゼロ。
Fig. 3: Softmax 出力 $\hat{\mathbf{p}}$ の対数と one-hot ラベル $\mathbf{y}$ の内積が Cross-Entropy Loss。正解クラス(クラス2)の対数確率 $-\log \hat p_2 = 0.30$ のみが損失に寄与する。
4. MAP 推定・ベイズ推定との比較
🟢 (Bishop 2006 §3.3, §4.4)
4.1 MAP 推定 = MLE + 事前分布
MAP (Maximum A Posteriori) 推定はベイズ定理によりパラメータの事後分布の最頻値を取る:
$$\hat\theta_\text{MAP} = \arg\max_\theta \underbrace{\log p(\mathcal{D} \mid \theta)}_{\text{対数尤度}} + \underbrace{\log p(\theta)}_{\text{対数事前分布}}$$
4.2 正則化は事前分布の MAP 解釈
L2 正則化 ⟺ ガウス事前分布:
$p(\theta) = \mathcal{N}(0, \lambda^{-1}\mathbf{I})$ と置くと $\log p(\theta) = -\frac{\lambda}{2}\|\theta\|^2 + \text{const}$
MAP 目的関数: $\log p(\mathcal{D}\mid\theta) - \frac{\lambda}{2}\|\theta\|^2$
⟹ NLL + L2 正則化 $= -\log p(\mathcal{D}\mid\theta) + \frac{\lambda}{2}\|\theta\|^2$ の最小化
L1 正則化 ⟺ ラプラス事前分布:
$p(\theta) \propto \exp(-\lambda\|\theta\|_1)$ と置くと MAP は L1 正則化に対応。
MLE / MAP / フルベイズの比較
MLE
MAP 推定
フルベイズ推定
目的
事前分布
出力
正則化
DL での例
max L(θ;D)
= max Σlog p(xᵢ|θ)
使わない
点推定 θ̂
なし
CE / MSE Loss
(正則化なし)
max L(θ;D)·p(θ)
= MLE + log p(θ)
あり(固定分布)
点推定 θ̂_MAP
L2/L1 正則化に対応
Weight Decay
= L2 正則化
事後分布 p(θ|D)
∝ L(θ;D)·p(θ)
あり(分布として扱う)
分布 p(θ|D)
自然に組み込まれる
変分推論 / MCMC
BNN, VAE (近似)
Fig. 4: MLE / MAP / フルベイズ推定の比較。MLE は事前情報を使わない点推定。MAP は正則化項(事前分布)を加えた点推定。フルベイズは事後分布全体を扱う。
5. KL ダイバージェンスとの関係
🟢 (Goodfellow et al. 2016 §3.13, §5.5)
5.1 Cross-Entropy と KL の分解
データの真の分布を $p_\text{data}(x)$、モデルの分布を $p_\theta(x)$ とする。KL ダイバージェンスの定義:
$$D_\text{KL}(p_\text{data} \| p_\theta) = \mathbb{E}_{x \sim p_\text{data}}\!\left[\log \frac{p_\text{data}(x)}{p_\theta(x)}\right] = \underbrace{H(p_\text{data})}_{データのエントロピー(定数)} - \underbrace{\mathbb{E}_{x \sim p_\text{data}}[\log p_\theta(x)]}_{データ分布下のモデル対数尤度の期待値}$$
$$D_\text{KL}(p_\text{data} \| p_\theta) = -\mathbb{E}_{x \sim p_\text{data}}[\log p_\theta(x)] - H(p_\text{data})$$
経験分布(有限サンプル)のもとで $\mathbb{E}_{x \sim p_\text{data}} \approx \frac{1}{N}\sum_{i=1}^N$ と置き換えると:
$$\arg\min_\theta D_\text{KL}(p_\text{data} \| p_\theta) = \arg\min_\theta \left(-\frac{1}{N}\sum_i \log p_\theta(x_i)\right) = \arg\max_\theta \ell(\theta; \mathcal{D})$$
結論: MLE によるパラメータ推定 = データ分布とモデル分布の KL ダイバージェンスを最小化すること。Cross-Entropy 損失は KL + データのエントロピー(定数項)の和。
学習前(KL 大きい)
x
p
p_data
p_θ (学習前)
KL 大
学習後(KL 小さい)
x
p
p_data
p_θ (学習後)
KL ≈ 0
ほぼ重なっている
MLE の学習 ⟺ KL(p_data ‖ p_θ) の最小化 ⟺ 2つの分布を近づける
Fig. 5: KL ダイバージェンスの概念図。学習前は $p_\text{data}$ と $p_\theta$ がずれている(KL 大)。MLE によって $p_\theta$ が $p_\text{data}$ に近づき(KL 小)、損失が下がる。
5.2 Cross-Entropy との分解式(まとめ)
$$\underbrace{H(p_\text{data}, p_\theta)}_{\text{Cross-Entropy 損失}} = \underbrace{D_\text{KL}(p_\text{data} \| p_\theta)}_{\text{最小化したい量(分布のずれ)}} + \underbrace{H(p_\text{data})}_{\text{定数(データ依存、θ に無関係)}}$$
したがって Cross-Entropy の最小化は自動的に KL の最小化と等価になる。
6. 実装の視点 — PyTorch の内側
🟡 PyTorch ドキュメント参照推奨(実装詳細は変更される可能性あり)
6.1 nn.CrossEntropyLoss が内部でやること
PyTorch の nn.CrossEntropyLoss は実質 log_softmax + NLLLoss を一体化したもの:
# 等価な2通りの書き方
import torch
import torch.nn as nn
logits = torch.tensor([[1.2, 3.1, 0.5, -0.3]]) # ロジット (softmax 前)
target = torch.tensor([1]) # 正解クラス = 1
# 方法1: CrossEntropyLoss (安定化済み, 推奨)
loss1 = nn.CrossEntropyLoss()(logits, target)
# 方法2: log_softmax + NLLLoss (等価)
log_probs = nn.functional.log_softmax(logits, dim=1)
loss2 = nn.NLLLoss()(log_probs, target)
# 方法3: 手計算 (不安定な実装の例)
probs = torch.softmax(logits, dim=1)
loss3 = -torch.log(probs[0, target]) # 数値不安定になりうる
print(loss1, loss2, loss3) # 同じ値(loss3 は大きな値で誤差が出る場合あり)
6.2 log-sum-exp トリックと数値安定化
Softmax → log の計算をナイーブに行うと、大きな $z_k$ で exp(z_k) がオーバーフローする。解決策:
$$\log \hat p_k = z_k - \log\!\sum_j e^{z_j} = z_k - \left(\max_j z_j + \log\!\sum_j e^{z_j - \max_j z_j}\right)$$
def log_softmax_stable(z):
"""数値安定な log_softmax"""
c = z.max(dim=-1, keepdim=True).values # 最大値を引く
log_sum_exp = c + torch.log(torch.exp(z - c).sum(dim=-1, keepdim=True))
return z - log_sum_exp
# PyTorch では F.log_softmax(z, dim=-1) が内部でこれと同等の処理をする
PyTorch のnn.CrossEntropyLossはlog_softmaxとnll_lossを融合した kernel で実装されており、数値安定化が組み込まれている。 softmax → log という 2 ステップを手計算するよりも精度・速度ともに優れる。
6.3 MSE Loss の実装
import torch
import torch.nn as nn
y_pred = torch.tensor([2.5, 0.5, 2.0]) # モデルの予測 (ガウス分布の平均 μ)
y_true = torch.tensor([3.0, -0.5, 2.0]) # 観測値
# MSE = ガウスノイズ仮定の MLE
loss = nn.MSELoss()(y_pred, y_true)
# = mean((y_pred - y_true)^2)
# = MLE with p(y|x;θ) = N(f_θ(x), σ²) [σ固定の場合]
7. 発展トピックへの橋渡し
7.1 VAE の ELBO に出てくる尤度
🟡
変分オートエンコーダ (VAE) の学習目標は Evidence Lower Bound (ELBO):
$$\mathcal{L}_\text{ELBO} = \underbrace{\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x \mid z)]}_{\text{再構成損失(対数尤度)}} - \underbrace{D_\text{KL}(q_\phi(z \mid x) \| p(z))}_{\text{正則化項(事前分布との KL)}}$$
第1項は MLE と同じ「データの対数尤度の期待値」。第2項は潜在変数の事前分布への KL(MAP の正則化に対応)。VAE の学習は MLE の直接的な拡張として理解できる。
7.2 生成モデルにおける尤度の役割
🟡
生成モデル 尤度の扱い 最適化目標
VAE
$p_\theta(x \mid z)$ を陽に定義
ELBO(対数尤度の下界)最大化
正規化フロー (NF)
$p_\theta(x)$ を変数変換則で陽に計算可能
完全な対数尤度の最大化(exact MLE)
GAN
尤度を陽に計算しない
Minimax(implicit MLE に相当する解釈もある)
拡散モデル (DDPM)
逐次 denoising の尤度
ELBO 形式の変分目的関数
7.3 自己教師あり学習 (Contrastive Learning) との関連
🟡
InfoNCE 損失(SimCLR 等で使用)は形式的に Cross-Entropy と同形:
$$\mathcal{L}_\text{InfoNCE} = -\log \frac{\exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_j)/\tau)}{\sum_{k=1}^{2N} \mathbf{1}[k \neq i]\exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_k)/\tau)}$$
これは「$N$ 個の negative サンプルのうち正例はどれか」という $N$-way 分類の Cross-Entropy に相当する。すなわち contrastive learning は 条件付き分布のMLE として解釈できる。
統一的視点:
教師あり学習・VAE・正規化フロー・Contrastive Learning を通して、「モデルの確率分布とデータ分布のずれを KL で測り、最小化する」という MLE の原理が一貫して流れている。損失関数の形が違うのは、確率モデルの仮定(ガウス/カテゴリカル/潜在変数モデル)の違いに由来する。
参考文献
Bishop, C. M. (2006). Pattern Recognition and Machine Learning . Springer. §1.2 (Probability Theory), §3.3 (Bayesian Linear Regression), §4.3 (Probabilistic Generative Models). 🟢 一次文献
Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning . MIT Press. §3.13 (Information Theory), §5.5 (MLE). deeplearningbook.org 🟢 一次文献
Murphy, K. P. (2022). Probabilistic Machine Learning: An Introduction . MIT Press. §4 (Statistics), §10 (Deep Neural Networks). probml.github.io 🟢 一次文献
Kingma, D. P., & Welling, M. (2013). Auto-Encoding Variational Bayes. arXiv:1312.6114 . 🟢 原著論文
Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020). A Simple Framework for Contrastive Learning of Visual Representations. ICML 2020 . arXiv:2002.05709 . 🟢 原著論文
PyTorch documentation: torch.nn.CrossEntropyLoss, torch.nn.MSELoss. pytorch.org/docs 🟡 実装詳細は要確認
作成: 2026-05-27 | 参照番号: ML-001