← サイトトップへ / 機械学習

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})$。最小化が最大尤度推定に対応する。

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.CrossEntropyLosslog_softmaxnll_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 の原理が一貫して流れている。損失関数の形が違うのは、確率モデルの仮定(ガウス/カテゴリカル/潜在変数モデル)の違いに由来する。

参考文献

  1. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer. §1.2 (Probability Theory), §3.3 (Bayesian Linear Regression), §4.3 (Probabilistic Generative Models). 🟢 一次文献
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. §3.13 (Information Theory), §5.5 (MLE). deeplearningbook.org 🟢 一次文献
  3. Murphy, K. P. (2022). Probabilistic Machine Learning: An Introduction. MIT Press. §4 (Statistics), §10 (Deep Neural Networks). probml.github.io 🟢 一次文献
  4. Kingma, D. P., & Welling, M. (2013). Auto-Encoding Variational Bayes. arXiv:1312.6114. 🟢 原著論文
  5. Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020). A Simple Framework for Contrastive Learning of Visual Representations. ICML 2020. arXiv:2002.05709. 🟢 原著論文
  6. PyTorch documentation: torch.nn.CrossEntropyLoss, torch.nn.MSELoss. pytorch.org/docs 🟡 実装詳細は要確認

作成: 2026-05-27  |  参照番号: ML-001