相對熵(KL散度)


1. 概述

在信息論中,相對熵等價於兩個概率分布信息熵的差值,若其中一個概率分布為真實分布,另一個為理論(擬合)分布,則此時相對熵等於交叉熵與真實分布信息熵之差,表示使用理論分布擬合真實分布時所產生的信息損耗。

\[D_{K L}(p \| q)=\sum_{i=1}^{N}-p\left(x_{i}\right) \log q\left(x_{i}\right)\tag{1}-\sum_{i=1}^{N} -p\left(x_{i}\right) \log p\left(x_{i}\right) \]

上面的\(p(x_i)\)為真實事件的概率分布, \(q(x_i)\)為理論擬合出來的該事件的概率分布。
公式的字面含義:前半部分是擬合分布下事件信息量與真實事件概率乘積的累加,后半部分即真實分布下的信息熵

如何理解前半部分?
前半部分即為交叉熵,交叉熵的定義為

\[\begin{aligned} H(p, q) &=\sum_{x} p(x) \log \frac{1}{q(x)} \\ &=-\sum_{x} p(x) \log q(x) \end{aligned} \]

\(D_{K L}(p | q)\)亦可寫為:

\[\begin{aligned} D_{K L}(p \| q) &=H(p, q)-H(p) \\ &=-\sum_{x} p(x) \log q(x)-\sum_{x}-p(x) \log p(x) \\ &=-\sum_{x} p(x)(\log q(x)-\log p(x)) \\ &=-\sum_{x} p(x) \log \frac{q(x)}{p(x)} \end{aligned} \]

在信息論中,交叉熵可認為是對預測分布q(x)用真實分布p(x)來進行編碼時所需要的信息量大小。

舉個例子,需傳輸長度為8的字符串,字符串中僅有abcd四個字母,其中a字母出現的真實概率為1/8,b字母出現的真實概率為1/8,c字母出現的真實概率為2/8,d字母出現的真實概率為4/8。

  1. 假設我們知道每個字母出現的真實概率,那么a、b均需要3比特,c需要2比特,d需要1比特分別進行編碼才能相互區分,故每個字母編碼長度的期望值=1/8*3+1/8*3+2/8*2+1/2*1=1.75,該1.75即為信息熵值。
  2. 但假設預測的結果是a、b、c、d字母出現的概率均為1/4,根據預測的結果分別對a、b、c、d字母進行二進制編碼,a、b、c、d均需2比特編碼才能相互區分,故每個字母編碼長度的期望值=(1/8+1/8+2/8+4/8)*2=2,該2即為交叉熵值。
  3. \(D_{K L}(p | q)=2-1.75=0.25\)

2. 性質

2.1 正定性

擬合出來的概率分布無非兩種情況,一種和真實概率分布近乎一致,一種和真實概率分布相當不同。若擬合出來的概率分布和真實分布一致,\(D_{KL}=0\)。若擬合出來的概率分布與真實分布不同,在公式1下\(D_{KL}>0\)(稍后證明)。
這個性質很關鍵,因為它正是深度學習梯度下降法需要的特性。假設神經網絡擬合近乎完美,那么它就不再梯度下降,而不完美則因為它大於0而繼續下降。
結論:KL散度取值范圍[0,∞],兩個分布一樣取到0

2.2 非對稱性

但它有不好的地方,就是它是不對稱的。舉個例子,比如隨機變量 X ∼ P 取值為1,2,3時的概率分別為[0.1,0.4,0.5],隨機變量 Y ∼ Q 取值為1,2,3時的概率分別為[0.4,0.2,0.4],則:

\[\begin{aligned} &D(P \| Q)=0.1 \times \log \left(\frac{0.1}{0.4}\right)+0.4 \times \log \left(\frac{0.4}{0.2}\right)+0.5 \times \log \left(\frac{0.5}{0.4}\right)=0.250 \\ &D(Q \| P)=0.4 \times \log \left(\frac{0.4}{0.1}\right)+0.2 \times \log \left(\frac{0.2}{0.4}\right)+0.4 \times \log \left(\frac{0.4}{0.5}\right)=0.327 \end{aligned} \]

\[D(P \| Q) \neq D(Q \| P) \]

可見用P來擬合Q和用Q來擬合P的相對熵不一樣,但他們的距離一樣。也就是說,相對熵的大小和距離沒有一一對應關系。這點蠻頭疼的,因為一般我們希望距離越遠下降越快,而相對熵取不同分布為參考在同等距離情況下下降的速度不一樣。
不對稱的性質來源於公式的前半部分,前半部分采用的是真實分布的概率進行乘積,所以以不同的概率分布作為真實分布得到的相對熵亦不同。

既然如此,為什么很多人用相對熵衍生出來的交叉熵作為損失函數來訓練神經網絡而不直接用距離相關的均方差呢?(以后講)

2.3 不滿足三角不等式

\[D_{K L}(p \| q)>D_{K L}(p \| r)+D_{K L}(r \| q) \]

3. 不同角度解讀KL散度

3.1 統計學意義上的KL散度

在統計學意義上來說,KL散度可以用來衡量兩個分布之間的差異程度。若兩者差異越小,KL散度越小,反之亦反。當兩分布一致時,其KL散度為0。正是因為其可以衡量兩個分布之間的差異,所以在VAE、EM、GAN中均有使用到KL散度。

3.2 信息論角度的KL散度

KL散度在信息論中的專業術語為相對熵。其可理解為編碼系統對信息進行編碼時所需要的平均附加信息量。其中信息量的單位隨着計算公式中log運算的底數而變化。

log底數為2:單位為比特(bit)
log底數為e:單位為奈特(nat)

4. 正定性證明

這里證明\(D_{KL}\geq0\)。

4.1 法一

注意在一般情況下神經網絡中默認log以e為底,這樣算出來的香農信息量雖然不是最小的可用於完整表示事件的比特數,但對於信息熵的含義來說區別不大。其實只要底數大於1,都能用來表達信息熵大小。

\[\text { 要證: } D_{K L}(p \| q)=\sum_{i=1}^{N}\left[p\left(x_{i}\right) \log p\left(x_{i}\right)-p\left(x_{i}\right) \log q\left(x_{i}\right)\right] \geq 0 \]

\[\text { 即證 } \sum_{i=1}^{N} p\left(x_{i}\right) \log \frac{q\left(x_{i}\right)}{p\left(x_{i}\right)} \leq 0 \]

\[\text { 又 } \ln (x) \leq x-1, \text { 當且僅當 } x=1 \text { 時等號成立 } \]

\[\text { 故 } \sum_{i=1}^{N} p\left(x_{i}\right) \log \frac{q\left(x_{i}\right)}{p\left(x_{i}\right)} \leq \sum_{i=1}^{N} p\left(x_{i}\right)\left(\frac{q\left(x_{i}\right)}{p\left(x_{i}\right)}-1\right)=\sum_{i=1}^{N}\left[p\left(x_{i}\right)-q\left(x_{i}\right)\right]=0 \]

4.2 法二

我們可以使用Jensen不等式在凸函數中的命題,若對於任意點集 {\({x_i}\)},\(\lambda_{i} \geq 0\)且\(\sum_{i} \lambda_{i}=1\) ,可以證明凸函數 f (x) 滿足:

\[f\left(\sum_{i=1}^{M} \lambda_{i} x_{i}\right) \leq \sum_{i=1}^{M} \lambda_{i} f\left(x_{i}\right) \]

由於\(log^x\)為上凸函數,故

\[\begin{aligned} K L(p \| q) &=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=-\sum_{x} p(x) \log \frac{q(x)}{p(x)} \\ & \geq-\log \sum_{x} p(x) \frac{q(x)}{p(x)}(\text { 使用Jensen不等式 }) \\ & \geq-\log 1=0 \end{aligned} \]

5. 參考鏈接

https://blog.csdn.net/weixinhum/article/details/85064685
https://hsinjhao.github.io/2019/05/22/KL-DivergenceIntroduction/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM