Mímisbrunnr知恵の泉

← 情報理論 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:KLダイバージェンスエントロピーの性質と最大エントロピー | 関連:機械学習(損失関数)・統計(最尤)

要点(BLUF)

1. 交差エントロピー損失=KL=最尤

真の分布(データの経験分布)を pp、モデルの予測分布を qθq_\theta とすると、クロスエントロピー損失は

L(θ)=xp(x)logqθ(x)=H(p)θに無関係+D(pqθ)\mathcal L(\theta) = -\sum_x p(x)\log q_\theta(x) = \underbrace{H(p)}_{\theta\text{に無関係}} + D(p\,\|\,q_\theta)

H(p)H(p) はモデルパラメータ θ\theta に依らない定数なので、損失最小化は D(pqθ)D(p\|q_\theta) の最小化と同じ。そして KLダイバージェンス で見たとおり、これは対数尤度の最大化=最尤推定です:

argminθL(θ)=argminθD(pqθ)=argmaxθilogqθ(xi)\arg\min_\theta \mathcal L(\theta) = \arg\min_\theta D(p\,\|\,q_\theta) = \arg\max_\theta \sum_i \log q_\theta(x_i)

つまり「分類器をクロスエントロピーで学習する」=「モデルを最尤推定する」=「予測分布を真の分布に KL の意味で近づける」。3つは同じことの言い換えです。

2. コード:交差エントロピーの最小性と NLL(底2/底e)

交差エントロピーが q=pq=p で最小(=H(p)=H(p))になること、2値分類の損失が経験頻度で最小化されること(最尤)を確かめます。

import numpy as np
# 交差エントロピー H(p,q)=-Σ p log2 q は q=p で最小(=H(p))。底2
p=np.array([0.7,0.2,0.1])
print("交差エントロピー -Σ p log2 q を q を変えて評価(真の分布 p=[0.7,0.2,0.1])")
rng=np.random.default_rng(0)
print(f"  q=p           : {-np.sum(p*np.log2(p)):.4f} bit  (= H(p), 最小)")
for _ in range(3):
    q=rng.random(3); q/=q.sum()
    print(f"  q={np.round(q,3)} : {-np.sum(p*np.log2(q)):.4f} bit")
print("-"*52)
# 2値分類の交差エントロピー損失 = 負の対数尤度(NLL)。最尤=損失最小(底e)
rng=np.random.default_rng(1)
n=100000
y=(rng.random(n)<0.3).astype(int)   # 真の確率0.3のラベル
print("2値: 損失 -mean[y log q+(1-y)log(1-q)] (nat) を予測確率 q で")
for q in [0.1,0.3,0.5,0.7]:
    loss=-np.mean(y*np.log(q)+(1-y)*np.log(1-q))
    print(f"  予測 q={q}: 損失={loss:.4f} nat")
qhat=y.mean()
print(f"  q=経験頻度{qhat:.3f}: 損失={-np.mean(y*np.log(qhat)+(1-y)*np.log(1-qhat)):.4f} nat (最小=最尤)")

出力:

交差エントロピー -Σ p log2 q を q を変えて評価(真の分布 p=[0.7,0.2,0.1])
  q=p           : 1.1568 bit  (= H(p), 最小)
  q=[0.672 0.285 0.043] : 1.2170 bit
  q=[0.009 0.467 0.524] : 5.0173 bit
  q=[0.323 0.388 0.289] : 1.5943 bit
----------------------------------------------------
2値: 損失 -mean[y log q+(1-y)log(1-q)] (nat) を予測確率 q で
  予測 q=0.1: 損失=0.7651 nat
  予測 q=0.3: 損失=0.6111 nat
  予測 q=0.5: 損失=0.6931 nat
  予測 q=0.7: 損失=0.9495 nat
  q=経験頻度0.300: 損失=0.6111 nat (最小=最尤)

出力の意味:上段——交差エントロピーは q=pq=p のとき H(p)=1.1568H(p)=1.1568 bit で最小、qq を真の pp からずらすほど大きくなります(超過分がちょうど KL)。特に確率0近くの記号に小さすぎる qq を当てると 5.025.02 bit と爆発——「起こることをゼロと予言すると無限に罰せられる」KL の性質(KLダイバージェンス)です。下段——2値分類のクロスエントロピー損失は、予測確率 qq を真の確率 0.30.3(=経験頻度)に合わせたとき最小 0.61110.6111 nat。損失最小=最尤=予測を真の頻度に一致が数値で確認できました。ニューラルネットの分類学習が softmax+クロスエントロピーを使うのは、この「最尤=KL 最小」の原理に乗っているからです。

3. 数式の直観的意味

クロスエントロピーは「真の分布 pp のデータを、モデル qq が作った符号で表したときの平均符号長」(無歪み符号化とKraft不等式)。モデルが正確(q=pq=p)なら符号長は最小 H(p)H(p)、外れるほど KL の分だけ無駄が出る。学習とは「モデルの符号を真の分布に合わせて、記述を短くする」作業に他なりません。この「学習=圧縮」という視点は、次の AIC・MDL(情報量規準_AICとMDL)でモデル選択にまで拡張されます。損失関数としての勾配計算・正則化・最適化アルゴリズムは機械学習分野の領分なので、ここでは深入りせずリンクに留めます。

⚠️ よくある誤解

対応シミュレーション

関連ノート