交叉熵?fù)p失函數(shù)原理詳解
- 之前在代碼中經(jīng)橙銮玻看見(jiàn)交叉熵?fù)p失函數(shù)(CrossEntropy Loss)载城,只知道它是分類(lèi)問(wèn)題中經(jīng)常使用的一種損失函數(shù),對(duì)于其內(nèi)部的原理總是模模糊糊讯赏,而且一般使用交叉熵作為損失函數(shù)時(shí)垮兑,在模型的輸出層總會(huì)接一個(gè)softmax函數(shù),至于為什么要怎么做也是不懂漱挎,所以專門(mén)花了一些時(shí)間打算從原理入手系枪,搞懂它,故在此寫(xiě)一篇博客進(jìn)行總結(jié)磕谅,以便以后翻閱私爷。
交叉熵簡(jiǎn)介
- 交叉熵是信息論中的一個(gè)重要概念,主要用于度量?jī)蓚€(gè)概率分布間的差異性膊夹,要理解交叉熵衬浑,需要先了解下面幾個(gè)概念。
信息量
信息奠基人香農(nóng)(Shannon)認(rèn)為“信息是用來(lái)消除隨機(jī)不確定性的東西”放刨,也就是說(shuō)衡量信息量的大小就是看這個(gè)信息消除不確定性的程度工秩。
“太陽(yáng)從東邊升起”,這條信息并沒(méi)有減少不確定性,因?yàn)樘?yáng)肯定是從東邊升起的拓诸,這是一句廢話侵佃,信息量為0。
”2018年中國(guó)隊(duì)成功進(jìn)入世界杯“奠支,從直覺(jué)上來(lái)看馋辈,這句話具有很大的信息量。因?yàn)橹袊?guó)隊(duì)進(jìn)入世界杯的不確定性因素很大倍谜,而這句話消除了進(jìn)入世界杯的不確定性迈螟,所以按照定義,這句話的信息量很大尔崔。
根據(jù)上述可總結(jié)如下:信息量的大小與信息發(fā)生的概率成反比答毫。概率越大,信息量越小季春。概率越小洗搂,信息量越大。
設(shè)某一事件發(fā)生的概率為P(x)载弄,其信息量表示為:
其中I(x)I(x)表示信息量耘拇,這里loglog表示以e為底的自然對(duì)數(shù)。
信息熵
信息熵也被稱為熵宇攻,用來(lái)表示所有信息量的期望惫叛。
期望是試驗(yàn)中每次可能結(jié)果的概率乘以其結(jié)果的總和。
所以信息量的熵可表示為:(這里的X是一個(gè)離散型隨機(jī)變量)
使用明天的天氣概率來(lái)計(jì)算其信息熵:
序號(hào) | 事件 | 概率P | 信息量 |
---|---|---|---|
1 | 明天是晴天 | 0.5 | |
2 | 明天出雨天 | 0.2 | |
3 | 多云 | 0.3 |
對(duì)于0-1分布的問(wèn)題逞刷,由于其結(jié)果只用兩種情況嘉涌,是或不是,設(shè)某一件事情發(fā)生的概率為P(x)夸浅,則另一件事情發(fā)生的概率為1?P(x)仑最,所以對(duì)于0-1分布的問(wèn)題,計(jì)算熵的公式可以簡(jiǎn)化如下:
相對(duì)熵(KL散度)
如果對(duì)于同一個(gè)隨機(jī)變量X有兩個(gè)單獨(dú)的概率分布P(x)和Q(x)题篷,則我們可以使用KL散度來(lái)衡量這兩個(gè)概率分布之間的差異词身。
下面直接列出公式,再舉例子加以說(shuō)明番枚。
在機(jī)器學(xué)習(xí)中法严,常常使用P(x)來(lái)表示樣本的真實(shí)分布,Q(x)來(lái)表示模型所預(yù)測(cè)的分布葫笼,比如在一個(gè)三分類(lèi)任務(wù)中(例如深啤,貓狗馬分類(lèi)器),x1?,x2?,x3?分別代表貓路星,狗溯街,馬诱桂,例如一張貓的圖片真實(shí)分布P(X)=[1,0,0], 預(yù)測(cè)分布Q(X)=[0.7,0.2,0.1],計(jì)算KL散度:
KL散度越小呈昔,表示P(x)與Q(x)的分布更加接近挥等,可以通過(guò)反復(fù)訓(xùn)練Q(x)來(lái)使Q(x)的分布逼近P(x)。
交叉熵
首先將KL散度公式拆開(kāi):
前者H(p(x))表示信息熵堤尾,后者即為交叉熵肝劲,KL散度 = 交叉熵 - 信息熵
交叉熵公式表示為:
在機(jī)器學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò)時(shí),輸入數(shù)據(jù)與標(biāo)簽常常已經(jīng)確定郭宝,那么真實(shí)概率分布P(x)也就確定下來(lái)了辞槐,所以信息熵在這里就是一個(gè)常量。由于KL散度的值表示真實(shí)概率分布P(x)與預(yù)測(cè)概率分布Q(x)之間的差異粘室,值越小表示預(yù)測(cè)的結(jié)果越好榄檬,所以需要最小化KL散度,而交叉熵等于KL散度加上一個(gè)常量(信息熵)衔统,且公式相比KL散度更加容易計(jì)算鹿榜,所以在機(jī)器學(xué)習(xí)中常常使用交叉熵?fù)p失函數(shù)來(lái)計(jì)算loss就行了。
交叉熵在單分類(lèi)問(wèn)題中的應(yīng)用
在線性回歸問(wèn)題中缰冤,常常使用MSE(Mean Squared Error)作為loss函數(shù)犬缨,而在分類(lèi)問(wèn)題中常常使用交叉熵作為loss函數(shù)。
下面通過(guò)一個(gè)例子來(lái)說(shuō)明如何計(jì)算交叉熵?fù)p失值棉浸。
假設(shè)我們輸入一張狗的圖片,標(biāo)簽與預(yù)測(cè)值如下:
* | 貓 | 狗 | 馬 |
---|---|---|---|
Label | 0 | 1 | 0 |
Pred | 0.2 | 0.7 | 0.1 |
那么loss
一個(gè)batch的loss為
其中m表示樣本個(gè)數(shù)刺彩。
總結(jié):
交叉熵能夠衡量同一個(gè)隨機(jī)變量中的兩個(gè)不同概率分布的差異程度迷郑,在機(jī)器學(xué)習(xí)中就表示為真實(shí)概率分布與預(yù)測(cè)概率分布之間的差異。交叉熵的值越小创倔,模型預(yù)測(cè)效果就越好嗡害。
交叉熵在分類(lèi)問(wèn)題中常常與softmax是標(biāo)配,softmax將輸出的結(jié)果進(jìn)行處理畦攘,使其多個(gè)分類(lèi)的預(yù)測(cè)值和為1霸妹,再通過(guò)交叉熵來(lái)計(jì)算損失。