2018年1月26日 星期五

機器學習(10)--訊息量、資訊熵(Information Entropy)

訊息量

        在資訊理論中,訊息量是有確定解釋並可以量化計算的,這裡提到的訊息量是一種資訊數量化,度量的規則。
        用科學公式性的方法去量化一段文字有多少資訊的想法,最早是由哈萊特(RVL Hartley)在1928年首先提出。他將消息數的對數(log)定義為訊息量。若信源有m種消息,且每個消息是以相等的可能性產生的,該信源的訊息量可表示如下:



        上述公式是一個以m為引數的對數函數,舉個具體的例子:
假設中國桌球隊與巴西桌球隊的男子單打比賽,注意它不存在平局的狀況,也就是說要麼中國桌球隊獲勝不然就是巴西桌球隊獲勝,這兩個就是已經所有可能發生的情形。只有兩種情形,在上述公式中即m=2,信源有兩種,即"中國隊獲勝巴西隊失敗"或是"巴西隊獲勝中國隊失敗"。將m=2帶入上述公式:

       訊息量為1,單位是bit。



       再舉一個例子,足球世界盃在淘汰賽階段會有32支隊伍參賽,在32支隊伍沒有開賽之前每支隊伍都有獲取冠軍的可能性,也就是說對誰獲得冠軍這件事來講,有32種狀況(注意這裡假設每一支隊伍獲勝的機率是均等的)。那麼最後在不知道比賽過程的情況下,突然被通知有一隻隊伍獲勝,那麼這個訊息量有多大呢?即m=32,也就是說32支隊伍的任一隻隊伍獲勝都是一種信源消息,32即是所有可能的結果。
那麼代入公式:I=log32=5,訊息量為5,單位是bit。
       比對一下結果,後者當m=32時訊息量為5,有2個可能值的時候訊息量為1。極端的狀況下,只有1種可能的的時候訊息量為0,因為log1=0,也就是無須被告知也能知道結果,即便告知了結果,訊息量也是0。
        到這裡為止,必須注意上述公式是假設m種情況產生的機率是相等的,沒有一種信源比其他的信源出現的可能性大。然而實際的狀況可能是中國桌球隊獲勝的機率較大,巴西桌球隊獲勝的機率較低,相對的,巴西足球隊的獲勝可能性也高於中國足球隊。那麼這種機率不等的情形,應該怎麼計算訊息量較合適呢?
        在日常生活中,極少發生的事情一旦發生了,才是容易引起大家關注的,而司空見慣的事件反而較不會引起注意。也就是說,極少見的事件一旦發生了所帶來的訊息量大。用統計的術語來描述,就是出現機率小的事件訊息量大,因此事件出現的機率越小訊息量越大。即訊息量多少與事件發生機率大小恰好相反,於是可以定義一公式如下:


        Xi表式一個發生的事件,P表示這個事件發生的先驗機率。
所謂先驗機率,就是這個事件按照常理一般性規律發生的機率。
        接下來還是用上述中國桌球隊與巴西桌球隊比賽的例子來說明,假設中國桌球隊與巴西桌球隊歷史交手64次。其中中國獲勝63次,63/64即是賽前普遍認可中國隊獲勝的機率,即是先驗機率(P),那麼這次中國隊獲勝的訊息量有多大呢?



而巴西隊獲勝的訊息量有多大呢?


單位都是bit。
        可以發現假如這次巴西隊獲勝了,那麼訊息量會大於中國隊獲勝的訊息量。
同理也可以得到,對於機率100%的事件,訊息量為0。
        另外從數學上可以發現,為何這個公式前面要帶一個負號?因為P為0~1範圍的機率值,而對這個引數的值取log皆為負數,於是公式上加一個負號,可以負負得正。這在之後資訊熵、交叉熵的公式定義也是一樣的理解方式。


資訊熵

        資訊熵用白話來描述可為資訊雜亂程度的量化描述,直接寫出公式如下:


         其中,x可當成一個向量,就是若干個xi產生的機率乘以該可能性的訊息量,然後各項作加總。
        注意,有些資料log是取10的對數lg,或者自然常數e的ln自然對數。在應用過程中使用任一種值做底部都是可以的,但是在某一次的應用過程中,參與該次應用的所有資訊熵都必須採用同一個底,不能將不同底的對數求出的熵再做加總或者比較,這樣是沒有意義的。

底下我們來看範例,還是用上述的中國桌球隊與巴西桌球隊的比賽例子說明。

範例1:2選1"一邊倒"情形

上述我們可以得知中國隊獲勝的訊息量為:



而巴西隊獲勝的訊息量為:



所以,中國桌球隊與巴西桌球隊比賽結果的資訊熵約為:



注意這是一個2選1的情形,並且確定性相當高的事件的熵(幾乎肯定中國隊會獲勝的情況事件)。

範例2:2選1"五五波"情形

        再來看一個兩者勢均力敵的例子,假設德國桌球隊和法國桌球隊的比賽,雙方歷史交手64次,勝負為32:32,那麼1/2是賽前普遍認可德國桌球隊的獲勝機率,同時也是法國隊的獲勝機率。那麼,德國隊獲勝的訊息量:


同樣法國隊獲勝的訊息量也為:



則資訊熵為:


注意,這是一個結果2選1而且等機率的熵。(兩隊獲勝機率五五波的事件)

         在考慮只有2個事件的資訊熵,函數會如下圖所示。可以看出當機率各為0.5時,得到的
熵為最大=1,而當兩隊的勝率差異很大時,熵會變小。


範例3:32選1"差不多"情形

        假設足球世界盃決賽階段,而且32隊獲得冠軍的機率都相等的情形下計算資訊熵。

隊伍1獲勝的訊息量:



隊伍2~32獲勝的訊息量也是:



則資訊熵為:



注意,這是一個結果32選1而且等機率的熵。


範例4:32選1"一邊倒"情形

        假設上述足球世界盃決賽階段,而且隊伍1獲勝的機率為99%,其他31隊獲得冠軍的機率為1%/31的情形下計算比賽結果的資訊熵。

隊伍1獲勝的訊息量:


隊伍2~32獲勝的訊息量是:


則資訊熵為:


結論:

        在資訊可能有N種情況時,如果每種的情況出現的機率相等,那麼N越大資訊熵越大。如同範例2與3,範例3的N為32大於範例2的N=2,結果範例3的資訊熵較大。
        在資訊可能有N種情況時,當N一定,那麼其中所有情況的機率相等時資訊熵是最大的。而如果有一種情況的機率比其他情況的機率都大很多,那麼資訊熵就會越小。

也就是說:
     資訊越確定,越單一,資訊熵越小
     資訊越不確定,越混亂,資訊熵越大

        資訊熵的用途是比較廣泛的,從其定義就能大概知道其用途。既然它是用來度量資訊混亂程度,那麼凡是關心資訊混亂程度對系統影響的地方,都可以用資訊熵來輔助調整或判斷。例如決策樹演算法,就可以用資訊熵來進行條件的最佳化。在文字挖掘中可以用資訊熵來斷定一個句子斷句的方案和各自成句的可能性。




<參考資料>
[1]書名:白話大數據與機器學習  作者:高揚、衛崢、伊會生


<其他相關文章>
人工神經網路(1)--使用Python實作perceptron(感知器)
人工神經網路(2)--使用Python實作後向傳遞神經網路演算法(Backprogation artificial neature network)
深度學習(1)-如何在windows安裝Theano +Keras +Tensorflow並使用GPU加速訓練神經網路
深度學習(2)--使用Tensorflow實作卷積神經網路(Convolutional neural network,CNN)
深度學習(3)--循環神經網絡(RNN, Recurrent Neural Networks)
深度學習(4)--使用Tensorflow實現類Lenet5手寫數字辨識
深度學習(5)--使用Tensorflow實現類AlexNet手寫數字辨識
深度學習(6)--使用Tensorflow實現類AlexNet model 訓練Cifar10數據集

機器學習(1)--使用OPENCV KNN實作手寫辨識
機器學習(2)--使用OPENCV SVM實作手寫辨識
演算法(1)--蒙地卡羅法求圓周率及橢圓面積(Monte carlo)
機器學習(3)--適應線性神經元與梯度下降法(Adaline neuron and Gradient descent)
機器學習(4)--資料標準常態化與隨機梯度下降法( standardization & Stochastic Gradient descent)
機器學習(5)--邏輯斯迴歸,過度適合與正規化( Logistic regression,overfitting and regularization)
機器學習(6)--主成分分析(Principal component analysis,PCA)
機器學習(7)--利用核主成分分析(Kernel PCA)處理非線性對應
機器學習(8)--實作多層感知器(Multilayer Perceptron,MLP)手寫數字辨識