溫州 外貿(mào)網(wǎng)站制作中國站長站官網(wǎng)
從不確定性減少視角理解KL散度
【 Transformer 系列,故事從 d k \sqrt{d_k} dk??說起】
LLM這么火,Transformer厥功甚偉,某天心血來潮~,再去看看!
它長這個樣子: 深入淺出 Transformer
看完后,想起了老生常談 d k \sqrt{d_k} dk??問題,必須一探究竟:Transformer 中縮放點積注意力機制探討:除以根號 dk 理由及其影響
感覺不夠清楚,還是再Review下考研概率論,有了:基于考研概率論知識解讀 Transformer:為何自注意力機制要除以根號 dk,中間會涉及初始化、標準化、Sofrmax函數(shù),于是繼續(xù)
【初始化相關】:深度學習中的常見初始化方法:原理、應用與比較
【標準化系列】: 數(shù)據(jù)為什么要進行標準化:Z-標準化的神奇蛻變,帶出了關聯(lián)知識點: 深度 “煉丹” 術之 Batch Normalization 與 Z - 標準化:開啟數(shù)據(jù)的神秘轉(zhuǎn)換
【Softmax復習】:Softmax 層反向傳播梯度計算實例解析,中間想到了經(jīng)常配套使用的交叉熵,于是梳理了交叉熵的前世今生KL 散度:多維度解讀概率分布間的隱秘 “距離”
熵與交叉熵:從不確定性角度理解 KL 散度
機器學習、深度學習關于熵你所需要知道的一切
本文核心
- 由于熵表征不確定性大小,且基于真實分布 P P P 本身編碼是最“有效”的方式(即不確定性最小),所以當使用其他分布 Q Q Q 來近似 P P P 進行編碼時,必然會引入更多的不確定性,也就意味著交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定會比熵 H ( P ) H(P) H(P) 大。
- D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P),即:KL散度 = 交叉熵[H(P, Q)]-熵[H(Q)],鑒于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于熵 H ( P ) H(P) H(P),KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 必然是非負的。
- 由于真實分布 其熵 H ( P ) H(P) H(P) 是一個固定值,所以最小化 KL 散度等價于最小化交叉熵 H ( P , Q ) H(P, Q) H(P,Q),即
min ? Q D K L ( P ∣ ∣ Q ) = min ? Q ( H ( P , Q ) ? H ( P ) ) = min ? Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-H(P))=\min_{Q} H(P, Q) Qmin?DKL?(P∣∣Q)=Qmin?(H(P,Q)?H(P))=Qmin?H(P,Q)這就解釋了為何機器/深度學習領域?qū)⒔徊骒刈鳛閾p失函數(shù)。
引言
在信息論與概率統(tǒng)計的交融領域,KL散度(Kullback - Leibler Divergence)扮演著舉足輕重的角色。從不確定性減少的獨特視角深入探究KL散度,不僅能揭示其本質(zhì)內(nèi)涵,還能為諸多實際應用提供清晰的理論支撐。而在這個過程中,理解熵、交叉熵以及它們之間的關系至關重要,尤其要明確熵是表達不確定性大小的量,并且交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 必然大于等于熵 H ( P ) H(P) H(P)。
一、信息熵:不確定性的精準度量
(一)信息熵的定義與本質(zhì)
信息熵 H ( P ) H(P) H(P) 作為衡量概率分布 P P P 不確定性程度的核心指標,其數(shù)學表達式為: H ( P ) = ? ∑ i P ( x i ) log ? P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=?i∑?P(xi?)logP(xi?)其中, x i x_i xi? 涵蓋了隨機變量所有可能的取值, P ( x i ) P(x_i) P(xi?) 則代表取值 x i x_i xi? 出現(xiàn)的概率。信息熵本質(zhì)上量化了從分布 P P P 中隨機抽取一個事件時,平均所蘊含的信息量。由于熵是表達不確定性大小的,分布的不確定性程度越高,對應的信息熵數(shù)值越大。
例如,考慮一個均勻的六面骰子,每個面向上的概率均為 1 6 \frac{1}{6} 61?。在此情形下,每次擲骰子的結(jié)果都具有較高的不確定性,其信息熵也相對較大。這是因為在擲骰子之前,我們難以準確預測哪個面會朝上,每個結(jié)果都帶來了較多的“意外”信息。反之,若骰子經(jīng)過特殊處理,使得某一面出現(xiàn)的概率為1,而其他面為0,此時該骰子的結(jié)果幾乎沒有不確定性,信息熵也就趨近于0。
(二)信息熵的直觀理解
可以將信息熵看作是對隨機事件結(jié)果“混亂程度”或“不可預測性”的一種度量。以拋硬幣為例,一枚標準的硬幣,正面和反面出現(xiàn)的概率各為 0.5 0.5 0.5,其信息熵相對較高,因為在拋硬幣之前,我們無法確切知曉結(jié)果是正面還是反面。而如果硬幣被做了手腳,總是正面朝上,那么它的信息熵就為0,因為結(jié)果完全確定,沒有任何不確定性。
二、交叉熵:近似分布下的不確定性測度
(一)交叉熵的定義與作用
當我們嘗試使用另一個概率分布 Q Q Q 來近似真實的概率分布 P P P 時,交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 便成為了衡量這種近似效果的重要工具。其計算公式為: H ( P , Q ) = ? ∑ i P ( x i ) log ? Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=?i∑?P(xi?)logQ(xi?)交叉熵的意義在于,它反映了在采用分布 Q Q Q 對源于分布 P P P 的事件進行編碼、預測或描述時,平均所需要的信息量。
由于熵表征不確定性大小,且基于真實分布 P P P 本身編碼是最“有效”的方式(即不確定性最小),所以當使用其他分布 Q Q Q 來近似 P P P 進行編碼時,必然會引入更多的不確定性,也就意味著交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定會比熵 H ( P ) H(P) H(P) 大。
例如,假設我們正在預測明天的天氣狀況,真實的天氣概率分布 P P P 為晴天 60 % 60\% 60%、多云 30 % 30\% 30%、下雨 10 % 10\% 10%。然而,由于某些原因,我們錯誤地認為概率分布 Q Q Q 是晴天 30 % 30\% 30%、多云 30 % 30\% 30%、下雨 40 % 40\% 40%。在這種情況下,基于錯誤的分布 Q Q Q 來預測明天天氣,相較于基于真實分布 P P P 預測,必然會帶來更多的不確定性,即交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于熵 H ( P ) H(P) H(P)。這表明使用不恰當?shù)姆植? Q Q Q 進行預測時,我們對預測結(jié)果更加不確定,需要更多的信息量來描述這種預測情況。
(二)交叉熵與信息熵的關系
交叉熵與信息熵密切相關,信息熵 H ( P ) H(P) H(P) 可以視為交叉熵 H ( P , P ) H(P, P) H(P,P) 的特殊情況,即當我們使用真實分布 P P P 自身來對事件進行編碼或預測時的平均信息量。而交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 則衡量了使用近似分布 Q Q Q 替代真實分布 P P P 時,信息量的變化情況。由于熵代表了基于真實分布的最小不確定性,所以交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 總是大于等于 H ( P ) H(P) H(P)。
(三)舉個🌰
二分類例子
假設我們要判斷一封郵件是垃圾郵件還是正常郵件。真實情況中,郵件是垃圾郵件的概率為 P ( 垃圾郵件 ) = 0.8 P(\text{垃圾郵件}) = 0.8 P(垃圾郵件)=0.8,是正常郵件的概率為 P ( 正常郵件 ) = 0.2 P(\text{正常郵件}) = 0.2 P(正常郵件)=0.2,即真實分布 P P P 為: P = [ 0.8 , 0.2 ] P = [0.8, 0.2] P=[0.8,0.2]。
某郵件分類模型對郵件類別的預測概率分布 Q Q Q 為:認為是垃圾郵件的概率 Q ( 垃圾郵件 ) = 0.6 Q(\text{垃圾郵件}) = 0.6 Q(垃圾郵件)=0.6,是正常郵件的概率 Q ( 正常郵件 ) = 0.4 Q(\text{正常郵件}) = 0.4 Q(正常郵件)=0.4,即 Q = [ 0.6 , 0.4 ] Q = [0.6, 0.4] Q=[0.6,0.4]。
根據(jù)交叉熵公式 H ( P , Q ) = ? ∑ i P ( x i ) log ? Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=?i∑?P(xi?)logQ(xi?),計算過程如下:
H ( P , Q ) = ? ( P ( 垃圾郵件 ) log ? Q ( 垃圾郵件 ) + P ( 正常郵件 ) log ? Q ( 正常郵件 ) ) = ? ( 0.8 × log ? ( 0.6 ) + 0.2 × log ? ( 0.4 ) ) \begin{align*} H(P, Q)&= - (P(\text{垃圾郵件})\log Q(\text{垃圾郵件}) + P(\text{正常郵件})\log Q(\text{正常郵件}))\\ &= - (0.8\times\log(0.6) + 0.2\times\log(0.4)) \end{align*} H(P,Q)?=?(P(垃圾郵件)logQ(垃圾郵件)+P(正常郵件)logQ(正常郵件))=?(0.8×log(0.6)+0.2×log(0.4))?
以自然常數(shù) e e e 為底計算對數(shù)(實際應用中也可根據(jù)需求選擇以2為底等):
H ( P , Q ) ≈ ? ( 0.8 × ( ? 0.5108 ) + 0.2 × ( ? 0.9163 ) ) = ? ( ? 0.4086 ? 0.1833 ) = ? ( ? 0.5919 ) = 0.5919 \begin{align*} H(P, Q)&\approx - (0.8\times(-0.5108) + 0.2\times(-0.9163))\\ &= - (-0.4086 - 0.1833)\\ &= - (-0.5919)\\ &= 0.5919 \end{align*} H(P,Q)?≈?(0.8×(?0.5108)+0.2×(?0.9163))=?(?0.4086?0.1833)=?(?0.5919)=0.5919?
多分類例子
假設我們要對一幅圖像進行分類,判斷它是汽車、飛機、輪船、火車這四類交通工具中的哪一類。真實分布 P P P 如下:
- P ( 汽車 ) = 0.4 P(\text{汽車}) = 0.4 P(汽車)=0.4
- P ( 飛機 ) = 0.2 P(\text{飛機}) = 0.2 P(飛機)=0.2
- P ( 輪船 ) = 0.3 P(\text{輪船}) = 0.3 P(輪船)=0.3
- P ( 火車 ) = 0.1 P(\text{火車}) = 0.1 P(火車)=0.1
某圖像分類模型給出的預測概率分布 Q Q Q 為:
- Q ( 汽車 ) = 0.3 Q(\text{汽車}) = 0.3 Q(汽車)=0.3
- Q ( 飛機 ) = 0.3 Q(\text{飛機}) = 0.3 Q(飛機)=0.3
- Q ( 輪船 ) = 0.2 Q(\text{輪船}) = 0.2 Q(輪船)=0.2
- Q ( 火車 ) = 0.2 Q(\text{火車}) = 0.2 Q(火車)=0.2
根據(jù)交叉熵公式 H ( P , Q ) = ? ∑ i P ( x i ) log ? Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=?∑i?P(xi?)logQ(xi?),計算過程如下:
H ( P , Q ) = ? ( P ( 汽車 ) log ? Q ( 汽車 ) + P ( 飛機 ) log ? Q ( 飛機 ) + P ( 輪船 ) log ? Q ( 輪船 ) + P ( 火車 ) log ? Q ( 火車 ) ) = ? ( 0.4 × log ? ( 0.3 ) + 0.2 × log ? ( 0.3 ) + 0.3 × log ? ( 0.2 ) + 0.1 × log ? ( 0.2 ) ) \begin{align*} H(P, Q)&= - (P(\text{汽車})\log Q(\text{汽車}) + P(\text{飛機})\log Q(\text{飛機}) + P(\text{輪船})\log Q(\text{輪船}) + P(\text{火車})\log Q(\text{火車}))\\ &= - (0.4\times\log(0.3) + 0.2\times\log(0.3) + 0.3\times\log(0.2) + 0.1\times\log(0.2)) \end{align*} H(P,Q)?=?(P(汽車)logQ(汽車)+P(飛機)logQ(飛機)+P(輪船)logQ(輪船)+P(火車)logQ(火車))=?(0.4×log(0.3)+0.2×log(0.3)+0.3×log(0.2)+0.1×log(0.2))?
以自然常數(shù) e e e 為底計算對數(shù):
H ( P , Q ) ≈ ? ( 0.4 × ( ? 1.2040 ) + 0.2 × ( ? 1.2040 ) + 0.3 × ( ? 1.6094 ) + 0.1 × ( ? 1.6094 ) ) = ? ( ? 0.4816 ? 0.2408 ? 0.4828 ? 0.1609 ) = ? ( ? 1.3661 ) = 1.3661 \begin{align*} H(P, Q)&\approx - (0.4\times(-1.2040) + 0.2\times(-1.2040) + 0.3\times(-1.6094) + 0.1\times(-1.6094))\\ &= - (-0.4816 - 0.2408 - 0.4828 - 0.1609)\\ &= - (-1.3661)\\ &= 1.3661 \end{align*} H(P,Q)?≈?(0.4×(?1.2040)+0.2×(?1.2040)+0.3×(?1.6094)+0.1×(?1.6094))=?(?0.4816?0.2408?0.4828?0.1609)=?(?1.3661)=1.3661?
在上述兩個例子中,交叉熵的值反映了模型預測分布與真實分布之間的差異程度。值越小,說明模型預測分布與真實分布越接近,模型性能相對越好;值越大,則表明兩者差異越大,模型可能需要進一步優(yōu)化。
三、KL散度:不確定性變化的量化橋梁
(一)KL散度的定義推導
KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 通過信息熵和交叉熵的關系來定義,即: D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P)
即:KL散度 = 交叉熵[H(P, Q)]-熵[H(Q)],鑒于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于熵 H ( P ) H(P) H(P),KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 必然是非負的。從不確定性減少的角度深入剖析,KL散度精準地刻畫了在使用分布 Q Q Q 近似分布 P P P 的過程中,相較于分布 P P P 本身所具有的不確定性,所額外增加的不確定性量(當 D K L ( P ∣ ∣ Q ) = 0 D_{KL}(P||Q)=0 DKL?(P∣∣Q)=0 時,表示 Q Q Q 與 P P P 完全相同,沒有額外增加不確定性)。
(二)KL散度的數(shù)值含義
若 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 的值較大,這明確表明使用分布 Q Q Q 近似分布 P P P 時,引入了大量額外的不確定性。以之前的天氣預測為例,如果我們基于錯誤的分布 Q Q Q 來做預測,會發(fā)現(xiàn)預測結(jié)果的不確定性比基于真實分布 P P P 時更高,即我們對預測結(jié)果的把握程度降低。這清晰地反映出分布 Q Q Q 與真實分布 P P P 之間存在較大的差異。
反之,若 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 接近0,這意味著使用分布 Q Q Q 近似分布 P P P 時,幾乎沒有引入額外的不確定性。這表明分布 Q Q Q 與分布 P P P 非常接近,在實際應用中,例如在文本分類任務里,若真實文本類別分布為 P P P,模型預測的類別分布為 Q Q Q,當 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 趨近于0時,說明模型預測分布與真實分布高度吻合,模型對文本類別的預測不確定性與真實情況相近,也就意味著模型性能良好。
(三)舉個🌰
交叉熵H(P,Q)
- 熵H(P)
計算 show case
下面的計算過程中,也是對上面結(jié)論的一個驗證,即:交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定會比熵 H ( P ) H(P) H(P) 大
-
二分類例子
- 定義概率分布:
假設在一個判斷用戶是否點擊廣告的場景中,真實的點擊與未點擊的概率分布 P P P 為:點擊概率 P ( 點擊 ) = 0.2 P(\text{點擊}) = 0.2 P(點擊)=0.2,未點擊概率 P ( 未點擊 ) = 0.8 P(\text{未點擊}) = 0.8 P(未點擊)=0.8。
某個預測模型給出的概率分布 Q Q Q 為:點擊概率 Q ( 點擊 ) = 0.3 Q(\text{點擊}) = 0.3 Q(點擊)=0.3,未點擊概率 Q ( 未點擊 ) = 0.7 Q(\text{未點擊}) = 0.7 Q(未點擊)=0.7。 - 計算熵 H ( P ) H(P) H(P):
根據(jù)熵的公式 H ( P ) = ? ∑ i P ( x i ) log ? P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=?∑i?P(xi?)logP(xi?),對于這個二分類問題:
H ( P ) = ? P ( 點擊 ) log ? P ( 點擊 ) ? P ( 未點擊 ) log ? P ( 未點擊 ) = ? 0.2 × log ? ( 0.2 ) ? 0.8 × log ? ( 0.8 ) \begin{align*} H(P)&=-P(\text{點擊})\log P(\text{點擊})-P(\text{未點擊})\log P(\text{未點擊})\\ &=-0.2\times\log(0.2)-0.8\times\log(0.8) \end{align*} H(P)?=?P(點擊)logP(點擊)?P(未點擊)logP(未點擊)=?0.2×log(0.2)?0.8×log(0.8)?
以自然常數(shù) e e e 為底計算:
H ( P ) ≈ ? 0.2 × ( ? 1.6094 ) ? 0.8 × ( ? 0.2231 ) ≈ 0.3219 + 0.1785 ≈ 0.5004 \begin{align*} H(P)&\approx - 0.2\times(-1.6094)-0.8\times(-0.2231)\\ &\approx0.3219 + 0.1785\\ &\approx0.5004 \end{align*} H(P)?≈?0.2×(?1.6094)?0.8×(?0.2231)≈0.3219+0.1785≈0.5004? - 計算交叉熵 H ( P , Q ) H(P, Q) H(P,Q):
根據(jù)交叉熵公式 H ( P , Q ) = ? ∑ i P ( x i ) log ? Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=?∑i?P(xi?)logQ(xi?):
H ( P , Q ) = ? P ( 點擊 ) log ? Q ( 點擊 ) ? P ( 未點擊 ) log ? Q ( 未點擊 ) = ? 0.2 × log ? ( 0.3 ) ? 0.8 × log ? ( 0.7 ) \begin{align*} H(P, Q)&=-P(\text{點擊})\log Q(\text{點擊})-P(\text{未點擊})\log Q(\text{未點擊})\\ &=-0.2\times\log(0.3)-0.8\times\log(0.7) \end{align*} H(P,Q)?=?P(點擊)logQ(點擊)?P(未點擊)logQ(未點擊)=?0.2×log(0.3)?0.8×log(0.7)?
以自然常數(shù) e e e 為底計算:
H ( P , Q ) ≈ ? 0.2 × ( ? 1.2040 ) ? 0.8 × ( ? 0.3567 ) ≈ 0.2408 + 0.2854 ≈ 0.5262 \begin{align*} H(P, Q)&\approx - 0.2\times(-1.2040)-0.8\times(-0.3567)\\ &\approx0.2408+0.2854\\ &\approx0.5262 \end{align*} H(P,Q)?≈?0.2×(?1.2040)?0.8×(?0.3567)≈0.2408+0.2854≈0.5262? - 計算KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q):
由 D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P),可得:
D K L ( P ∣ ∣ Q ) = 0.5262 ? 0.5004 = 0.0258 D_{KL}(P||Q)=0.5262 - 0.5004 = 0.0258 DKL?(P∣∣Q)=0.5262?0.5004=0.0258 - 結(jié)果分析:
計算得到的KL散度 D K L ( P ∣ ∣ Q ) = 0.0258 D_{KL}(P||Q)=0.0258 DKL?(P∣∣Q)=0.0258,表明預測模型的分布 Q Q Q 與真實分布 P P P 存在一定差異。KL散度值越小,說明預測分布與真實分布越接近,模型的預測效果相對越好。在此例中,模型還有優(yōu)化空間,以減小與真實分布的差異。
- 定義概率分布:
-
多分類例子
- 定義概率分布:
假設在一個水果分類任務中,要區(qū)分蘋果、香蕉、橙子和梨,真實的概率分布 P P P 為:
P ( 蘋果 ) = 0.3 P(\text{蘋果}) = 0.3 P(蘋果)=0.3, P ( 香蕉 ) = 0.2 P(\text{香蕉}) = 0.2 P(香蕉)=0.2, P ( 橙子 ) = 0.4 P(\text{橙子}) = 0.4 P(橙子)=0.4, P ( 梨 ) = 0.1 P(\text{梨}) = 0.1 P(梨)=0.1。
某分類模型給出的預測概率分布 Q Q Q 為:
Q ( 蘋果 ) = 0.25 Q(\text{蘋果}) = 0.25 Q(蘋果)=0.25, Q ( 香蕉 ) = 0.25 Q(\text{香蕉}) = 0.25 Q(香蕉)=0.25, Q ( 橙子 ) = 0.35 Q(\text{橙子}) = 0.35 Q(橙子)=0.35, Q ( 梨 ) = 0.15 Q(\text{梨}) = 0.15 Q(梨)=0.15。 - 計算熵 H ( P ) H(P) H(P):
根據(jù)熵的公式 H ( P ) = ? ∑ i P ( x i ) log ? P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=?i∑?P(xi?)logP(xi?):
H ( P ) = ? P ( 蘋果 ) log ? P ( 蘋果 ) ? P ( 香蕉 ) log ? P ( 香蕉 ) ? P ( 橙子 ) log ? P ( 橙子 ) ? P ( 梨 ) log ? P ( 梨 ) = ? 0.3 × log ? ( 0.3 ) ? 0.2 × log ? ( 0.2 ) ? 0.4 × log ? ( 0.4 ) ? 0.1 × log ? ( 0.1 ) \begin{align*} H(P)&=-P(\text{蘋果})\log P(\text{蘋果})-P(\text{香蕉})\log P(\text{香蕉})-P(\text{橙子})\log P(\text{橙子})-P(\text{梨})\log P(\text{梨})\\ &=-0.3\times\log(0.3)-0.2\times\log(0.2)-0.4\times\log(0.4)-0.1\times\log(0.1) \end{align*} H(P)?=?P(蘋果)logP(蘋果)?P(香蕉)logP(香蕉)?P(橙子)logP(橙子)?P(梨)logP(梨)=?0.3×log(0.3)?0.2×log(0.2)?0.4×log(0.4)?0.1×log(0.1)?
以自然常數(shù) e e e 為底計算:
H ( P ) ≈ ? 0.3 × ( ? 1.2040 ) ? 0.2 × ( ? 1.6094 ) ? 0.4 × ( ? 0.9163 ) ? 0.1 × ( ? 2.3026 ) ≈ 0.3612 + 0.3219 + 0.3665 + 0.2303 ≈ 1.2799 \begin{align*} H(P)&\approx - 0.3\times(-1.2040)-0.2\times(-1.6094)-0.4\times(-0.9163)-0.1\times(-2.3026)\\ &\approx0.3612 + 0.3219+0.3665+0.2303\\ &\approx1.2799 \end{align*} H(P)?≈?0.3×(?1.2040)?0.2×(?1.6094)?0.4×(?0.9163)?0.1×(?2.3026)≈0.3612+0.3219+0.3665+0.2303≈1.2799? - 計算交叉熵 H ( P , Q ) H(P, Q) H(P,Q):
根據(jù)交叉熵公式 H ( P , Q ) = ? ∑ i P ( x i ) log ? Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=?∑i?P(xi?)logQ(xi?):
H ( P , Q ) = ? P ( 蘋果 ) log ? Q ( 蘋果 ) ? P ( 香蕉 ) log ? Q ( 香蕉 ) ? P ( 橙子 ) log ? Q ( 橙子 ) ? P ( 梨 ) log ? Q ( 梨 ) = ? 0.3 × log ? ( 0.25 ) ? 0.2 × log ? ( 0.25 ) ? 0.4 × log ? ( 0.35 ) ? 0.1 × log ? ( 0.15 ) \begin{align*} H(P, Q)&=-P(\text{蘋果})\log Q(\text{蘋果})-P(\text{香蕉})\log Q(\text{香蕉})-P(\text{橙子})\log Q(\text{橙子})-P(\text{梨})\log Q(\text{梨})\\ &=-0.3\times\log(0.25)-0.2\times\log(0.25)-0.4\times\log(0.35)-0.1\times\log(0.15) \end{align*} H(P,Q)?=?P(蘋果)logQ(蘋果)?P(香蕉)logQ(香蕉)?P(橙子)logQ(橙子)?P(梨)logQ(梨)=?0.3×log(0.25)?0.2×log(0.25)?0.4×log(0.35)?0.1×log(0.15)?
以自然常數(shù) e e e 為底計算:
H ( P , Q ) ≈ ? 0.3 × ( ? 1.3863 ) ? 0.2 × ( ? 1.3863 ) ? 0.4 × ( ? 1.0498 ) ? 0.1 × ( ? 1.8971 ) ≈ 0.4159 + 0.2773 + 0.4199 + 0.1897 ≈ 1.3028 \begin{align*} H(P, Q)&\approx - 0.3\times(-1.3863)-0.2\times(-1.3863)-0.4\times(-1.0498)-0.1\times(-1.8971)\\ &\approx0.4159+0.2773+0.4199+0.1897\\ &\approx1.3028 \end{align*} H(P,Q)?≈?0.3×(?1.3863)?0.2×(?1.3863)?0.4×(?1.0498)?0.1×(?1.8971)≈0.4159+0.2773+0.4199+0.1897≈1.3028? - 計算KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q):
由 D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P),可得:
D K L ( P ∣ ∣ Q ) = 1.3028 ? 1.2799 = 0.0229 D_{KL}(P||Q)=1.3028 - 1.2799 = 0.0229 DKL?(P∣∣Q)=1.3028?1.2799=0.0229 - 結(jié)果分析:
計算得到的KL散度 D K L ( P ∣ ∣ Q ) = 0.0229 D_{KL}(P||Q)=0.0229 DKL?(P∣∣Q)=0.0229,在多分類的水果分類任務中,該值反映了模型預測分布 Q Q Q 與真實分布 P P P 的差異程度。KL散度越小,說明模型預測分布與真實分布越接近,模型性能越好。此例中模型預測與真實分布有一定接近程度,但仍可通過優(yōu)化提升模型性能,減小KL散度。
- 定義概率分布:
KL 散度原始公式計算 show case
-
二分類例子
- 定義概率分布:
在判斷用戶是否點擊廣告的場景中,真實分布 P P P 為:點擊概率 P ( 點擊 ) = 0.2 P(\text{點擊}) = 0.2 P(點擊)=0.2,未點擊概率 P ( 未點擊 ) = 0.8 P(\text{未點擊}) = 0.8 P(未點擊)=0.8。
預測模型的分布 Q Q Q 為:點擊概率 Q ( 點擊 ) = 0.3 Q(\text{點擊}) = 0.3 Q(點擊)=0.3,未點擊概率 Q ( 未點擊 ) = 0.7 Q(\text{未點擊}) = 0.7 Q(未點擊)=0.7。 - 根據(jù)KL散度原始公式計算:
KL散度公式為 D K L ( P ∣ ∣ Q ) = ∑ i P ( x i ) log ? P ( x i ) Q ( x i ) D_{KL}(P||Q)=\sum_{i}P(x_i)\log\frac{P(x_i)}{Q(x_i)} DKL?(P∣∣Q)=i∑?P(xi?)logQ(xi?)P(xi?)?,對于此二分類問題, i i i 取值為“點擊”和“未點擊”。
D K L ( P ∣ ∣ Q ) = P ( 點擊 ) log ? P ( 點擊 ) Q ( 點擊 ) + P ( 未點擊 ) log ? P ( 未點擊 ) Q ( 未點擊 ) = 0.2 × log ? 0.2 0.3 + 0.8 × log ? 0.8 0.7 \begin{align*} D_{KL}(P||Q)&=P(\text{點擊})\log\frac{P(\text{點擊})}{Q(\text{點擊})}+P(\text{未點擊})\log\frac{P(\text{未點擊})}{Q(\text{未點擊})}\\ &=0.2\times\log\frac{0.2}{0.3}+0.8\times\log\frac{0.8}{0.7} \end{align*} DKL?(P∣∣Q)?=P(點擊)logQ(點擊)P(點擊)?+P(未點擊)logQ(未點擊)P(未點擊)?=0.2×log0.30.2?+0.8×log0.70.8??
以自然常數(shù) e e e 為底進行計算:
0.2 × log ? 0.2 0.3 + 0.8 × log ? 0.8 0.7 ≈ 0.2 × ( ? 0.4055 ) + 0.8 × ( 0.1335 ) ≈ ? 0.0811 + 0.1068 ≈ 0.0257 \begin{align*} &0.2\times\log\frac{0.2}{0.3}+0.8\times\log\frac{0.8}{0.7}\\ \approx&0.2\times(-0.4055)+0.8\times(0.1335)\\ \approx& - 0.0811 + 0.1068\\ \approx&0.0257 \end{align*} ≈≈≈?0.2×log0.30.2?+0.8×log0.70.8?0.2×(?0.4055)+0.8×(0.1335)?0.0811+0.10680.0257? - 結(jié)果說明:
通過原始公式計算得到的KL散度 D K L ( P ∣ ∣ Q ) ≈ 0.0257 D_{KL}(P||Q)\approx0.0257 DKL?(P∣∣Q)≈0.0257 ,與使用交叉熵和熵相減方法計算出的結(jié)果(之前計算為 0.0258 0.0258 0.0258 ,存在微小差異是因為計算過程中保留小數(shù)位數(shù)導致)相近。它表明預測模型的分布 Q Q Q 與真實分布 P P P 存在一定差異,KL散度值越小,模型預測分布與真實分布越接近,模型預測效果相對越好。在此例中,模型仍有優(yōu)化空間以減小與真實分布的差異。
- 定義概率分布:
-
多分類例子
- 定義概率分布:
在水果分類任務中,真實分布 P P P 為:
P ( 蘋果 ) = 0.3 P(\text{蘋果}) = 0.3 P(蘋果)=0.3, P ( 香蕉 ) = 0.2 P(\text{香蕉}) = 0.2 P(香蕉)=0.2, P ( 橙子 ) = 0.4 P(\text{橙子}) = 0.4 P(橙子)=0.4, P ( 梨 ) = 0.1 P(\text{梨}) = 0.1 P(梨)=0.1。
預測模型的分布 Q Q Q 為:
Q ( 蘋果 ) = 0.25 Q(\text{蘋果}) = 0.25 Q(蘋果)=0.25, Q ( 香蕉 ) = 0.25 Q(\text{香蕉}) = 0.25 Q(香蕉)=0.25, Q ( 橙子 ) = 0.35 Q(\text{橙子}) = 0.35 Q(橙子)=0.35, Q ( 梨 ) = 0.15 Q(\text{梨}) = 0.15 Q(梨)=0.15。 - 根據(jù)KL散度原始公式計算:
根據(jù)KL散度公式 D K L ( P ∣ ∣ Q ) = ∑ i P ( x i ) log ? P ( x i ) Q ( x i ) D_{KL}(P||Q)=\sum_{i}P(x_i)\log\frac{P(x_i)}{Q(x_i)} DKL?(P∣∣Q)=i∑?P(xi?)logQ(xi?)P(xi?)?,這里 i i i 取值為“蘋果”“香蕉”“橙子”“梨”。
D K L ( P ∣ ∣ Q ) = P ( 蘋果 ) log ? P ( 蘋果 ) Q ( 蘋果 ) + P ( 香蕉 ) log ? P ( 香蕉 ) Q ( 香蕉 ) + P ( 橙子 ) log ? P ( 橙子 ) Q ( 橙子 ) + P ( 梨 ) log ? P ( 梨 ) Q ( 梨 ) = 0.3 × log ? 0.3 0.25 + 0.2 × log ? 0.2 0.25 + 0.4 × log ? 0.4 0.35 + 0.1 × log ? 0.1 0.15 \begin{align*} D_{KL}(P||Q)&=P(\text{蘋果})\log\frac{P(\text{蘋果})}{Q(\text{蘋果})}+P(\text{香蕉})\log\frac{P(\text{香蕉})}{Q(\text{香蕉})}+P(\text{橙子})\log\frac{P(\text{橙子})}{Q(\text{橙子})}+P(\text{梨})\log\frac{P(\text{梨})}{Q(\text{梨})}\\ &=0.3\times\log\frac{0.3}{0.25}+0.2\times\log\frac{0.2}{0.25}+0.4\times\log\frac{0.4}{0.35}+0.1\times\log\frac{0.1}{0.15} \end{align*} DKL?(P∣∣Q)?=P(蘋果)logQ(蘋果)P(蘋果)?+P(香蕉)logQ(香蕉)P(香蕉)?+P(橙子)logQ(橙子)P(橙子)?+P(梨)logQ(梨)P(梨)?=0.3×log0.250.3?+0.2×log0.250.2?+0.4×log0.350.4?+0.1×log0.150.1??
以自然常數(shù) e e e 為底進行計算:
≈ 0.3 × ( 0.1823 ) + 0.2 × ( ? 0.2231 ) + 0.4 × ( 0.1335 ) + 0.1 × ( ? 0.4055 ) ≈ 0.0547 ? 0.0446 + 0.0534 ? 0.0405 ≈ 0.0230 \begin{align*} &\approx0.3\times(0.1823)+0.2\times(-0.2231)+0.4\times(0.1335)+0.1\times(-0.4055)\\ &\approx0.0547 - 0.0446 + 0.0534 - 0.0405\\ &\approx0.0230 \end{align*} ?≈0.3×(0.1823)+0.2×(?0.2231)+0.4×(0.1335)+0.1×(?0.4055)≈0.0547?0.0446+0.0534?0.0405≈0.0230? - 結(jié)果說明:
通過原始公式計算得到的KL散度 D K L ( P ∣ ∣ Q ) ≈ 0.0230 D_{KL}(P||Q)\approx0.0230 DKL?(P∣∣Q)≈0.0230 ,與之前使用交叉熵和熵相減方法計算出的結(jié)果(之前計算為 0.0229 0.0229 0.0229 ,存在微小差異是因為計算過程中保留小數(shù)位數(shù)導致)相近。該值反映了在多分類的水果分類任務中,模型預測分布 Q Q Q 與真實分布 P P P 的差異程度。KL散度越小,模型預測分布與真實分布越接近,模型性能越好。此例中模型雖有一定接近程度,但仍可優(yōu)化以進一步減小KL散度,提升模型性能。
- 定義概率分布:
四、最小化 KL 散度等價于最小化交叉熵
已知KL散度的計算公式為 D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P),其中 H ( P ) H(P) H(P) 是分布 P P P 的熵, H ( P , Q ) H(P, Q) H(P,Q) 是分布 P P P 和 Q Q Q 的交叉熵 。
因為 H ( P ) = ? ∑ i P ( x i ) log ? P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=?i∑?P(xi?)logP(xi?),這里 P ( x i ) P(x_i) P(xi?) 是分布 P P P 中事件 x i x_i xi? 發(fā)生的概率,且對于給定的分布 P P P,其熵 H ( P ) H(P) H(P) 是一個固定值(因為分布 P P P 確定后, P ( x i ) P(x_i) P(xi?) 就確定了, H ( P ) H(P) H(P) 的計算結(jié)果也就確定了)。所以最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 就等價于最小化 H ( P , Q ) ? H ( P ) H(P, Q)-H(P) H(P,Q)?H(P) 。由于 H ( P ) H(P) H(P) 為常數(shù),設 C = H ( P ) C = H(P) C=H(P),那么最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 可表示為:
min ? Q D K L ( P ∣ ∣ Q ) = min ? Q ( H ( P , Q ) ? C ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-C) Qmin?DKL?(P∣∣Q)=Qmin?(H(P,Q)?C)
又因為常數(shù) C C C 不影響求最小值的過程(對于函數(shù) f ( Q ) = H ( P , Q ) ? C f(Q)=H(P, Q)-C f(Q)=H(P,Q)?C, min ? Q f ( Q ) \min_{Q} f(Q) minQ?f(Q) 與 min ? Q ( H ( P , Q ) ) \min_{Q}(H(P, Q)) minQ?(H(P,Q)) 的解是相同的),所以:
min ? Q D K L ( P ∣ ∣ Q ) = min ? Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q} H(P, Q) Qmin?DKL?(P∣∣Q)=Qmin?H(P,Q)
這就說明了最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL?(P∣∣Q) 等價于最小化交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 。用數(shù)學語言完整表述為:
已知 D K L ( P ∣ ∣ Q ) = H ( P , Q ) ? H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL?(P∣∣Q)=H(P,Q)?H(P)其中 H ( P ) = ? ∑ i P ( x i ) log ? P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=?i∑?P(xi?)logP(xi?) 為定值,那么 min ? Q D K L ( P ∣ ∣ Q ) = min ? Q ( H ( P , Q ) ? H ( P ) ) = min ? Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-H(P))=\min_{Q} H(P, Q) Qmin?DKL?(P∣∣Q)=Qmin?(H(P,Q)?H(P))=Qmin?H(P,Q)
五、實際應用
(一)機器學習領域
在機器學習中,模型訓練的核心目標之一是使模型的預測分布 Q Q Q 盡可能逼近真實數(shù)據(jù)分布 P P P。通過最小化KL散度,例如在變分自編碼器(VAE)等模型中,能夠有效降低模型預測的不確定性,從而提高模型的準確性和可靠性。由于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于 H ( P ) H(P) H(P),在訓練過程中,模型不斷調(diào)整參數(shù),使得預測分布 Q Q Q 逐漸接近真實分布 P P P,KL散度隨之減小,模型對數(shù)據(jù)的擬合能力和預測能力不斷增強,同時也意味著模型預測所引入的額外不確定性在不斷減少。
(二)信號處理領域
在信號處理領域,信號在傳輸過程中可能會受到噪聲干擾等因素的影響,導致接收端接收到的信號特征分布 Q Q Q 偏離真實發(fā)送信號的分布 P P P。通過計算KL散度,可以精確衡量這種偏離所導致的額外不確定性增加程度,進而準確評估信號的失真程度?;诖?#xff0c;我們能夠為信號的恢復和優(yōu)化提供關鍵依據(jù),采取相應的處理措施來減少信號失真,提高信號質(zhì)量。因為交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于 H ( P ) H(P) H(P),所以KL散度能夠準確反映出由于信號特征分布的改變所帶來的不確定性增加,幫助我們更好地理解信號的變化情況。
從不確定性減少的視角深入理解KL散度,為我們提供了一種直觀且強大的方式來衡量不同概率分布之間的差異,以及評估基于近似分布所做決策或預測的質(zhì)量。其在信息論、機器學習、信號處理等眾多領域的廣泛應用,充分彰顯了其在現(xiàn)代科學技術中的重要地位和價值。而明確熵與交叉熵的大小關系,更是深入理解KL散度及其應用的關鍵所在。