M5.1 14 分鐘閱讀 2026年9月

M5.1 用錯的機率表下注一年會多輸多少:KL Divergence 與 Cross-Entropy

本篇重用M5.0保險為什麼存在:Convex Function 與 Jensen 不等式·M1.1從鞋子猜身高:Conditional Expectation

一張錯的天氣表

一家賭場每天對明天的天氣開盤:晴、雨、陰三種結果,你可以把手上的錢按任意比例押在三個結果上,押中的部分按賠率放大。假設賠率是公平的:押中「晴」的錢乘上 1/q()1/q_{\text{莊}}(\text{晴})qq_{\text{莊}} 是賭場公告的機率表。

你手上有一張自己的機率表 qq,你照它的比例下注——這是長期複利下最合理的策略(Kelly [3])。問題是真實的天氣照另一張表 pp 出現,而你不知道。

一年後,你的財富會比一個知道真實 pp 並照 pp 下注的人差多少?請先用直覺回答:這個差距會是零、是一個常數、還是每天累積?它會不會因為你錯的方向不同而差很多——比方說「把 30% 的雨天當成 10%」和「把 10% 的雨天當成 30%」,哪個更傷?寫下你有多確定。

課堂提問Q1

翻成數學。每天的隨機變數是什麼?「財富」怎麼隨天數變化?「比知道 pp 的人差多少」要比的是哪個量?

先想一想,再展開看整理後的答案

課堂上會先把每天的天氣寫成隨機變數 Xt{,,}X_t\in\{\text{晴},\text{雨},\text{陰}\},獨立、分佈 pp。照 qq 下注,若第 tt 天出現 xx,你押在 xx 上的比例是 q(x)q(x),賠率是 1/q(x)1/q_{\text{莊}}(x),所以財富乘上 q(x)/q(x)q(x)/q_{\text{莊}}(x)。一年後:

W365=W0t=1365q(Xt)q(Xt)1365logW365W0=1365tlogq(Xt)q(Xt)   大數法則   EXp[logq(X)q(X)].W_{365}=W_0\prod_{t=1}^{365}\frac{q(X_t)}{q_{\text{莊}}(X_t)} \quad\Longrightarrow\quad \frac1{365}\log\frac{W_{365}}{W_0}=\frac1{365}\sum_t\log\frac{q(X_t)}{q_{\text{莊}}(X_t)} \;\xrightarrow{\ \text{大數法則}\ }\; \mathbb E_{X\sim p}\Big[\log\frac{q(X)}{q_{\text{莊}}(X)}\Big].

複利讓「相乘」變成 log\log 的「相加」,長期平均後每天的成長率是一個期望值——對真實分佈 pp 取期望,因為天氣照 pp 出現。

知道 pp 的人用同一個式子,把 qq 換成 pp。兩人每天成長率的差:

Ep[logp(X)q(X)]Ep[logq(X)q(X)]=Ep[logp(X)q(X)].\mathbb E_p\Big[\log\frac{p(X)}{q_{\text{莊}}(X)}\Big]-\mathbb E_p\Big[\log\frac{q(X)}{q_{\text{莊}}(X)}\Big] =\mathbb E_p\Big[\log\frac{p(X)}{q(X)}\Big].

賭場的 qq_{\text{莊}} 消掉了——差距只跟你的表 qq 與真實的 pp 有關。這個量就是這一篇的物件。它每天累積:一年後兩人財富的 log\log 差是它的 365 倍。

先抓住這個畫面:每天多輸一點點

想像兩個人並排坐在賭場,一年裡看到同一串天氣。知道 pp 的人每天的財富曲線(log\log 座標)是一條有斜率的直線加上抖動;你的曲線也是一條直線加抖動,但斜率低了一個固定的量。兩條線之間的縫隙以固定速度張開。

那個固定的量,就是你「用錯表」的代價:每一天、平均而言,你比他少賺 Ep[log(p/q)]\mathbb E_p[\log(p/q)] 單位的 log\log 財富。它不是一次性的罰金,是每天都要付的租金——租的是「你不知道的那部分真相」。

寫成數學:KL、非負、與 cross-entropy

定義。 兩個分佈 p,qp,q(同一個樣本空間)之間的 Kullback–Leibler divergence

KL(pq)=xp(x)logp(x)q(x)=EXp[logp(X)q(X)].\mathrm{KL}(p\,\|\,q)=\sum_x p(x)\log\frac{p(x)}{q(x)}=\mathbb E_{X\sim p}\Big[\log\frac{p(X)}{q(X)}\Big].

連續分佈把和換成積分。讀法:真相是 pp,你以為是 qq,每次觀測平均多付的 log\log 代價

非負性(兩行)。KL\mathrm{KL} 寫成 Ep[log(q/p)]-\mathbb E_p[\log(q/p)]log-\log 是 convex(M5.0),Jensen 說

Ep[logq(X)p(X)]    logEp[q(X)p(X)]=logxp(x)q(x)p(x)=logxq(x)=log1=0.-\mathbb E_p\Big[\log\frac{q(X)}{p(X)}\Big]\;\ge\;-\log\mathbb E_p\Big[\frac{q(X)}{p(X)}\Big]=-\log\sum_x p(x)\frac{q(x)}{p(x)}=-\log\sum_xq(x)=-\log1=0.\qquad\square

等號成立 ⟺ Jensen 的等號 ⟺ q(X)/p(X)q(X)/p(X) 是常數(log-\log strictly convex)⟺ q=pq=p用錯表永遠有代價,只有表完全對才不用付。 這就是為什麼 KL 可以當「距離」用——雖然它不是真正的距離(下面會看到)。

Cross-entropy 與 entropy。log(p/q)\log(p/q) 拆開:

KL(pq)=Ep[logq(X)]H(p,q) cross-entropyEp[logp(X)]H(p) entropy.\mathrm{KL}(p\,\|\,q)=\underbrace{\mathbb E_p[-\log q(X)]}_{H(p,q)\ \text{cross-entropy}}-\underbrace{\mathbb E_p[-\log p(X)]}_{H(p)\ \text{entropy}}.

H(p)H(p) 只跟真相有關,是「就算知道 pp 也逃不掉的不確定性」(賭場那條線的斜率上限);H(p,q)H(p,q) 是你實際付的。所以 cross-entropy == 逃不掉的部分 ++ 用錯表多付的部分。當我們只能動 qq 時,最小化 H(p,q)H(p,q) 與最小化 KL(pq)\mathrm{KL}(p\|q) 是同一件事——這就是為什麼「cross-entropy loss」和「讓模型分佈接近資料分佈」是一體的兩面。

不對稱。 KL(pq)KL(qp)\mathrm{KL}(p\|q)\ne\mathrm{KL}(q\|p),而且差別不是技術性的。看兩種錯:

  • q(x)q(x) 太小p(x)p(x) 不小——你以為某件事幾乎不會發生,它卻常發生。log(p/q)\log(p/q) 很大,乘上不小的 p(x)p(x)KL(pq)\mathrm{KL}(p\|q) 爆炸q(x)0q(x)\to0 時趨近 \infty)。這是「押太少在會發生的事上」——賭場裡這叫破產。
  • q(x)q(x) 太大p(x)p(x) 很小——你把機率浪費在不會發生的事上。log(p/q)\log(p/q) 是負的,但乘上很小的 p(x)p(x),貢獻有限。KL(pq)\mathrm{KL}(p\|q) 對這種錯很寬容

p,qp,q 對調,罰的方向就對調:KL(qp)\mathrm{KL}(q\|p) 對「qqpp 為零的地方放了質量」爆炸,對「qq 漏掉 pp 的某一塊」寬容。選哪個方向,就是選要對哪種錯嚴格。

展開細節KL 不是距離:不對稱、不滿足三角不等式,但有一個更好的性質

距離(metric)要對稱、要滿足三角不等式;KL 兩者都不滿足。它也不是「差多少」的唯一選擇——total variation、Hellinger、Wasserstein 都是。KL 的特別之處有兩個。第一,它有上面那個「每次觀測的 log 代價」的操作意義(Kelly 賭注、編碼長度:用 q 設計的碼去編 p 產生的訊息,平均多用 KL 個 nat)。第二,它對獨立乘積可加:KL(p₁p₂ ‖ q₁q₂) = KL(p₁‖q₁) + KL(p₂‖q₂)——這正是「365 天的代價是一天的 365 倍」。可加性是 log 帶來的,任何不用 log 的距離都沒有。

另一個常用的事實:KL(p‖q) ≥ ½‖p − q‖₁²(Pinsker 不等式)。所以 KL 小 ⟹ 兩個分佈在任何事件上的機率差都小;但反過來不成立——total variation 很小時 KL 仍可能是無限大(只要 q 在某個 p 不為零的點上是零)。

回到賭場:直覺對了一半

回答起點問題。差距不是零、不是常數,是每天累積:一年後 log\log 財富差 365KL(pq)365\,\mathrm{KL}(p\|q)。用 p=(0.5,0.3,0.2)p=(0.5,0.3,0.2)q=(0.6,0.1,0.3)q=(0.6,0.1,0.3) 算:

KL(pq)=0.5log0.50.6+0.3log0.30.1+0.2log0.20.30.091+0.3300.081=0.158 nat/天,\mathrm{KL}(p\|q)=0.5\log\tfrac{0.5}{0.6}+0.3\log\tfrac{0.3}{0.1}+0.2\log\tfrac{0.2}{0.3}\approx-0.091+0.330-0.081=0.158\ \text{nat/天},

一年 57.457.4 nat——你的財富是他的 e57.41025e^{-57.4}\approx10^{-25} 倍。三項裡第二項(把 30% 的雨天當成 10%)貢獻了全部;把 20% 的陰天高估成 30% 那一項甚至是負的。直覺說「兩種錯都傷」——對,但傷的程度差了一個數量級,而且方向是明確的:低估會發生的事,比高估不會發生的事貴得多

反過來的錯——真相 p=(0.6,0.1,0.3)p'=(0.6,0.1,0.3)、你的表 q=(0.5,0.3,0.2)q'=(0.5,0.3,0.2),也就是把 10% 的雨天當成 30%:KL(pq)=0.6log1.2+0.1log13+0.3log1.50.1090.110+0.122=0.121\mathrm{KL}(p'\|q')=0.6\log1.2+0.1\log\tfrac13+0.3\log1.5\approx0.109-0.110+0.122=0.121。比 0.1580.158 小——同樣是「雨天差 20 個百分點」,方向不同代價不同,這就是不對稱。

判斷依賴的假設:天氣真的照一個固定的 pp 獨立出現(大數法則才成立),以及你照 qq 的比例全額下注(Kelly 策略;若你只押一部分,代價按比例縮小,但排序不變)。

回到賭場:跑一年,然後把某個 q(x)q(x) 壓到零

import numpy as np
rng = np.random.default_rng(0)
p = np.array([0.5, 0.3, 0.2]); q = np.array([0.6, 0.1, 0.3])
kl = lambda a, b: np.sum(a * np.log(a / b))
print(kl(p, q), kl(q, p))                                   # 0.157 vs 0.121:不對稱
x = rng.choice(3, size=(2000, 365), p=p)                    # 2000 個「一年」,每年 365 天真實天氣
gap = np.log(p[x]).sum(1) - np.log(q[x]).sum(1)             # 知道 p 的人 − 照 q 下注的人(log 財富差)
print(gap.mean() / 365, gap.std() / 365)                    # ≈ 0.158,抖動 ≈ 0.03:每天多輸 KL
# 破壞:把雨天的機率壓到幾乎零
q_bad = np.array([0.7, 1e-6, 0.3 - 1e-6])
print(kl(p, q_bad))                                         # ≈ 3.5 nat/天:每個雨天輸掉 3×10⁵ 倍

模擬 2000 個「一年」,每天平均多輸 0.1580.158 nat、與公式一致,抖動是 0.030.03(一年 365 天的隨機性)。把雨天的機率壓到 10610^{-6}:KL 跳到 3.53.5 nat/天——每個雨天你的財富乘上 106/0.310^{-6}/0.3,一年約 110 個雨天,破產。理論不只說「用錯表會輸」,還說出哪一格錯最貴、貴多少

先消化一下

想一想

一個氣象站用模型 qq 預報,事後拿真實頻率 pp 來評分。它在「颱風」這一格給了 q=0.001q=0.001,而颱風實際上一年來了 3 次(p0.008p\approx0.008);在「冰雹」這一格給了 q=0.05q=0.05,實際上一年沒發生(p0p\approx0)。哪一格對 KL(pq)\mathrm{KL}(p\|q) 的貢獻大?

想一想

把天氣改成不獨立——今天雨明天很可能也雨(Markov chain),但你仍假設每天獨立、照邊際 qq 下注。「一年多輸 365KL(pq)365\,\mathrm{KL}(p\|q)」這個結論會:

想一想

訓練一個分類器時,我們最小化 cross-entropy H(pdata,qθ)H(p_{\text{data}},q_\theta) 而不是 KL(pdataqθ)\mathrm{KL}(p_{\text{data}}\|q_\theta)。這是因為:

參考文獻

  1. Cover, T. M., Thomas, J. A. Elements of Information Theory. Wiley, 2nd ed., 2006.(第 2.3 節 relative entropy 的定義、第 2.6 節非負性(information inequality)、第 6 章 gambling and data compression:Kelly 賭注與「多輸 KL」的推導、第 11.6 節 Pinsker 不等式。)
  2. Kullback, S., Leibler, R. A. On Information and Sufficiency. Annals of Mathematical Statistics 22(1), 1951.(原始出處。)
  3. Kelly, J. L. A New Interpretation of Information Rate. Bell System Technical Journal 35(4), 1956.(照機率比例下注使長期成長率最大;用錯表的損失。)
  4. MacKay, D. J. C. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, 2003.(第 2 章:entropy、cross-entropy 與 KL 的直覺解釋與練習。)