相對熵(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.如何衡量資訊量的大小?事件發生的概率越小,此事件含有的資訊量就越大。我向你提供的資訊量大小,就是你事先不知道結果的程度!也即是資訊...