🔵 熵 H(p) — 「平均驚訝度」
對每個結果,「驚訝度」定義為 −log2pi。機率越小、看到時越驚訝(罕見事件帶來大資訊)。熵就是這個驚訝度的期望值:
H(p)=−i∑pilog2pi
- 均勻分布 → H 最大(K 個結果時 H = log₂ K)
- 集中分布 → H 接近 0(沒什麼好驚訝的)
- 單位是 bits — 表示「要用幾個是非問題才能識別結果」
🔴 交叉熵 H(p, q) — 「用 q 預測的平均驚訝度」
如果真實分布是 p、但你按 q 的機率去編碼,那每個事件的平均碼長是:
H(p,q)=−i∑pilog2qi
當 q = p,H(p,q)=H(p) — 用對的分布、平均長度最短。當 q ≠ p、總是要付出代價。
這就是分類任務的 cross-entropy loss:神經網路輸出 q,標籤是 one-hot 的 p,loss = H(p, q)。最小化 cross-entropy = MLE = 讓 q 盡量像 p。
🟣 KL 散度 — 「多付的那部分」
把交叉熵減去真正的熵,剩下的就是「因為用了錯誤分布而多付的 bits」:
DKL(p∥q)=H(p,q)−H(p)=i∑pilog2qipi
性質:總是 ≥ 0,且 = 0 當且僅當 p = q。是「分布之間的距離」(雖然不對稱、不滿足三角不等式 — 嚴格說是 divergence 不是 distance)。
🎮 動手試試
- 兩個都均勻 — H(p) = H(q) = log₂(5) ≈ 2.32 bits、KL = 0。
- 把 p 的第一根拉到 0.8,q 維持均勻。看 H(p) 大幅下降(更確定),KL(p||q) 上升(你用「均勻」描述一個其實很集中的東西,要多付 bits)。
- 不對稱性:保持 p 集中在 bin 1,把 q 拉到集中在 bin 5。KL(p||q) 跟 KL(q||p) 都會很大、但數值不一樣。
- 關鍵直覺:把 q 的某根(比如 q[1])幾乎拉到 0,但 p[1] 仍然不小。KL(p||q) 會爆(用一個「不可能」的分布去解釋一個確實有的事件)。
🚀 為什麼這頁是 ML 的核心
- 分類 loss — softmax + cross-entropy 直接最小化 H(p,q)
- VAE / Diffusion — ELBO 裡的 KL term 控制 latent 分布接近先驗的程度
- 知識蒸餾 — student 學 teacher 的分布,用 KL 當 loss
- policy gradient (RL) — PPO 的 KL constraint 防止新舊策略偏太遠
- 語言模型 — perplexity = 2^(cross-entropy),是 H(p, q) 的指數
📚 接下來
這頁是這個專區的最後一頁。如果你還想繼續往下,方向:
- 假設檢定、信賴區間 — LLN/CLT 的工程應用
- Bayesian inference at scale — Stan、PyMC、variational inference
- 資訊幾何 — KL 散度 + Fisher information 的微分幾何視角
- 凸最佳化 — MLE 求解的演算法面(梯度下降、Newton、L-BFGS)
留言 0
留言載入中…