參考:

Visual Information Theory?

colah.github.io
圖標
淺談KL散度 - 火星十一郎 - 博客園?

www.cnblogs.com

0.考慮一個情景,你和一個朋友通過二進位交流,但是每傳輸1bit的數據,收你1萬RMB,所以你需要儘可能使得交流的內容被二進位編碼後佔據的bit數最短。

1.為了防止在解碼階段不會產生模稜兩可的情況,我們要求我們的編碼系統中,任意的一個編碼不能作為其餘編碼的prefix。如我們有編碼01,那麼01**形式的編碼都不能被使用,所以對於一個編碼系統,一個字元被編碼的比特數越短,整個系統需要付出的代價越大,採用L位比特編碼,將會付出frac{1}{2^{L}} 的代價,其意義為該個編碼佔據整個系統的編碼空間的frac{1}{2^{L}}

編碼損失函數

2.那麼既然每個詞被編碼的比特越短,花費的代價越大,為什麼我們還需要短的編碼呢?首先,我們考慮一個問題,平均編碼一個詞需要花費多少bit?我們有每個詞概率,每個詞的編碼bit數,這就相當於有編碼一個詞花費bit數的概率分布,我們要做的就是求這個概率分布的均值,因為分布是離散的,所以直接拿概率乘長度,然後求和。這樣就得到了平均編碼一個詞要花費的bit數。很明顯,頻率越大的詞編碼bit數要儘可能小,這樣才能使得平均值降下來。

3.文中指出,當為一個詞編碼產生的編碼空間的cost等於其出現概率時,平均編碼一個詞花費的bit數最小。這個可以被自行證明。

4.我們知道,一個編碼長度為L的詞x消耗的編碼空間cost是 frac{1}{2^L} ,這樣, L = -log_{2}cost 。當系統是一個最優編碼系統時, cost = p(x) ,所以 L = -log_{2}p(x)

所以,對於這個最優編碼系統而言,平均編碼一個詞消耗的bit數為 sum_{x}{p(x)log_{2}{frac{1}{p(x)}}} ,我們稱這個數是概率分布p的熵,H(P)。

這個熵從編碼的角度代表了對符合概率分布P的符號系統進行無損編碼,平均編碼一個符號需要的bit數的最小值。

同時我們從信息量的角度考慮, L = -log_{2}p(x) ,我們知道一個x出現的概率越大,對其進行編碼得到的bit數越短,我們是不是可以這樣理解,當一件事經常發生,比如太陽從東邊升起,它帶給我們的信息量小,用較少的bit就能夠傳遞。而當一件事情發生概率很小,比如太陽從西邊升起,這件事情帶給我們的信息量是很大的,這背後隱藏這各種各樣的可能性,我們需要用更多的bit數來傳遞這件事情給我們的信息。這時候,bit數就成為衡量一件事情發生帶給我們的信息量的指標。上面我們提到的信息量是描述一個事件,這個事件要麼發生,要麼不發生。發生就產生一定的信息。(事件不發生會產生信息量嗎?)如果我們想描述一個隨機變數的信息量,可以考慮使用信息量的均值,即對每個事件的信息量*事件的概率進行求和。即 sum_{x}{p(x)log_{2}{frac{1}{p(x)}}} 。我們稱之為信息熵,從上面的定義來看,信息熵是用來描述一個隨機變數的信息量的,這個隨機變數的取值為不同長度的編碼,每個取值都有對應的概率。

5.交叉熵

對同一個符號系統,不同人使用符號的頻率不同,假設有X,Y兩個人,存在兩種關於該符號的概率分布p,q(我們可以理解為使用同一種語言的兩個人的語言習慣不一樣)。很明顯,X,Y有其各自的最短編碼方式。X使用X的最短編碼方式去說話,Y使用Y的最短編碼方式去說話,這樣大家都很節約資源。但是如果有一天,X使用Y的最短編碼方式去說話,這時其平均編碼一個字元需要的bit數就變為 sum_{x}{p(x)log_{2}frac{1}{q(x)}} ,記作 H_{q}(p) ,交叉熵括弧裡面的值和當前的概率分布有關,右下角的符號表示編碼方式。根據定義我們可以看出來, H_p(q) 
eq H_q(p)

交叉熵的本質可以看做是用一個猜測的分布的編碼方式去編碼其真實的分布,得到的平均編碼長度或者信息量。

6.KL散度,相對熵

根據前面的說明我們可以看出來, H_p(p) < H_q(p) 。如果兩個分布儘可能接近,那麼 H_p(p)  H_q(p) 之間的差值會儘可能的小。

上圖表示p關於q的交叉熵,p的熵,以及兩者差值Dq(p)的關係。

所以 D_q(p) 可以作為衡量分布q和分布p之間差距的一個標準。表達式為

D_q(p) = sum_xp(x)log_2frac{1}{q(x)}-sum_xp(x)log_2frac{1}{p(x)}

D_q(p) = sum_xp(x)log_2frac{p(x)}{q(x)}

這就是q對p的KL散度,也稱之為相對熵。


推薦閱讀:
相关文章