KL散度&互信息
KL散度(KL divergence)
假設我們是一組正在廣袤無垠的太空中進行研究的科學家。我們發現了一些太空蠕蟲,這些太空蠕蟲的牙齒數量各不相同。現在我們需要將這些信息發回地球。但從太空向地球發送信息的成本很高,所以我們需要用盡量少的數據表達這些信息。我們有個好方法:我們不發送單個數值,而是繪制一張圖表,其中 X 軸表示所觀察到的不同牙齒數量(0,1,2…),Y 軸是看到的太空蠕蟲具有 x 顆牙齒的概率(即具有 x 顆牙齒的蠕蟲數量/蠕蟲總數量)。這樣,我們就將觀察結果轉換成了分布。
發送分布比發送每只蠕蟲的信息更高效。但我們還能進一步壓縮數據大小。我們可以用一個已知的分布來表示這個分布(比如均勻分布、二項分布、正態分布)。舉個例子,假如我們用均勻分布來表示真實分布,我們只需要發送兩段數據就能恢復真實數據;均勻概率和蠕蟲數量。但我們怎樣才能知道哪種分布能更好地解釋真實分布呢?這就是 KL 散度的用武之地。
直觀解釋:KL 散度是一種衡量兩個分布(比如兩條線)之間的匹配程度的方法。
對於某個未知的分布\(p(x)\),我們用\(q(x)\)進行建模並且傳遞信息,為了衡量這兩個分布是否匹配,我們用附加信息量的期望表示。附加信息量在這里結尾處有介紹。
KL散度又稱相對熵,表示用\(q(x)\)去表示\(p(x)\)時需要的附加信息量。
KL散度的性質
KL散度不是一個對稱量,即:\(KL(p||q) \neq KL(q||p)\)。
並且\(KL(p||q) \geq 0\),並且只在兩個分布相同時值可以取0。證明:
對於凸函數\(f(x)\),有Jensen不等式:
若把\(\lambda_i\)看作取值\(x_i\)的概率,那么我們可以寫成:
對於連續變量:
延伸一下:
那么由於\(-\ln x\)是凸函數,\(\xi(x)=\frac{q(x)}{p(x)}\):
並且由於\(-\ln x\)是嚴格凸函數,只有在\(q(x)=p(x)\)時等號成立。
數據壓縮和密度估計有某種隱含的關系。對於某一分布\(p(x)\),如果我們知道真實的分布,那么我們可以給出最有效率的數據壓縮並進行傳輸。若我們使用了其他的分布進行信息傳輸,那么一定會損失編碼效率,傳輸效率降低,並且要額外傳輸的信息量至少為兩者之間的KL散度。
在實際訓練中,我們並不能得知真實的分布,所以只能用有限的數據加和得到其期望,此時KL散度近似為:
公式右側第二項與\(\theta\)無關,第一項為其負對數似然函數。由此可見最小化KL散度就是最大化似然函數。
互信息(mutual information)
對於\(p(x,y)\),給出兩個變量組成的數據集。若兩變量相互獨立,那么\(p(x,y)=p(x)p(y)\)。若兩變量不獨立,那么我們要考察聯合概率分布和邊緣概率分布的KL散度,以判斷兩者是否接近獨立。
我們稱之為互信息:
當兩分布互相獨立時等號成立。
根據條件熵的公式:
可以得到:
即:互信息可以表示知道\(y\)后,\(x\)的不確定行的減小程度。也可以理解成為了表示\(x\),如果我們已經傳輸了\(y\),那么我們已經傳輸的信息量為\(I(x,y)\)。