知道吗?滚还是不滚的问题和信息论有关!
信息社會,信息的概念我們聽得太多了,有時候會有梗說“這個信息量有點大啊……”比如下面的這個老掉牙的故事:
”一對情侶被殺人狂抓住了
殺人狂說可以只殺一個,情侶兩人玩一次剪刀石頭布,勝方活命,平局兩人都要死。
情侶互相約定好,一起出石頭共赴黃泉!
可是最后女孩被殺人狂殺了,因為男孩出了剪刀。
但是,你有沒有想過,一個精確的對于信息的定義是什么呢?是可以腦補出很多內容的意思嗎?我們不妨深入思考一下信息,information,核心本質的意義在哪里。
在追求精確的科學領域,信息要有一個精確的量化指標。大概是說,我們可以有諸如“一個單位的信息”這樣的說法。為了探求這樣的量化方式,我們需要探索一下一些常見的信息載體給我們多或者少的信息的時候,有什么特點。
震驚!
太陽今天早晨竟然在東邊升起!
不看你會后悔!
朝鮮聲稱即將進行下一輪核試驗!
注意了!
每吸煙一分鐘生命就會減少60秒!
看到這樣的新聞標題,我們會覺得十分無聊,甚至不用看正文就知道這個新聞沒有什么新東西(換句話說就是沒有多少信息)。
那么這是為什么呢?
仔細思考一下你就會發現,之所以覺得這件事沒什么值得報道的,核心原因就是因為我們覺得這件事情幾乎是必然發生的,也就是說概率幾乎為1。所以對于這些報道而言,它們包含的信息微乎其微。
但是相反,如果你突然看到了下面的消息:
國足3:0橫掃巴西,
強勢進軍世界杯決賽!
神劇!
這個反派一句沒BB就崩了男主!
LR脫單了!……
當你們看到這些概率非常小的事情的時候,立刻會覺得這背后充滿了信息。因為可能性太小,所以背后一定有大事情。
于是我們就有了信息的第一個性質:
一個事件包含的信息和它發生的概率有關,且成負相關關系
(即概率越大信息越少,概率趨近于0信息無窮大)
但是這樣的函數有很多(例如1/x^n-1),我們還需要更加精確的定量分析信息的性質。稍加思考我們會感受到,假設存在這樣表示信息量一個函數I(A),以發生概率p的事件A為自變量;如果說有兩件基本毫不相關的事情同時發生(例如特朗普當選總統和今天的線性代數停課),它們提供給我的總信息量,應當等于兩個各自信息量的總和:
I(AB)=I(A)+I(B)
AB:特朗普當選總統且線性代數停課
A:特朗普當選總統
B:線性代數停課
但同時我們知道,不相關的AB發生的概率是兩個事件的概率的乘積,所以這個性質精確的刻畫了信息函數的樣子,解這個函數方程,我們得到:
I(A)=log(1/p)
其中p是A發生的概率。
這個函數非常優秀,因為它同時滿足了:
p=1時信息為0,p趨向于0時信息為無窮大
I(A)+I(B)=log(1/p)+log(1/q)
=log(1/pq)=I(AB)
(即信息的疊加原理)
在上面的這個公式中,log的底數是不清的。如果取成2,那么就是最常見的信息度量,單位為bit(沒錯!就是文件大小的那個bit!事實上它的含義就是基本內存單元的一個二進制碼);如果是自然對數e,那么單位就叫奈特。
可是,僅僅有了這個公式有什么意義呢?為了說明這個問題,我們可以先看一個有趣的小問題:
國王召開宴會,一共有1000桶葡萄酒。邪惡的刺客在其中一桶酒里下了致命的毒。人們只知道有且僅有一桶酒被下毒,卻不知道是哪一桶。現在你可以拿小白鼠做實驗,小白鼠可以同時喝下多個桶的取樣結果,且無視稀釋效果喝到就死,但是一只小白鼠只能喝一次,且時間緊迫你只有一輪觀察的時間。請問你最少需要多少只小白鼠來確定呢?
這道題原本是一個數學競賽的題目,最后的答案和二進制有關,但是這個問題原來的解法十分玄妙,如果沒有接觸過很難下手。不過,我們現在可以從信息論的角度來重新審視這個問題:
假設某一個小白鼠以p的概率死亡,(1-p)的概率存活。那么它最后的死活結果將會以p的概率通過死給出log(1/p)的信息,以(1-p)的概率通過活給出log(1/(1-p))的信息,所以每一只小白鼠給的信息量是:
p×log(1/p)+(1-p)×log(1/(1-p))
注意到函數x·log(x)是一個在(0,1)區間內的凸函數,所以根據琴生不等式我們有
p×log(1/p)+(1-p)×log(1/(1-p))≤2(1/2×log(2))=1
換句話說,每一個老鼠能夠給出至多1bit的信息量,而1000桶酒我們假設每一桶都等概率1/1000的有毒(根據琴生不等式這也是最不確定和需要最多信息的情況了),于是這個信息量是:
log(1000)≈9.97<10
所以我們立刻得到,想要讓小白鼠加在一起包含這個有毒的編號的信息,我們需要至少10只小白鼠。而且想要真正滿足這一點,需要要求不同小白鼠之間的死活沒有關聯且每只老鼠的死亡概率都大致是1/2
而具體的做法很簡單,我們把所有1-1000的數字寫成十位二進制數,然后讓第i只老鼠喝二進制第i位為1的所有編號桶的酒。這樣,第i只老鼠如果死我們就知道有毒桶的第i位編號是1、否則是0,最后10只小白鼠的死活就自動構成有毒桶的編號的二進制序列,我們就確定下來有毒的是哪一桶酒了。
(以8桶酒為例,第一只小白鼠喝1,3,5,7;第二只喝3,4,7,8;第三只喝5,6,7,8。可以自己驗證對于所有的有毒情況都唯一對應一個獨特的死亡序列)
因此可以看到,一個信息源頭的信息量有多少,很大程度上就是由它輸出的多種情況及各種情況的概率分布所決定的。而量化其大小的標準,就是編碼其各種輸出的結果所需要的長度。一個良好的編碼在相當長的一個時間跨度和隨機分布內,應該使得其冗余編碼最小,也就是總長度最短。在給定先驗的信號分布(也就是各種結果可能的概率的時候),理論上最佳也被廣泛使用的編碼體系就是“哈夫曼編碼”,有興趣可以自己查找【挖坑不填嘿嘿嘿】
熵與互信息
為了讓問題進行的更深入,我們先來看熱力學的概念:熵,如何在信息中有應用。
熵在熱力學中的意義是不確定度,在信息論中也有涉及(這就是香農建立起的信息熵理論)。如果一件事情有各種發生的可能,那么這個事情在位置的時候具有的不確定性(也就是熵),等于各種結果的信息量按照其概率加權平均。
我們可以看一個更有意思的事情,就是互信息:
如果僅僅有一個信息量的定義和量化我們并不能做什么事情。信息一件最重要的職能就是輔助我們減少不確定度、并完成一件事情。
比如當你選了一門Yariv的英語課,然后獲得了幾位學長在這門課上被掛或是被扔出教室的信息,那么你選擇退課的幾率將大大提升,換言之退掉Yariv課這件事情的不確定性(或信息量)在給定有學長被扔出教室的情況下會大大減小。
這種一個事件的發生的信息減少另一件事件的不確定度(也即信息量)的情況,就是互信息的意義所在。如果我們記:
X:得知慘慘的學長被掛及扔出教室
Y:選擇退掉Yariv的英語課
然后我們有以下表格:
解釋這個表格意思就是,
p(X)=0.5
你有0.5的概率知道有學長被掛的這件事情。
在你不知道的時候,你會有0.6的概率退課,0.4的概率不退;而你一旦知道這件事情之后,你有0.9的概率退課,0.1的概率選擇面對疾風。在不知道你到底有沒有聽說學長的建議之前,你有0.45+0.3=0.75的概率退課,0.25的概率不退,這件事情的信息熵為
H(Y)=0.75×log(1/0.75)+0.25×log(1/0.25)
≈0.81bit
但是在給定X=1(也就是你知道有人被掛的事情的情況下),你退課的概率暴增到0.9,于是你退課這件事情的信息熵變成了只有
H(Y|X)=0.9×log(1/0.9)+0.1×log(1/0.1)
≈0.47bit
這中間減少的信息H(Y)-H(Y|X)≈0.34bit就是X給Y提供的信息了,我們把它記為I(Y:X)。通俗來說就是,X的發生能夠給Y減少多少的不確定度。這個減少量就是信息量。
【小思考:I(X:Y)又代表什么呢?(答案在本文找)】
表示在知道你已經退課時候,能推出你聽說了學長退課的信息量
信道模型
互信息有一個常見的模型是信道模型:眾所周知,當信號在傳遞的時候會有一定的幾率錯誤(電磁噪音,敲鍵盤手抖,女朋友很作……)我們假設當發送源打算發送0的時候有e的概率發生錯誤,打算發送1的時候有f的概率發生錯誤。而這個信道原本發出0的概率是p,那么整個傳遞過程如下表:
如圖,藍色代表正確傳遞,紅色代表錯誤
我們可以看到,發出源s的信息熵為p×log(1/p)+(1-p)×log(1/(1-p)),而接受源r的信息熵為
(不要覺得很復雜哦,只要注意到輸出端以p(1-e)+(1-p)f的概率輸出0,剩余概率輸出1,然后兩者的信息加權平均,這個公式還是很直觀的)
上面的內容可能還是太抽象,我們不妨來看看一個真實的案例。
案例:某一個時候,你惹你女朋友生氣了,這個時候她可能叫你滾,也可能不叫你滾。但是當她叫你滾的時候可能并不是真的讓你滾,當她說再留一下的時候也可能是讓你趕緊離開,這個時候她說出來的話對于你應該離開與否提供的信息如何呢?
其實很簡單,套用上面的思路,設女朋友的表現是X,你應該要做的事情是Y。你需要計算的實質就是當你被給定X的時候你所能減少的Y的不確定度。也即I(Y:X),這一點只要套用上面的公式把兩邊的信息熵減一下就可以了。
但是問題來了!You know what, 有一個非常極端的例子。那就是根據你的大數據統計測算,每次發生不愉快時,對方有正好0.5的概率讓你滾,0.5的概率不。而當對方表達出任何一種想法的時候,都有0.5的概率是真的,0.5的概率言不由衷。這種情況下,如果你計算I(X:Y)就會驚奇的發現:
互信息為0啊!
為0啊老鐵!
知道這意味著什么嗎?
這意味著對方無論說什么,對于你究竟應該怎么做毫無指導意義,你完全不能得到任何信息。所以這個時候推薦你選擇一個1bit熵的輸出信源,然后自行決定,畫風如下:
【以下情節純屬娛樂,如實際試驗概不負責囧】
今天你似乎又惹你的女朋友生氣了,但是她看起來十分平靜,靜靜佇立著望向遠方,不知道內心是不是充滿波瀾;在以往的經驗里,她此時將以二分之一的概率碎碎念著。你去找她,問:“沒事吧?”,答:“沒事”,甚至還有一彎淺淺的笑。但是你依然放不下心,因為根據以往的經驗,她此時有百分之五十的概率在說假話。你計算了互信息,發現根本沒有任何頭緒。此時你想到你需要一個1bit的信源來做出決定,于是你掏出了一枚硬幣,你知道它等概率的正反在信息的本質上和她有沒有生氣一樣,也在本質上和你基于她的表現做出離開與否的決定一樣。于是你拋出這枚硬幣,反面,看來她是真的不生氣…………
【全文終】
彩蛋
男孩很生氣:不是說好了一起出石頭的嗎?!
女孩(奄奄一息):但是我知道你要出剪刀啊【微笑】
……
∑編輯?|?Gemini
來源 |?漫士囈語
算法數學之美微信公眾號歡迎賜稿
稿件涉及數學、物理、算法、計算機、編程等相關領域
稿件一經采用,我們將奉上稿酬。
投稿郵箱:math_alg@163.com
總結
以上是生活随笔為你收集整理的知道吗?滚还是不滚的问题和信息论有关!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 打开上一级目录,linux开
- 下一篇: 北师大名教授通过趣味数学与幽默教你学数学