搜尋課程與筆記

搜尋筆記

輸入主題、關鍵字或單元編號,例如 Flow Matching、U4。

    按 Esc 關閉 · ⌘ / Ctrl K 開啟搜尋

    M5.1 12 分鐘閱讀 2026年10月

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

    本篇重用2 篇

    一張錯的天氣表

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

    這是簡化的數學模型,不是下注建議。若你相信自己的機率表 qq,在這個全額分配模型中,照 qq 的比例下注會最大化你所相信的期望 log 財富(Kelly [3])。但真實的天氣照另一張表 pp 出現,用錯表的影響會如何累積?

    兩個人看到同一串天氣,一個用 pp、另一個用 qq。每次結果出現後,兩人財富都乘上一個數;所以要比較長期累積的影響,最自然的做法就是先取 log,把相乘換成相加。

    課堂提問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)。一年後:

    Wn=W0∏t=1nq(Xt)q莊(Xt)⟹1nlog⁡WnW0=1n∑t=1nlog⁡q(Xt)q莊(Xt)  → n→∞   EX∼p[log⁡q(X)q莊(X)].W_n=W_0\prod_{t=1}^{n}\frac{q(X_t)}{q_{\text{莊}}(X_t)} \quad\Longrightarrow\quad \frac1n\log\frac{W_n}{W_0}=\frac1n\sum_{t=1}^n\log\frac{q(X_t)}{q_{\text{莊}}(X_t)} \;\xrightarrow{\ n\to\infty\ }\; \mathbb E_{X\sim p}\Big[\log\frac{q(X)}{q_{\text{莊}}(X)}\Big].

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

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

    Ep[log⁡p(X)q莊(X)]−Ep[log⁡q(X)q莊(X)]=Ep[log⁡p(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].

    賭場的 q莊q_{\text{莊}} 消掉了,差距只跟 p,qp,q 有關。一年後的期望 log 財富差是它的 365 倍;某一個實際年份仍會在這個期望附近波動。

    每天多輸一點點

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

    這個量就是每次事件發生時,平均多付的 log 代價。畫出來的實際曲線會抖動,線性張開的是期望差距,不是每一天都損失完全相同的數。

    KL divergence:用錯機率表造成的長期財富差

    圖:同一串結果下,log 財富差會波動;它的期望以 KL(p‖q) 的速率累積。

    KL、非負、與 cross-entropy

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

    KL(p ∥ q)=∑xp(x)log⁡p(x)q(x)=EX∼p[log⁡p(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].

    連續分佈把和換成積分。約定 p(x)=0p(x)=0 的項為零;若 p(x)>0p(x)>0 但 q(x)=0q(x)=0,KL 是無限大。讀法是:真相是 pp,你以為是 qq,每次觀測平均多付的 log 代價。 Kullback 與 Leibler [2] 將這個量用來描述分布之間的資訊差異。

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

    −Ep[log⁡q(X)p(X)]≥−log⁡∑x:p(x)>0q(x)≥−log⁡1=0.□-\mathbb E_p\Big[\log\frac{q(X)}{p(X)}\Big]\ge-\log\sum_{x:p(x)>0}q(x)\ge-\log1=0.\qquad\square

    第一個等號要求 q(X)/p(X)q(X)/p(X) 在 pp 下是常數;第二個等號要求 qq 沒有在 p=0p=0 的地方放質量。再用兩者總和都是 1,就得到 p=qp=q。所以 KL 為零當且僅當兩個分布相同,但它並不是 metric 意義下的距離。

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

    KL(p ∥ q)=Ep[−log⁡q(X)]⏟H(p,q) cross-entropy−Ep[−log⁡p(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) 是用正確機率表計算的平均 negative log probability;H(p,q)H(p,q) 則使用模型的表。在這些量有限時,cross-entropy=正確表的代價+用錯表的額外代價。固定 pp 後,最小化 cross-entropy 與 KL 是同一個目標。連續情況的 differential entropy 可以是負的,不能直接解讀成離散事件的不確定性。

    不對稱。 KL(p∥q)≠KL(q∥p)\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(p∥q)\mathrm{KL}(p\|q) 爆炸(q(x)→0q(x)\to0 時趨近 ∞\infty)。這是「押太少在會發生的事上」——賭場裡這叫破產。
    • q(x)q(x) 太大而 p(x)p(x) 很小,該項的權重也小;若 p(x)=0p(x)=0,該項本身為零。但 qq 的總質量只能是 1,多放在這裡就會少放在別處,整個 KL 仍會受影響。

    把 p,qp,q 對調,取平均的權重也換了。KL(q∥p)\mathrm{KL}(q\|p) 對「qq 在 p=0p=0 的地方放質量」是無限大;漏掉某塊的直接權重則可能是零。這說明方向會影響對錯誤的處理,不代表任意例子中某一方向都比較大。

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

    距離(metric)要對稱、滿足三角不等式;KL 兩者都不滿足。它也不是唯一的比較方式。KL 的一個重要性質是對獨立乘積可加:KL(p1p2∥q1q2)=KL(p1∥q1)+KL(p2∥q2)\mathrm{KL}(p_1p_2\|q_1q_2)=\mathrm{KL}(p_1\|q_1)+\mathrm{KL}(p_2\|q_2)。證明只要把 log 乘積拆成和,再分別取期望即可。

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

    直覺對了一半

    一年後的期望 log 財富差是 365 KL(p∥q)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(p∥q)=0.5log⁡0.50.6+0.3log⁡0.30.1+0.2log⁡0.20.3≈−0.091+0.330−0.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,這是期望 log 差,不是實際財富比例的確定值,也不是平均財富比例的 log。各項可以為負,只有總和保證非負;這個例子中,低估雨天造成了最大的正貢獻。

    反過來的錯——真相 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(p′∥q′)=0.6log⁡1.2+0.1log⁡13+0.3log⁡1.5≈0.109−0.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 的獨立樣本與可積分的 log 比值。若只拿部分資金下注,財富乘數會改變,不能直接把 KL 按下注比例縮小。

    跑一年,然後把某個 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 天的隨機性)。把雨天的機率壓到 10−610^{-6}:KL 跳到 3.53.5 nat/天——每個雨天你的財富乘上 10−6/0.310^{-6}/0.3,一年約 110 個雨天,破產。理論不只說「用錯表會輸」,還說出哪一格錯最貴、貴多少。

    互動 demo:拖動 q 的三格並交換方向,觀察哪一種錯誤被 KL 重罰。

    檢查理解

    想一想

    以某一年的 empirical frequency pp 評分,模型給颱風 q=0.001q=0.001,該年頻率約 0.0080.008;給冰雹 q=0.05q=0.05,該年頻率為零。哪一格對這份 empirical KL 的貢獻大?

    想一想

    假設天氣是 stationary Markov chain,每天的 marginal 都是 pp。兩個人都不使用歷史,一個固定照 pp、另一個固定照 qq 下注。nn 天的期望 log 財富差是:

    想一想

    訓練一個分類器時,我們最小化 cross-entropy H(pdata,qθ)H(p_{\text{data}},q_\theta) 而不是 KL(pdata∥qθ)\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 的直覺解釋與練習。)