機器學習-交叉熵與損失函數

一、信息是什麼?

信息很抽象,看不見摸不著,卻似乎又無處不在,一封郵件、一首歌、一則新聞、一本書、一張地圖、一句話......

但信息究竟是什麼?

朗文雙解詞典:

Information: Facts or details that tell you something about a situation, person, event, etc.

知乎大神:

1、從“你不知道”的狀態變成“你知道”的狀態,這個過程中傳送的“東西”,就叫信息。

2、信息是發送者和解讀者的相關knowledge base之間的diff。

3、讓你搞清狀況的東西。

但所有的以上答案,都可以用信息論之父香農的定義來概括:

信息是用來消除不確定的東西。

比如:

路標指示信息,可以消除岔路口方向的不確定性,幫助你選擇正確的道路。

機器學習-交叉熵與損失函數

一封家書,可以告知你家裡的情況,消除你對一些不確定狀況的顧慮,讓你安心的學習、工作。

機器學習-交叉熵與損失函數

天氣預報可以幫你確定未來的天氣,幫助你更好的決定下一步的安排。

機器學習-交叉熵與損失函數

二、信息的傳遞

信息傳遞的方式有很多中,比較古老的像周幽王烽火戲諸侯。那個時候,技術手段比較落後,而軍情又十萬火急,於是就想到了用烽火來進行傳遞。但由於烽火只有點燃和未點燃兩種狀態,所以能表達的內容十分有限。

機器學習-交叉熵與損失函數

後來有了電報,情況好很多。但由於發送接受需要編譯碼,操作複雜,效率比較低,也只能傳輸少量的信息。並且價格昂貴,通常是按字數收費。

機器學習-交叉熵與損失函數

所以電報的內容通常都很精煉。比如,你要發送:

“家裡又急事兒,趕快回來一趟。”

為了省錢,結果可能就會變為:

“事急,速回。”

但有些情況,通過精簡文字是行不通的。比如,你要發送一段詩:

“輕輕的我走了,

正如我輕輕的來;

我輕輕的招手,

作別西天的雲彩。”

少一個字,詩的意境就會大打折扣。

但從詩的內容上來看,確實有很多重複的字,難道除了減字兒就沒有其它轍了嗎?

當然不是。

我們知道,電報是通過電報碼來發送的,就是一個個的0和1的狀態。分析一下,這段詩中我們一共用到了16個漢字。如果用二進制對其進行編碼,需要:

機器學習-交叉熵與損失函數


個bit位。編碼如下:

機器學習-交叉熵與損失函數

全詩一共有26個字,這樣我們就需要發送:

26×4 = 104

個bit位。

如果我們換一種編碼方式,用少的位表示出現概率大的字,多的位表示出現概率低的字,也就是哈夫曼編碼,看看結果如何。

首先統計詩中文字出現的概率:

機器學習-交叉熵與損失函數

然後構造哈夫曼樹如下:

機器學習-交叉熵與損失函數

編碼結果:

機器學習-交叉熵與損失函數

這樣,我們需要發送的bit數就變為:

6×2+4×3+3×3+1×5×10+1×4×3 = 95

比先前的編碼少9個bit。同樣達到了精簡內容的目的。

再後來有了電話、手機、互聯網,這種限制越來越小。現在我們可以通過互聯網很輕鬆的傳遞以T計的內容,在線觀看高清電影。

機器學習-交叉熵與損失函數

三、信息如何衡量?

在電報的發送中我們已經看到,找出一種衡量信息多少的方式非常重要。就像時間有秒,質量有克,距離有米等。那信息呢?既然信息是用來消除不確定的東西,如何衡量它的大小?也就是說如何知道在消除一個不確定事件的時候需要多少信息?

比如,要想知道明天太陽是否會照常升起,需要多少信息?

按以往的經驗,太陽照常升起的概率幾乎是1,所以幾乎不需要猜測就能知道結果。

但如果是擲一枚硬幣,想知道它是不是正面,需要多少信息?

硬幣的結果只有兩種,非正即反,概率都是1/2。所以只需要一次猜測就能知道結果。

假設實際結果為正面。

如果猜正面,結果正確,結束。如果猜反面,被告知結果錯誤,同樣可以推測出來正確結果是正面。

所以只需猜測一次。

再比如,一道選擇題有A、B、C、D四個選項,要猜出正確結果,又需要多少信息呢?

四個選項概率相等,都是1/4,假設正確答案為C。

我們先將選項分成兩組:

第一組:A、B

第二組:C、D

第一次猜測:如果猜第一組,被告知錯誤,那麼就知道答案在第二組。如果猜第二組,正確。

第二次猜測:如果猜C,得出結果,猜測結束。如果猜D,被告知錯誤,於是得出C為正確答案。

可以看出,需要猜測兩次。

由以上例子可以看出,事件發生的概率越小,不確定性越大,消除不確定性需要的信息量就越大。所以信息量和概率有關係,並且是反相關。

回過頭來看上面的例子,

太陽照常升起的概率為1:

機器學習-交叉熵與損失函數

硬幣為正面的概率為​:

機器學習-交叉熵與損失函數

答案為C的概率為​:

機器學習-交叉熵與損失函數

將上面三個等式兩邊以2為底取對數,並添加負號,有:

機器學習-交叉熵與損失函數

0、1、2正好對應我們獲取正確答案的猜測次數。也就是消除不確定性需要的信息量。

進一步推廣出去,香農把:

機器學習-交叉熵與損失函數

定義為信息量。對數的底為2只是其中的一種情況,此時信息量的單位為bit。

有了這個式子,就可以量化信息了。

四、什麼是信息熵?

有了信息量為什麼還要信息熵呢?信息熵又是個啥?

假設你是一個經驗豐富的工程師,在維修一臺電子設備,引發設備故障的原因有A、B、C、D四種。

如果四種原因的概率相同,都是1/4,根據之前信息量的計算公式,很容易就能算出來:

機器學習-交叉熵與損失函數

最多兩次能排查出故障原因。

但如果引發故障原因的概率不等呢?比如,A的概率為1/2,B的概率是1/4,C、D的概率是1/8。

直覺告訴我們應該先排查A,然後是B,最後才是C、D。需要排查的次數是四種原因信息量的期望,為:

機器學習-交叉熵與損失函數

小於2。

等概率情況信息量的期望為:

機器學習-交叉熵與損失函數

等於單個選項的信息量。

所以,有些情況,僅有信息量是不夠的。還需要知道信息量的期望,這就是信息熵。

信息熵:平均信息量,信息量的期望。

五、什麼是相對熵?

如何衡量兩個隨機變量概率分佈的相似程度?

我們已經有了信息熵的概念,就是信息量的期望,也叫平均信息量。那能不能簡單的就用信息熵來衡量呢?

顯然不能。

比如,兩個隨機變量x和y的概率分佈如下:

機器學習-交叉熵與損失函數

二者的信息熵:

機器學習-交叉熵與損失函數

是相等的,

機器學習-交叉熵與損失函數

但概率分佈明顯差異很大。所以,簡單的用信息熵來衡量概率分佈的相似程度是行不通的。

但是不是意味著信息熵就不能用了呢?

不是,只不過要變一變。

選用一個固定的概率分佈來求信息熵:

機器學習-交叉熵與損失函數

或者

機器學習-交叉熵與損失函數

於是,便有:

機器學習-交叉熵與損失函數

或者:

機器學習-交叉熵與損失函數

這樣用來衡量概率分佈的差異就沒問題了。而:

機器學習-交叉熵與損失函數

就稱為p對q的相對熵。

總結起來:

相對熵就是:描述兩個概率分佈P和Q差異的一種方法。

六、損失函數與交叉熵

機器學習中,實際分佈為p,預測分佈為q。訓練的過程就是調整參數使q不斷逼近p的過程。調整的依據就是q與p的差。

如何衡量這個差呢?

就可以用相對熵:

機器學習-交叉熵與損失函數

但由於實際分佈的熵:

機器學習-交叉熵與損失函數

固定不變。

所以可以省略簡化,只優化:

機器學習-交叉熵與損失函數

部分就可以了。

​H(p||q)又被稱為交叉熵。交叉熵主要度量兩個概率分佈間的差異性信息。

(注:本文部分圖片來自於網絡,如有侵權請聯繫作者刪除。)


分享到:


相關文章: