KL 散度和交叉熵

2022-07-11 11:48:15 字數 3652 閱讀 1848

相對熵(relative entropy)就是 kl 散度(kullback–leibler divergence),用於衡量兩個概率分布之間的差異。

舉個例子:假設我們發現了一些太空蠕蟲,這些太空蠕蟲的牙齒數量各不相同。現在我們需要將這些資訊發回地球。但從太空向地球傳送資訊的成本很高,

所以我們需要用盡量少的資料表達這些資訊。其中乙個辦法是:不傳送單個數值,而是繪製一張圖表,其中 $x$ 軸表示所觀察到的不同牙齒數量,$y$ 軸是

看到的太空蠕蟲具有 $x$ 顆牙齒的概率(具有 $x$ 顆牙齒的蠕蟲數量/蠕蟲總數量)。這樣,我們就將觀察結果轉換成了分布。

但我們還能進一步壓縮資料大小。我們可以用乙個已知的分布來表示這個分布(比如均勻分布、二項分布、正態分佈等)。

假設有 $100$ 只蠕蟲,各種牙齒數的蠕蟲的數量統計結果如下:

$$p(x=0) = 0.02 \;\;\;\;\; p(x=1) = 0.03 \\

p(x=2) = 0.05 \;\;\;\;\; p(x=3) = 0.14 \\

p(x=4) = 0.16 \;\;\;\;\; p(x=5) = 0.15 \\

p(x=6) = 0.12 \;\;\;\;\; p(x=7) = 0.08 \\

p(x=8) = 0.10 \;\;\;\;\; p(x=9) = 0.08 \\

p(x=10) = 0.07$$

1)假如我們用均勻分布來表示真實分布

離散隨機變數的

均勻分布只有乙個引數:均勻概率;即給定事件發生的概率。

$$p(x=i) = 0.09, \; i=0,1,2,\cdots,10$$

均勻分布和我們的真實分布對比:

橙色是用來逼近的分布,藍色是真實分布,這兩個分布看上去明顯差異比較大。

2)假如我們用二項分布來表示真實分布

二項分布為 $x \sim b(n,p)$。首先計算蠕蟲的牙齒的期望:

$$ex = \sum_^i \cdot p(x = i) = 5.44$$

要想用二項分布來逼近這個分布,可以認為 $n = 10$(這裡並沒有什麼含義,牙齒數量也不能當成試驗次數,只是從形式上觀察的),然後通過

$np = 10p = 5.44$,

可解得 $n = 0.544$。真實分布和二項分布的比較如下:

橙色所表示的分布和真實分布之間雖然還有差異,但是看起來要比用均勻分布去逼近好一點。

我們如何定量地確定哪個分布更好?

經過這些計算之後,我們需要一種衡量每個近似分布與真實分布之間匹配程度的方法。這就是 kl 散度的用武之地。kl 散度在形式上定義如下:

$$d_(p||q) = \sum_^p(x_)\ln \frac)})}$$

其中 $q(x)$ 是近似分布,$p(x)$ 是我們想要用 $q(x)$ 匹配的真實分布。直觀地說,這衡量的是給定任意分布偏離真實分布的程度。如果兩個

分布完全匹配,那麼有

$$d_(p||q) = 0$$

計算上面兩個分布和真實分布之間地 kl 散度,會發現均勻分布的匹配度更高,即 kl 散度值更小。

上面那個 kl 散度的定義是針對離散分布的,對於連續的分布,只不過就是將求和變成積分,定義式如下:

$$d_(p||q) = \int p(x_)\ln \frac)})} dx$$

接下來我們從熵的角度來理解一下 kl 散度,將離散分布的 kl 散度的定義式展開:

$$d_(p||q) = \sum_^p(x_)\ln p(x_) - \sum_^p(x_)\ln q(x_) \\

= -\sum_^p(x_)\ln q(x_) - \left (-\sum_^p(x_)\ln p(x_) \right )$$

資訊量:任何事件都會承載著一定的資訊量,我們可以通過事件發生的概率來定義事件的資訊量,

事件發生的概率越小,其資訊量越大。也可以認為

乙個事件結果的出現概率越低,對其編碼的 bit 長度就越長,因為根據哈夫曼編碼,概率低的事件,從根到表示該事件的葉子節點的路徑就越長。這裡

的 bit 長度就可以認為是資訊量。事件 $x = x_$ 發生所具有的資訊量為

$$i(x_) = -\ln p(x_)$$

所以式子中的 $-\ln p(x_),\; -\ln q(x_)$ 就是代表在對應分布下,事件發生的資訊量或編碼長度。

資訊熵:把所有可能事件羅列出來,就可以求得所有事件的資訊量,進而可以求期望,

資訊量的期望就是熵,所以熵的公式為:

$$h(p) = -\sum_^p(x_)\ln p(x_)$$

可以發現 kl 散度公式的第二部分就是資訊熵。因為 $p(x)$ 本身就是真實分布,由這個分布所構建的哈夫曼樹是最完美的,也是浪費最小的,所以信

息熵可以認為是:編碼方案完美時,最短平均編碼長度。

接下來觀察一下 kl 散度定義式的第一項,$q(x_)$ 並不是真實分布,由於對概率分布的估計不一定正確,所以編碼方案不一定完美,將這種情況下

的平均編碼長度定義為交叉熵,即

$$h(p,q) = -\sum_^p(x_)\ln q(x_)$$

所以 kl 散度其實就是

$$d_(p||q) = h(p,q) - h(p)$$

可以看出,相對熵其實就是:由於編碼方案不一定完美,和資料的真實分布有差別,所導致的平均編碼長度的增大值。

在機器學習中,因為交叉熵與相對熵只差乙個真實分布的資訊熵,而真實分布是固定的分布,與訓練無關,所以可以將交叉熵作為損失函式進行優化。

證明:$d_(p || q) \geq 0$

以離散分布為例,由琴生不等式得

$$d_(p||q) = \sum_^p(x_)\ln \frac)})} = -\sum_^p(x_)\ln \frac)})} \\

\geq -\ln\left ( \sum_^p(x_) \frac)})} \right ) = 0$$

交叉熵與最大似然估計的聯絡

離散分布的極大似然估計的表示式如下:

$$\theta = arg \; \max_ \prod_^q(x_ | \theta) \\

\leftrightarrow \theta = arg \; \max_ \sum_^\ln q(x_ | \theta) \\

\leftrightarrow \theta = arg \; \max_ \sum_^{}p(x)\ln q(x | \theta) \\

\leftrightarrow \theta = arg \; \min_ h(p,q)$$

其中真實分布 $p$ 就是根據樣本統計出來的,因為根本就不可能會知道真實分布的,只能用樣本的分布情況作為總體的分布情況,然後

再去估計引數,所以極大似然估計等價於極小化交叉熵(會相差乙個因子 $\frac$,但不影響最優解)。

交叉熵 K L散度

資訊理論主要研究如何量化資料中的資訊。最重要的資訊度量單位是熵entropy,一般用h hh表示。分布的熵的公式如下 h i 1 np x i log p xi h sum p left x right cdot log p left x right h i 1 n p xi logp x i ex...

熵,交叉熵,相對熵(KL散度)

先插入乙個鏈結視覺化資訊理論,簡單明瞭很容易看懂 資訊熵是度量隨機變數不確定度的指標,資訊熵越大意味著隨機變數不確定度越高,意味著系統的有序程度越低。他的定義 如果隨機變數p 他的概率p,i 則隨機變數p 的熵定義為 h p i 1 np x i lo g2p xi 交叉熵 cross entrop...

熵,交叉熵,相對熵(KL散度)

參考 一 什麼是資訊?1.夏農對資訊的解釋 資訊是事物運動狀態或存在方式的不確定性的描述。2.何為資訊?什麼能提供資訊?我將你原來不知道的結果告訴你,就是提供了資訊。3.如何衡量資訊量的大小?事件發生的概率越小,此事件含有的資訊量就越大。我向你提供的資訊量大小,就是你事先不知道結果的程度!也即是資訊...