導(dǎo)言
什么是交叉熵挤茄?和信息熵有什么關(guān)系如叼?為什么它可以用作分類的損失函數(shù)?二分類的交叉熵怎么表示穷劈?
在分類任務(wù)中薇正,你可能已經(jīng)用過交叉熵來作為損失函數(shù),并且好奇為什么要使用自然對數(shù)囚衔?二分類的交叉熵和普通的交叉熵有沒有什么本質(zhì)的不同挖腰?讀完這篇文章,希望你會有所收獲练湿。
交叉熵猴仑,由“交叉”和”熵”組成,我們先來理解熵肥哎,再來理解什么是交叉辽俗。
所以,首先我們來復(fù)習(xí)下熵篡诽。更多熵的內(nèi)容見上篇博客 http://www.reibang.com/p/ad05ed6db0a6
大綱:
- 熵的復(fù)習(xí)
- 熵的估計
- 交叉熵 ≥ 熵
- 交叉熵作為損失函數(shù)
- 納特 vs. 比特
- 二分類的交叉熵
- 總結(jié)
熵的復(fù)習(xí)
- 信息熵
- 提出:香農(nóng)
- 作用:計算無損編碼下的最小平均編碼長度
-
離散狀態(tài)下:(求和)
-
連續(xù)轉(zhuǎn)態(tài)下:(積分)
無論是離散還是連續(xù)狀態(tài)下崖飘,我們都是計算負(fù)對數(shù)概率的期望,作為某事件 x 的理論上的最小編碼長度杈女。
所以可以寫成期望的形式:
x~P 表示計算P概率分布下的期望朱浴。
也可以寫成H的這種形式。
總結(jié)一下达椰,熵告訴了我們某事件在給定概率分布的情況下翰蠢,理論上最小編碼長度。
也就是我們一旦知道了某事件的概率分布啰劲,我們就可以計算它的熵梁沧。
但是如果我們不知道該事件的概率分布,那么無法計算熵蝇裤,那怎么辦廷支?我們是不是就得對熵做一個估計。
但是栓辜,熵的估計意味著什么恋拍?他的準(zhǔn)確度怎么衡量?
為了回答這些問題啃憎,我們自然而然的引出了交叉熵芝囤。
熵的估計
還是以東京的天氣預(yù)報為例子。但是我們不知道天氣及具體的概率分布辛萍。為了便于討論悯姊,假設(shè)我們觀察了一段時間的天氣,可以找出其概率分布贩毕。
起初我們不知道東京天氣的概率分布悯许,我們用Q來估計它,并用它來計算發(fā)送天氣信息到紐約的最小平均編碼長度辉阶。
利用估計的概率分布Q先壕,那么估計的熵:
加入估計的Q越接近真實(shí)的分布,那么上面的估計也就越能到達(dá)最小的編碼長度谆甜。
但是呢垃僚,熵的估計公式中包含兩種不確定性。
如x~Q所示规辱,我們使用估計的概率分布Q來計算期望谆棺,與實(shí)際概率分P計算出的期望不同。這是第一種不確定性罕袋。
此外改淑,我們估計最小編碼長度為-log Q,我們根據(jù)估計的概率分布Q計算浴讯。因此朵夏,它不會100%準(zhǔn)確,這是第二種不確定性榆纽。
由于估計概率分布Q影響期望和編碼長度的估計仰猖,那么估計的熵可很大程度上也是不正確的。
碰巧的話奈籽,估計熵可以接近真實(shí)熵亮元,因為Q影響期望的計算和編碼長度估計。
所以唠摹,估計熵的真實(shí)熵之間的比較并不意味著什么爆捞。
和香農(nóng)一樣,我們關(guān)心的是怎么把編碼長度變得盡可能的小勾拉。所以我們應(yīng)該比較我們計算出的編碼長度和理論上的最小編碼長度的大小煮甥。
如果在觀察東京的天氣一段時間后,我們可以獲得實(shí)際的概率分布P藕赞,那么就可以利用概率分布P和天氣報告期間使用的實(shí)際編碼長度(基于Q)來計算實(shí)際的平均編碼長度成肘。
我們稱其為:P和Q之間的交叉熵,和熵的公式進(jìn)行比較斧蜕。
我們將蘋果與蘋果進(jìn)行比較双霍,因為我們使用相同的真實(shí)分布來對計算期望。 在此我們比較理論上最小編碼長度和天氣報告中使用的實(shí)際編碼長度。
簡而言之洒闸,我們正在交叉檢查編碼長度染坯,這就是“交叉”在交叉熵中的含義。
交叉熵 ≥ 熵
通常丘逸,交叉熵如下表示:
H(P, Q) 表示利用概率分布P和基于Q的編碼長度來計算期望. H(P, Q) 和 H(Q, P) 一般結(jié)果不相同单鹿,除非Q=P。在這種情況下交叉熵就成了熵本身: H(P, Q) = H(P, P) = H(P) 深纲。
這一點(diǎn)很微妙但很重要仲锄。 為了計算期望,我們應(yīng)該使用真實(shí)概率分布P湃鹊, 對于編碼長度儒喊,我們應(yīng)該使用Q來編碼消息。
由于熵是理論最小平均編碼長度币呵,因此交叉熵高于或等于熵但不小于熵怀愧。
換句話說,如果我們的估計是完美的富雅,則Q = P掸驱,因此H(P,Q)= H(P)没佑。 否則毕贼,H(P,Q)> H(P)蛤奢。
到目前為止鬼癣,我們搞清楚了熵和交叉熵之間的關(guān)系。 接下來啤贩,我們討論下為什么交叉熵可以作為分類的損失函數(shù)待秃。
交叉熵作為損失函數(shù)
例子:動物5分類問題,且每個圖片值包含一種動物痹屹。
每幅圖片都用one-hot的形式來編碼章郁。
我們把one-hot 編碼視為每幅圖的概率分布,下來來看幾個例子志衍。
對于第一幅圖(小狗):
對于第一幅圖(狐貍):
以此類推暖庄。
計算下每個圖的熵,其都為0楼肪,也就意味著沒有不確定性培廓。
換句話說,one-hot編碼的標(biāo)簽春叫,以100%的確定下告訴我們圖片中動物是什么肩钠。第一幅圖不會出現(xiàn)90%是狗泣港。10%的情況是狐貍的這種狀況。它一直是狗价匠,不會出現(xiàn)什么意外当纱。
現(xiàn)在,我們有個模型來對這些圖片進(jìn)行分類霞怀。當(dāng)我們對模型的訓(xùn)練程度不夠時惫东,對第一幅圖片(狗)分類可能會出現(xiàn)如下的情況:
也就是目前的模型告訴我們這個圖:40%-dog, 30%- fox, 5% - horse, 5%-eagle ,20% - squirre.看起來不是特別的準(zhǔn)確來告訴我們到底是什么動物莉给。
相反毙石,標(biāo)簽為我們提供了第一張圖像的動物類別的精確分布。 它告訴我們這是一只100%確定的狗颓遏。
所以徐矩,這么模型的預(yù)測能力怎么樣?我們計算一下交叉熵叁幢。
比標(biāo)簽對應(yīng)的0熵滤灯,高了許多,但是還看不出來直觀的意義曼玩。所以我們再來看看另外一個交叉熵作為比較鳞骤。
假設(shè)模型由訓(xùn)練了一會,對第一幅圖的輸出為:
計算交叉熵黍判,比之前的小了許多豫尽。
交叉熵將模型的預(yù)測和正式分布下對應(yīng)的標(biāo)簽進(jìn)行比較。隨著預(yù)測的越來越準(zhǔn)確顷帖,交叉熵的值越來越小美旧。如果預(yù)測完美,那么交叉熵變?yōu)?贬墩。所以交叉熵能夠作為分類模型的損失函數(shù)榴嗅。
Nats vs. Bits(納特和比特)
在機(jī)器學(xué)習(xí)中,我們經(jīng)常以自然對數(shù)為底而不是以2為底的對數(shù)陶舞,其中原因之一是便于計算微分嗽测。
對對數(shù)的基的變化只是會引起幅度上的變化。在分類問題中肿孵,我們用交叉熵作為損失函數(shù)唠粥,相對于具體的值更關(guān)心的關(guān)注其變小的趨勢。
納特颁井,是信息論中熵的單位之一厅贪。以自然對數(shù)為底而不是以2為底的對數(shù),以2位底稱為比特(bit)雅宾。
1納特相當(dāng)于1.44比特养涮。
怎么理解1納特葵硕?所以以1/e的概率的事件的信息量。1比特就是以1/2概率的時間的信息量贯吓。
但是以e為底解釋起來沒有像以2為底那么直觀懈凹。比如我們對某個信息用1 bit編碼,那么就降低了50%的可能性悄谐。如果用e來做相同的解釋的話介评,并不是很好的去理解,這就是為什么常常用以2為底去對信息熵的概念做解釋爬舰。然而们陆,機(jī)器學(xué)習(xí)中偏愛自然對數(shù)是因為便于計酸。
二分類中的交叉熵
情景:貓狗分類
總結(jié)
- 某隨機(jī)過程的概率分布已知情屹,那么就很容易計算出它的信息熵
- 若概率分布不知坪仇,用估計的概率分布去計算“熵”,這個熵和真實(shí)的熵怎么比較垃你?兩個概率分布之間的相似度怎么計算
- 預(yù)測完美時椅文,交叉熵等于信息熵。
- 交叉熵隨著預(yù)測的完美程度而降低惜颇,所以可以作為分類的損失函數(shù)
- 信息熵的度量皆刺。1比特和1納特的信息量怎么解釋?比特和納特各自有什么優(yōu)勢凌摄?在機(jī)器學(xué)習(xí)中為什么要以自然對數(shù)為底呢羡蛾?