日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

可视化信息论(2015年10月14日)

發布時間:2024/8/1 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可视化信息论(2015年10月14日) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里是原文
我熱愛用一種新的方式去思考世界。我尤其熱愛當有一些模糊的想法形式化成某些具體的概念。信息論就是一個非常好的例子。
信息論給了我們一個具體的語言來描述很多事情,我是多么的善變?知道問題A的答案對于知道問題B的答案有什么幫助?一些想法和另一些想法有多么的相似?當我還是小孩的時候,我就有一些關于這些問題的粗略想法,但是信息論把這些問題抽象成具體的,強大的概念。不管是從數據壓縮,量子物理還是機器學習,以及其他很多和這三者有關的領域,信息論的概念都有著大量多樣的應用。
不幸的是信息論總被認為挺難的,我其實不是很理解,可能是有些書寫的太糟糕了,事實上,它完全可以用可視化的方法簡單的說清楚。

可視化概率分布

在我們深入到信息論之前,讓我們先想一下如何可視化一個簡單的概率分布。這在之后會有用,我們也能在這里方便的解釋它。這些可視化概率的技巧不僅在理解概率本身而且在其它應用上都會非常有用。
我住在California。有時候會下雨,但大部分時候是出太陽的。我們假設它有75%的時間是下雨的,這可以這樣可視化的表達:



大部分的時間我是穿T恤的,但有時候我也會穿外套。假如我們有38%的時間在穿外套,圖片的表述也很簡單。



那么我們怎么同時可視化這兩件事情呢?如果這兩個事件不相交的話,也就是說它們是獨立的話,這是一件簡單的事情。比如我今天穿不穿T恤確實不影響下周的天氣。這樣我們可以一個維度畫一個變量得到以下的圖:



注意到水平和垂直方向上都是直線,這就是兩個獨立事件圖形表示的特點。我今天是否穿外套的概率不會隨著未來一周天氣的變化而變化。也就是下周下雨且我在今天穿外套的概率就等于我在今天穿外套的概率乘以下周下雨的概率。它們不相交。
當兩個事件相交,對于某些對變量來說就會增加額外的概率,而某些對變量來說就會減少概率。比如,我穿外套且下雨這個事件就會增加額外的概率,因為這兩個變量是相關的,它們使得各自都變得更加有可能發生。我在下雨天穿外套的概率比在一個不知道下不下雨的天氣里面穿外套的概率要大。
可視化的表示就是有些方塊變得膨脹了,而另外一些方塊因為兩件具體的事情同時發生的概率比較低,變得收縮了。



這看起來還不錯的,但是這其實對于理解問題的關鍵幫助還是不大。下面,我們只考慮一個變量,比如說天氣。我們知道下雨或出太陽的概率大概有多大。對于這兩個具體的事件我們再去考察條件概率。如果是晴天我有多大可能穿T恤?我在下雨天穿外套的概率又有多大?



有25%的概率會下雨,如果下雨,我有75%的概率會穿外套。所以我穿外套而且天氣在下雨的概率是25%乘以75%,大概是19%。

p(rain,coat)=p(rain)×p(coat?|?rain)
這是概率論中一個基本等式的應用。
p(x,y)=p(x)×p(y?|?x)
我們分解了這個分布,將它分解成兩個分布的乘積。首先我們看某個變量,比如天氣,分布的一個特定的值。然后再看另一個變量,我的衣著,也就是給定第一個變量條件下的分布。
其實選擇哪個變量來開始是隨意的。我們可以從我的衣著開始,然后以這個為條件來考慮天氣。這看起來可能不是很直觀,因為我們知道只有天氣影響衣著有因果關系,反之沒有。但這樣同樣是對的。
讓我們看一個例子,隨便選一天,有38%的概率我會穿外套。如果我知道我穿了外套,有多大可能是雨天呢?我在下雨天穿外套的可能性比較大,但是加州下雨的可能性又不是很大,所以說50%的可能是下雨的也是說的通的。這樣的話,我穿外套且下雨的概率就是38%乘以50%大概是19%。
p(rain,coat)=p(coat)×p(rain?|?coat)
這給了我們另外一個可視化同一個分布的圖。



我們注意到,標簽上和上一副圖有不同的意義?,F在T恤和外套是邊緣概率。另一方面,有兩組下雨和出太陽的標簽,各自是對應在我穿外套和我穿T恤條件下的情況。(你可能聽說過貝葉斯分布,你可以放在一起看看這兩種不同看待概率的不同角度。)

題外話:辛普森悖論

這些可視化概率分布的方法真的有用嗎?我認為有用的。在沒有用來解釋信息論之前,看上去用處還不太大,這里我們先用這種方法來解釋一下辛普森悖論,看看這種方法的作用。辛普森悖論是一個非常unintutitive的統計情景。在直覺上,真的是很難理解。Michel Nielsen給出了一個挺漂亮的解釋,Reinventing Explanation,我打算用我的方法來試試做自己的解釋。
要測試兩種治療腎結石的方案。一半的人用方案A,而另一半用方案B。用方案B的人好像存活率高于方案A。

然而,有小腎結石的病人用方案A的存活率高于用方案B。而且有大腎結石的病人用方案A的存活率也要高。怎么會這樣呢?
問題的關鍵是這個研究沒有足夠的隨機化。用方案A的病人傾向于有大腎結石,而用方案B的病人傾向于有小腎結石。從結果上看有小腎結石的病人本身更加容易存活。

為了更好的理解它,結合之前的兩個圖,我們得到一個三維的圖。

從圖中我們可以看出不管是對于小腎結石的病人還是大腎結石的病人,方案A都要優于方案B。方案B之所以看起來優秀,因為它應用的病人更加容易存活。

編碼

好了現在有了可視化信息論的方法,我們可以看看信息論了。從我們的一個想象的朋友Bob開始。Bob十分喜歡動物,它經常說動物的事情。事實上,它一直只說4個詞,“dog”,“cat”,“fish”和“bird”。
在我的虛構下,幾個禮拜前,Bob搬到了澳大利亞。而且,這個sb決定只用二進制進行通信。所有從Bob那邊傳過來的信息都是這個樣子的:



我要和Bob進行通訊的話,必須要進行編碼,這樣才能將詞映射成二進制碼。



要發送信息,Bob將每個詞用對應的二進制碼代替,然后連接起來形成編碼字符串。



可變長編碼

不幸的事情是,在虛構的澳大利亞通信的費用非常昂貴。從Bob那里接收每一位,都要花費至少5美元。而且我有說過,Bob很嘮叨嗎?為了不讓自己破產,Bob和我決定好好研究研究是否存在什么方法讓我們平均的通訊成本盡可能的低。
因為Bob說每一詞的頻率是不一樣的。Bob喜歡狗,所以他說狗的概率是最大的。有時候,他也會說說其它動物,比如老是和他的狗打鬧的貓。下面是他的詞頻圖:



看起來我們抓住了問題的關鍵。之前不管我們用詞匯的頻率是怎么樣的,我們給每個詞匯都分配兩位。
如果用可視化的方法來表示這個方法看上去可能會直觀一點。在下圖中,我們用垂直的軸來表示每一個詞的概率p(x),用水平軸來表示對應的編碼長度,L(x)。在這里我們平均發送一個詞的成本是2位。



也許我們足夠聰明,可以找到一種編碼方式,使得概率最高的詞匯有非常短的編碼。對我們的挑戰主要是編碼之間存在競爭關系——使得某些編碼變短,意味著有些編碼要變長。要最小化平均的成本,理想上我們希望所有的編碼都盡可能的短,但是我們尤其希望最常用的詞有短的編碼。所以最后得到的編碼使得常用的詞(“dog”)有相對短的編碼,而不常用的詞(“bird”)有相對長的編碼。



從另一個角度再來看一下這種編碼方式。最常用的詞有最短的編碼,而不常用的詞有較長的編碼。最后的結果是我們得到了更少的區域。也就是得到了每個詞更短的期望編碼長度。現在這個數字是1.75位了。



(你也許想知道:為什么不用1去作為一個編碼,可惜的是,這樣做會得到一個在解碼時不明確的編碼字符串。我們會在接下去繼續討論這個問題。)
告訴你一個事實,上面的這種方式其實是最優的編碼方式。也就是對于這個分布,p(x),沒有其它的編碼方式可以得到小于1.75的期望編碼長度。無論我們多么的聰明,我們都不能找到更好的了。我們把這個基本的約束叫做分布的熵——我們會馬上詳細的討論它。



要理解這個約束的關鍵是理解要使得某些編碼變短會使得另一些編碼變長。一旦我們理解了這一點,我們就能大致想象最佳的編碼方式了。

編碼空間

1位的編碼有2個編碼:0和1。2位的編碼有4個編碼:00,01,10和11。每增加1位,可能的編碼就會翻番。



我們關心的是變長的編碼,也就是有些編碼長,有些編碼短。我們可能會有簡單的情形,比如在3位編碼下有8種編碼。我們也可能有更加復雜的情形。比如2個編碼用兩位,而4個編碼用3位。那么怎么確定不同長度的編碼到底有幾個?
我們回憶一下Bob,通過用詞的編碼連接起來,他把消息映射到編碼字符串。



有一個關鍵的問題我們要考慮的就是,當我們選用一個編碼方案,我們還要考慮它是否能夠唯一的解碼。當每個編碼是一樣長的時候很簡單——只要按步長分割編碼字符串就可以了。但是由于編碼的長度不相同,解碼的時候就需要關注編碼的內容了。
我們要求解碼結果的唯一性。如果我們在每一個編碼后面放一個終止編碼,這個問題就又變得簡單了。但是我們不放,我們只發送0和1,我們要從編碼字符串本身來解碼。
很有可能我們得到的編碼不能唯一的解碼。比如想象一下,0和01是兩種編碼。這樣的話,編碼字符串0100111的第一個編碼是什么就變得不確定了。我們要得到的特性是,如果我們看到一個特定的編碼,不應該還有一個編碼是以它為前綴的。這被叫做前綴特性,遵守這種規則的編碼叫做前綴編碼。
一種有用的理解方式是,獲得每一個編碼就需要在編碼空間上作出犧牲。如果我們用了編碼01,我們就不能用以01為前綴的編碼了。因為解碼唯一性的要求,我們不能再用010或者011010110了,我們失去了它們。



因為有14的編碼是以01開頭的,我們就犧牲了14的可能編碼。這就是我們要獲得一個只有兩位的編碼的花費。也就是這樣的犧牲要求某些編碼變得更加長。這里面就有不同長度編碼之間的權衡。一個短的編碼需要犧牲更加大的編碼空間,從而阻礙其它編碼變短。我們要搞清楚的是,什么是最好的權衡。

最優編碼

你可以想象一下你只有有限的預算來獲得短的編碼。我們要獲得一個編碼的成本是犧牲掉可能的編碼。
要獲得一個長度為0的編碼的成本是1,也就是所有可能的編碼——也就是你要獲得一個長度為0的編碼,你就不能再有其它編碼了。有一個長度是1的編碼的成本是12,比如“0”,這樣你就不再可能用那一半以“0”開始的編碼了。要獲得一個長度為2的編碼,比如“01”,的成本是14,因為有14的編碼以“01”開頭??偟膩碚f,成本隨著編碼長度指數的下降。


我們想要得到短的編碼是因為我們想要得到短的平均信息長度。編碼的長度乘以概率直接影響平均消息長度。比如我們以50%的概率發送4位的編碼,我們的平均消息長度相對不發送這個編碼就增加了2位。我們可以畫一個長方形。


平均消息長度和成本這兩個量通過編碼的長度相關。我們的成本決定了編碼的長度。編碼的長度控制了對平均消息長度的增加量。我們可以把兩個量畫在一起。


短的編碼降低了平均消息長度,但是成本很高。長的編碼增加了平均信息長度但是很便宜。


什么是最好的使用有限預算的方法?對于每個詞的編碼我們應該用多少位?
就像人們更加愿意在經常使用的工具上花費更多的錢一樣。有一種自然的預算分配方法是按照和使用頻率成正比的方式分配預算。所以有一個詞出現的概率是50%,那么就用50%的預算去定義編碼長度。如果一個詞出現的概率是1%,我們就只用1%的預算,因為我們其實并不是很關心到底這個編碼有多長。這是一件很自然的事情,但是這是最優的方式嗎?是的,它確實是。下面我將證明它。
下面是問題的可視化的證明,但是我相信需要花費一定的力氣才能理解,因為這是本文當中最難的一部分。讀者也可以選擇跳過這部分,直接進入下一部分。
首先我們畫一個具體的例子,我們只用兩個詞進行通信。詞 a 發生的概率是 p(a),詞 b 的概率是p(b)。我們用上面描述的這種自然的方式分配我們的預算。用p(a)的預算為 a 獲得一個短的編碼,用 p(b) 的預算為 b 獲得一個短的編碼。

成本(Cost)和長度分布(Length Contribution)重合了。這有什么意義嗎?
考慮一下,當我們輕微的改變一下編碼長度,成本和長度分布會有什么變化。如果我們輕微的增加編碼長度,消息分布長度會隨著邊界高度成比例的增加,而成本會隨著邊界高度下降而下降。

所以要使得 a 的編碼稍微變短的成本是 p(a) 。同時,我們并不需要每個編碼等長,而是需要它隨著對應詞使用頻率的增加而成比例的變短。這個頻率對于 a 來說,就是 p(a)。所以使得 a 的編碼稍微變短獲得的收益是 p(a)。
有趣的事情是兩個導數是相等的。這意味著初始預算有一個有趣的特性,如果你有一點點多的預算,那么你不管是用來使得哪個編碼更加短,獲得的效果都是一樣的。我們真正關心的事情是 比——這決定了我們會將多余的預算花在哪一個編碼上面。在這里面,這個比是 p(a)p(a),等于1。它獨立于p(a)——恒定于1。另一個也一樣。所以要多投資一點點的話對一任意一個編碼效果都是一樣的。


對于極小的量來說,其實也不算改變了預算。所以說,上面的論述并沒有證明之前的方法是最佳的預算分配方案。要真正證明,我們需要從一個不同的預算方案開始入手,這里我們在 a 上花費更多的預算,相應的在b上花費少一些的預算。我們從 b 的預算中拿出 ? 投資到 a 當中。這使得 a 的編碼變短,b的編碼變長。
現在,為 a 購買一個較短的編碼的成本是 p(a)+?,為 b 購買一個較短的編碼的成本是 p(b)+?。但是收益是不變的。這使得購買 a 的編碼的收益成本比是 p(a)p(a)+?,小于1。另一方面,購買 b 的編碼的收益成本比是 p(b)p(b)??,大于1。


這時候價格就不再平衡了。投資于 b 的收益要大于投資于 a。投資著就會嚷到“買 b, 賣 a!”。我們這么做了,然后回到了最原始的方案。所有的其它預算方案,都可以通過改進變化到我們最原始的方案。
最原始的方案——隨著使用頻率成比例的投資于不同的詞匯——并不僅僅是自然的方式,而且是最佳的方案。(這里用兩個詞來證明,但是這很容易擴展到更多的詞)。
(仔細的讀者可能會發現,我們的最佳預算方案會產生分數長度的編碼。這好像是一個問題。這意味著什么?當然,在實踐的時候,當你要發送一個編碼的時候需要取整。但是我們會看到,當我們發送很多次編碼的時候,能夠發送分數的編碼是有很重要的意義的。所以希望你能耐心的看文章的下一部分。)

計算熵

回憶一下,長度為 L 的編碼的成本是 12L。我們可以通過逆運算來獲得給定成本可以得到的編碼長度: log2(1cost)。因為我們在詞匯 x 上花費的成本是 p(x) , 所以長度是 log2(1x)。以下便是各個詞的編碼長度的最佳選擇。


在上一部分里面,我們相當于討論了給定概率分布 p 通信的平均消息長度的基本約束。這個約束,也就是使用最佳編碼方式得到的平均消息長度,被叫做分布 p 的熵, H(p)。我們知道了各個編碼的最佳長度,我們可以計算熵了。

H(p)=xp(x)log2(1p(x))
(人們往往利用恒等式 log(1a)=?log(a)將熵寫成 H(p)=?p(x)log2(p(x)),我認為第一種方式更加直接,所以文章將繼續使用這種形式。)
不管怎樣做,如果我要通信,我就至少要花費這么多的位。
通信需要的平均信息量很明顯可以用來壓縮數據。它還能用在什么地方呢?是的,它可以用來描述我的不確定性也給了我們一種量化信息的方式。
如果我確定一件事情要發生,我就不需要發送信息。如果有兩件事各以50%的概率發生,我只需要發送1位。如果有64件事情等概率的發生,那么我們就需要6位。概率的分布越是集中,我們就越有機會用變長編碼的方式去降低通信的成本。概率越是分散,那么需要的通信成本越大。
不確定性越大,當我們發現了什么事情發生的時候,我們學到的東西就越多。

交叉熵

在Bob出發去澳大利亞前不久,Bob和Alice結婚了,毫無疑問也是我虛構的。我自己都感到驚訝,也許是頭腦中的另一種性格,Alice并不是一個愛狗者,而是一個愛貓者。盡管如此,他們還是能夠找到沉迷動物的共同語言,并且擁有非常有限的詞匯。


他們只以不同的頻率說著相同的詞匯。Bob經常說狗,而Alice經常說貓。
剛開始Alice用Bob的編碼方式給我發消息。不幸的是,她用的成本本可以低很多的,因為Bob的編碼是根據Bob的詞匯分布優化的。Bob用的時候平均編碼長度是1.75。而Alice用Bob的編碼的話就變成了2.25。如果這兩個人用的分布不是這么相似的話,Alice用的平均編碼長度會更加長。
長度——用另一個分布的最佳編碼,來通信的平均編碼長度——叫做交叉熵。正式的,我們可以這樣定義交叉熵:

Hp(q)=xq(x)log2(1p(x))
在這里,交叉熵是關于愛狗者Bob的詞頻的愛貓者詞頻。


為了降低通信成本,我讓Alice用她自己的編碼。這降低了她的平均通信長度。但是這帶來了一個新的問題:有時候Bob會無意的使用Alice的編碼。令人奇怪的是,Bob用Alice的編碼表現比Alice用Bob的編碼更加糟糕。
所以,現在我們有四個量:

  • Bob用他自己的編碼(H(p)= 1.75位)
  • Ailce用她自己的編碼(H(q)=1.75位)
  • Alice用Bob的編碼(Hp(q)=2.25位)
  • Bob用Alice的編碼(Hq(p)=2.375位)

這個結果并不像想象中的那么直觀。比如 Hp(q)Hq(p)。能看出來這4個值之間的差別嗎?
在下面的圖中,每個子圖各表示4種可能中的一種。每個子圖像之前圖一樣可視化了平均消息長度。它們是方形的組織形式。水平的兩幅圖來自相同的分布,垂直的兩幅圖使用同一套編碼。這讓你視覺上方便的去對比。


你能看出來為什么 Hp(q)Hq(p)? Hq(p)因為在分布 p 下面有一個詞(藍色)非常的常見,但是因為在q下面非常不常見而得到了一個長的編碼。另一方面q分布下的常見詞(粉色)在p下面并不常見,但是這個差異沒有這么的明顯,所以Hp(q)就沒有Hq(p)那么大。
恩,那么為什么我們要關心交叉熵?交叉熵給了我們一種表達兩種分布差異的方法。pq的差異有多大,p關于q的交叉熵就會比p的熵大多少。




反之亦然。



真正有趣的事情是熵和交叉熵之間的差異。這個差異是來自因為用了給別的分布優化的編碼造成的。如果分布相同,這個差異就是0。隨著分布間差異的變大,這個差值就會變大。
我們把這個差值叫做Kullback-Leibler分歧,或者直接叫KL分歧,p關于q的KL分歧是,Dq(p),如下定義:

Dq(p)=Hq(p)?H(p)
KL分歧的有意思的地方是它就像兩個分布之間的距離。衡量著兩個分布之間的差異。(如果你認真的研究這個問題,你就會發現另一門叫做信息幾何的學科)。
交叉熵和KL分歧在機器學習領域令人難以置信的有用。機器學習中,往往我們希望一個分布盡可能的和另一個分布相似。比如我們希望一個被預測的分布和想要的分布盡可能的相似。KL分歧很自然的在這里得到應用,所以它出現在機器學習的很多地方。

熵和多變量

讓我們回到先前將天氣和穿衣的例子。



我媽,像很多父母一樣,有時候會擔心我是否穿了合適的衣服。(她有理由擔心——因為我經常在冬天不穿外套)。所以她常常想知道天氣和我穿什么衣服。我要發送多少位來通信呢?
最簡單的方式就是展開這個分布:



現在我們可以畫出這些詞的分布的最優編碼以及計算平均消息長度。



我們把這個叫做XY的聯合熵。定義成:

H(X,Y)=x,yp(x,y)log2(1p(x,y))
這和我們之前看到的一般的分布是一樣的,除了是兩個變量而不是一個。
一個稍微好一點的理解的方式不是展開它,而是在第三維上戰士編碼長度。這樣的話熵就是體積。



假設我媽已經知道天氣了,比方說她可以從電視上查看天氣。這樣我需要發送多少的信息呢?
看上去我好像不管怎樣也要發送說清我穿什么的信息吧。但是事實上我只需要發更少的信息,因為天氣強烈的暗示著我穿了什么衣服。讓我們分別考慮下雨天和出太陽的情況。



在這兩種情況下,平均來說我都不需要發送多少的信息,因為天氣給出了要獲得正確就結果的輔助信息。當下雨的時候,我可以用根據下雨優化過的編碼。當出太陽的時候,我可以用根據出太陽優化過的編碼。在這兩種個情況下,我都可以相對使用通用編碼少發送信息。我要計算的平均信息量只要將這兩個分布結合起來就可以了。



我們把這個叫做條件熵。如果用公式寫出來,是這個樣子的:

H(X|Y)=yp(y)xp(x|y)log2(1p(x|y))=x,yp(x,y)log21p(x|y)

交互信息

在上一部分,我們看到,知道一個變量,意味著通信另一個變量可以需要更少的信息。

一個不錯的思考這個問題的方式是將信息想象成條。如果這些bars之間有共享的信息,那么它們會相互重疊。比如XY中的某些信息共享,H(X)H(Y)就是重疊的條。因為H(X,Y)XY中的信息,所以它是條H(X)H(Y)聯合。



一旦我們這樣看待問題,很多事情的理解變得簡單了。
比如,我們之前提到的通信XY(聯合熵H(X,Y))相比只通信X(邊緣熵H(X))花費更多的信息。但是如果你已知Y,那么你相對來說只需要更少的信息來通信X(條件熵,H(X|Y))。



這看起來有點復雜,但是我們如果從bar的角度來看又變得簡單了。H(X|Y)是我們要發送給已經知道Y的人來通信X所需要的信息,也就是只在X中的信息而不在Y中的信息。視覺上,這意味著H(X|Y)H(X)中不和H(Y)重疊的部分。
你現在可以根據下圖來看不等式H(X,Y)H(X)H(X|Y)



另外一個等式H(X,Y)=H(Y)+H(X|Y)。這就是XY中的信息,等于Y中的信息加上X中不在Y中的信息。



再一次這個等式是很難想到的,但是從信息bar的重疊角度看這個問題又變得簡單了。
到現在為止,我們已經用多種方式解釋了XY中的信息。我們有在每個變量中的信息,H(X)H(Y)。我們有兩個量聯合中的信息,H(X,Y)。我們有只在一個量中的信息H(X|Y)H(Y|X)。其中在兩個變量間共享的信息反復出現,信息之間的交集。我們把它叫做”交互信息”,I(X,Y),定義如下:

I(X,Y)=H(X)+H(Y)?H(X,Y)
有這個定義是因為 H(X)+H(Y)中有兩份交互信息,因為交互信息在 XY中都存在。而 H(X,Y)中只有一份。(考慮之前的bar圖)。
和交互信息密切相關的一個量是變異信息。變異信息是指變量間不共享的信息。我們可以這樣定義:
V(X,Y)=H(X,Y)?I(X,Y)
變異信息也有點意思,因為它也給了我們一個度量標準,變量間的一個距離的概念。如果知道一個量就知道另一個量,那么這兩個量的變異信息就是0。變異信息隨著變量之間的獨立程度的增加而增加。
那么這和KL分歧有什么關系?它同樣給了我們一個距離的概念。KL分歧給了我們同一個變量或者同一組變量的兩個不同分布之間的距離度量。而變異信息給了我們一個聯合分布的兩個變量之間的距離度量。KL分歧衡量同一個分布,而變異信息衡量同一個分布中的不同變量。我們可以把以上講到的不同的信息畫到同一幅圖中:



分數位

信息論中一個非常unintutitive的事情是我們可以有分數量的位。這很奇怪,有半個位意味著什么?
有一個簡單的答案:往往我們關心的是期望消息長度,而不是某一個具體的消息長度。如果一半的時間發送1位,而另一半的時間發送2位,那么期望消息長度是1.5位。期望長度是分數沒有什么好意外的。
但是這個答案避開了問題的關鍵。往往,最優編碼長度是分數的,這意味著什么?
為了具體化,我們考慮一個概率分布,事件a發生的概率是71%,事件b發生的概率是29% 。最優編碼使用0.5位來表示a,使用1.7位來表示b。如果我們要發送這樣的編碼是不可能的, 我們必須取整數的位,并期望發送1位。
但是如果我們想要每次發送多個位,我們其實可以做的更好。我們考慮從這個分布出發發送兩個事件。如果獨立的發送它們,我們需要2位。那么我們能做的更好嗎?



一半的時間我們在通信aa,各21%的時間我們在發送abba,而8%的時間我們通信bb。再一次,我們理想的編碼涉及分數。



如果取整編碼長度我們得到下圖:



這個編碼方案給了我們1.8的平均消息長度。這和我們之前獨立的發送需要2位來說要少。另一種思考這個問題的方式是現在我們對于每個事件只需要通信0.9位。如果我們一次發送更多的事件,這個值會變得更小。當n趨向無窮大,由于取整造成的消息長度增加就會消失。而編碼的位數就會接近熵。
進一步,a的理想編碼長度是0.5位,aa的理想編碼長度是1位。即使它是分數,理想編碼長度也會增加。所以我們每次要通信多個事件,期望消息長度就會增加。
即使實際只能用整數的位,可以有分數位的信息長度也有很重要的意義。
(在實際應用中,人們使用在不同范圍內都有效果的霍夫曼編碼,基本上就是上面的方法,它處理分數位問題并不是非常優雅,和上面一樣你需要對符號進行分組或者使用更加復雜的技巧來逼近熵的約束。算術編碼稍有不同,但是它優雅的處理了分數位問題,使得期望消息長度逼近最優)。

總結

如果我們關心的最少的位,這里提到的思想很明顯是相當基本的。如果我們關心數據壓縮,信息論解答了核心問題并且給出了基礎的抽象。但是假如我們不關心這些,除了好奇心還有其它什么?
信息論中的思想出現在很多的領域里面: 機器學習,量子物理,遺傳學,熱力學,甚至是賭博。這些領域的實踐者一般不會因為想要壓縮信息而關心信息論。他們關心是因為這些知識和他們的領域有密切的聯系。量子糾纏可以用熵來解釋。統計力學和熱力學中的很多結論可以通過假設事件的最大熵不知道的前提下推導出來。賭徒的輸或者贏跟KL分歧有直接聯系,尤其是迭代設置。
信息論出現在所有這些地方,因為它提供了具體的,我們所要表達的很多事情的有根據的形式化。它給了我們衡量和表達不確定性的方法。兩組判定之間有多大的差異,一個問題的答案可以告訴我們另一個問題什么東西:概率分布有多么的分散,概率分布之間的距離有多大,兩個變量之間有多大的獨立程度。有沒有替代的相似的想法?有的。但是信息論中的想法干凈,而且有很好的特性,以及一個有根據的出發點。在有些情景下,信息論中的觀點就是你想要的,在很多其它情景下它也是這個混亂世界的一個很方便的解釋。
機器學習是我知道的最多的領域,所以讓我來講一講它吧。機器學習中的一個非常常見的任務就是分類。假如給我們一張圖片,讓我們預測圖片里面是狗還是貓。我們的模型也許會告訴我們“80%的概率是狗,20%的概率是貓?!奔偃缃Y果就是狗——那么我們只說80%概率是狗這個說法有多好?如果說85%的概率是狗,那么這種說法又提高了多少?
這是一個很重要的問題,因為我們需要一個概念去衡量我們模型的好壞,從而去優化它。我們需要提高什么呢?正確的答案往往跟我們使用模型的目的有關:我們只關心概率最大的那個結果?或者我們關心正確的結果概率有多大?有很大的概率得到錯誤的結果這樣有多么的糟糕?沒有一個標準的答案。因為不知道我們的模型到底多大程度上匹配我們最終需要的結果,所以往往不可能知道正確的答案。盡管并不是總是正確,結果表明交叉熵都是一個用來衡量模型好壞的一個不錯的概念。很多時候我們不知道我們具體關心的是什么,但是交叉熵就是一個不錯的概念。
信息給了我們一個新的強大的框架來看待世界。有時候它完美匹配我們手頭的問題。也有時候盡管它并沒有完美匹配,但是也非常有用。這篇文章只是寫了一點信息論的皮毛——還有很多主題,比如說糾錯編碼,我們就完全沒有提及——但是我希望我已經展示了信息論是一門很優美的學科,你并不需要感到害怕。

閱讀材料

Claude Shannon的關于信息論的paper,通信的數學原理是卓越的工作。(它貌似在早期信息論文章中反復的出現。它是一個時代?沒有頁碼限制?還是貝爾實驗室的文化輸出?)
Cover & Thomas的The element of information theory貌似是標準的材料,我發現它很有用。

感謝

非常感謝Dan Mane,David Andersen,Emma Pierson以及Dario Amodei。感覺他們關于本文仔細的有深度的評論。也感謝Michel Nielson,Greg Corrado,Youshua Bengio,Aaron Courville,Nick Beckstead, Jon Shlens(http://research.google.com/pubs/JonathonShlens.html), Andrew Dai, ChristianHoward,以及Martin Wattenberg的評論。
也感謝我最早的兩個神經網絡討論班,得以演示我文中提到的想法。
最后感謝發現錯誤和失誤的讀者。尤其感謝Connor Zwick, Kai Arulkumaran, Jonathan Heusser, Otavio Good, 以及一個匿名的評論者。

總結

以上是生活随笔為你收集整理的可视化信息论(2015年10月14日)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。