徹底理解交叉熵

??交叉熵(cross entropy)是深度學(xué)習(xí)中常用的一個概念,一般用來求目標(biāo)與預(yù)測值之間的差距首妖。以前做一些分類問題的時候院峡,沒有過多的注意,直接調(diào)用現(xiàn)成的庫疤估,用起來也比較方便。最近發(fā)現(xiàn)自己對交叉熵的理解有些模糊霎冯,不夠深入铃拇。遂花了些時間從頭梳理了一下相關(guān)知識點,才算理解了沈撞,特地記錄下來慷荔,以便日后查閱。

交叉熵是信息論中的一個概念缠俺,要想了解交叉熵的本質(zhì)显晶,需要先從最基本的概念講起贷岸。

1. 信息量

首先是信息量。假設(shè)我們聽到了兩件事磷雇,分別如下:
事件A:巴西隊進入了2018世界杯決賽圈偿警。
事件B:中國隊進入了2018世界杯決賽圈。
??僅憑直覺來說唯笙,顯而易見事件B的信息量比事件A的信息量要大螟蒸。究其原因,是因為事件A發(fā)生的概率很大崩掘,事件B發(fā)生的概率很小七嫌。所以當(dāng)越不可能的事件發(fā)生了,我們獲取到的信息量就越大苞慢。越可能發(fā)生的事件發(fā)生了诵原,我們獲取到的信息量就越小。那么信息量應(yīng)該和事件發(fā)生的概率有關(guān)挽放。

假設(shè)X是一個離散型隨機變量绍赛,其取值集合為\chi,概率分布函數(shù)p(x)=p(X=x), x\in\chi,則定義事件X=x_0的信息量為:I(x_0)=?log(p(x_0)),概率p(x_0)的取值范圍是[0,1]骂维,繪制為圖形如下:


可見該函數(shù)符合我們對信息量的直覺惹资。

2 熵

??考慮另一個問題,對于某個事件航闺,有n種可能性褪测,每一種可能性都有一個概率p(x_i)
這樣就可以計算出某一種可能性的信息量。舉一個例子潦刃,假設(shè)你拿出了你的電腦侮措,按下開關(guān),會有三種可能性乖杠,下表列出了每一種可能的概率及其對應(yīng)的信息量:

序號 事件 概率 信息量I
A 電腦正常開機 0.7 -log(p(A))=0.36
B 電腦無法開機 0.2 -log(p(B))=1.61
C 爆炸 0.1 -log(p(C))=2.30

我們現(xiàn)在有了信息量的定義分扎,而熵用來表示所有信息量的期望,即:H(X) = -\sum_{i=1}^np(x_i)log(p(x_i))其中n代表所有的n種可能性胧洒,所以上面的問題結(jié)果就是:
H(X)=?[p(A)log(p(A))+p(B)log(p(B))+p(C))log(p(C))]=0.7×0.36+0.2×1.61+0.1×2.30=0.804

然而有一類比較特殊的問題畏吓,比如投擲硬幣只有兩種可能,字朝上或花朝上卫漫。買彩票只有兩種可能菲饼,中獎或不中獎。我們稱之為0-1分布問題(二項分布的特例)列赎,對于這類問題宏悦,熵的計算方法可以簡化為如下算式: H(X) = -\sum_{i=1}^np(x_i)log(p(x_i)) = -p(x)log(p(x)) - (l-p(x))(1-log(p(x)))

3. 相對熵(KL散度)

??相對熵又稱KL散度,如果我們對于同一個隨機變量 x 有兩個單獨的概率分布 P(x) 和 Q(x),我們可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分布的差異
即如果用P來描述目標(biāo)問題饼煞,而不是用Q來描述目標(biāo)問題源葫,得到的信息增量。

??在機器學(xué)習(xí)中砖瞧,P往往用來表示樣本的真實分布息堂,比如[1,0,0]表示當(dāng)前樣本屬于第一類。Q用來表示模型所預(yù)測的分布芭届,比如[0.7,0.2,0.1]
直觀的理解就是如果用P來描述樣本储矩,那么就非常完美。而用Q來描述樣本褂乍,雖然可以大致描述持隧,但是不是那么的完美,信息量不足逃片,需要額外的一些“信息增量”才能達到和P一樣完美的描述屡拨。如果我們的Q通過反復(fù)訓(xùn)練,也能完美的描述樣本褥实,那么就不再需要額外的“信息增量”呀狼,Q等價于P。

KL散度的計算公式: D_{KL}(p||q) = \sum_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)})n為事件的所有可能性损离。
D_{KL}的值越小哥艇,表示q分布和p分布越接近。

4.交叉熵

對上式變形可以得到:D_{KL}(p||q) = \sum_{i=1}^np(x_i)log(p(x_i)) - \sum_{i=1}^np(x_i)log(q(x_i)) = -H(p(x)) + (-\sum_{i=1}^np(x_i)log(q(x_i)))
等式的前一部分恰巧就是p的熵僻澎,等式的后一部分貌踏,就是交叉熵:
H(p,q) = -\sum_{i=1}^np(x_i)log(q(x_i))
在機器學(xué)習(xí)中,我們需要評估label和predicts之間的差距窟勃,使用KL散度剛剛好祖乳,即D_{KL}(p||q),由于KL散度中的前一部分?H(y)不變秉氧,故在優(yōu)化過程中眷昆,只需要關(guān)注交叉熵就可以了。所以一般在機器學(xué)習(xí)中直接用用交叉熵做loss汁咏,評估模型亚斋。

5. 機器學(xué)習(xí)中交叉熵的應(yīng)用

??在線性回歸問題中,常常使用MSE(Mean Squared Error)作為loss函數(shù)攘滩,比如: loss=\frac{1}{2m}\sum_{i=1}^m (y_i?\hat{y_i})^2這里的m表示m個樣本的帅刊,loss為m個樣本的loss均值。
MSE在線性回歸問題中比較好用轰驳,那么在邏輯分類問題中還是如此么?

交叉熵在單分類問題中的使用
這里的單類別是指,每一張圖像樣本只能有一個類別级解,比如只能是狗或只能是貓冒黑。
交叉熵在單分類問題上基本是標(biāo)配的方法
loss=-\sum_{i=1}^n y_i*log(\hat{y_i})
上式為一張樣本的loss計算方法。式2.1中n代表著n種類別勤哗。
舉例說明,比如有如下樣本


對應(yīng)的標(biāo)簽和預(yù)測值

* 青蛙 老鼠
Label 0 1 0
Pred 0.3 0.6 0.1

那么 loss=?(0×log(0.3)+1×log(0.6)+0×log(0.1)) = ?log(0.6)
對應(yīng)一個batch的loss就是
loss=?\frac{1}{m} \sum_{j=1}^m\sum_{i=1}^ny_{ji}log(\hat{y_{ji}})m為當(dāng)前batch的樣本數(shù)抡爹。

交叉熵在多分類問題中的使用
??這里的多類別是指,每一張圖像樣本可以有多個類別芒划,比如同時包含一只貓和一只狗冬竟,和單分類問題的標(biāo)簽不同,多分類的標(biāo)簽是n-hot民逼。
比如下面這張樣本圖泵殴,即有青蛙,又有老鼠拼苍,所以是一個多分類問題


對應(yīng)的標(biāo)簽和預(yù)測值

* 青蛙 老鼠
Label 0 1 1
Pred 0.1 0.7 0.8

值得注意的是笑诅,這里的Pred不再是通過softmax計算的了,這里采用的是sigmoid疮鲫。將每一個節(jié)點的輸出歸一化到[0,1]之間吆你。所有Pred值的和也不再為1。換句話說俊犯,就是每一個Label都是獨立分布的妇多,相互之間沒有影響。所以交叉熵在這里是單獨對每一個節(jié)點進行計算燕侠,每一個節(jié)點只有兩種可能值者祖,所以是一個二項分布。前面說過對于二項分布這種特殊的分布贬循,熵的計算可以進行簡化咸包。即
loss = -ylog(\hat{y}) - (1-y)log(1-\hat{y})注意,上式只是針對一個節(jié)點的計算公式杖虾。這一點一定要和單分類loss區(qū)分開來烂瘫。
例子中可以計算為:
loss_貓=?0×log(0.1)?(1?0)log(1?0.1)=?log(0.9)
loss_蛙= ?1×log(0.7)?(1?1)log(1?0.7)=?log(0.7)
loss_鼠=?1×log(0.8)?(1?1)log(1?0.8)=?log(0.8)
單張樣本的loss即為loss=loss_貓+loss_蛙+loss_鼠
每一個batch的loss就是:
loss = \sum_{j=1}^m\sum_{i=1}^n-y_{ji}log(\hat{y_{ji}})-(1-y_{ji})(1-log(\hat{y_{ji}}))式中m為當(dāng)前batch中的樣本量,n為類別數(shù)奇适。

轉(zhuǎn)自:https://blog.csdn.net/tsyccnh/article/details/79163834

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坟比,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嚷往,更是在濱河造成了極大的恐慌葛账,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皮仁,死亡現(xiàn)場離奇詭異籍琳,居然都是意外死亡菲宴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門趋急,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喝峦,“玉大人,你說我怎么就攤上這事呜达∫ゴ溃” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵查近,是天一觀的道長眉踱。 經(jīng)常有香客問我,道長霜威,這世上最難降的妖魔是什么谈喳? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮侥祭,結(jié)果婚禮上叁执,老公的妹妹穿的比我還像新娘。我一直安慰自己矮冬,他們只是感情好谈宛,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胎署,像睡著了一般吆录。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琼牧,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天恢筝,我揣著相機與錄音,去河邊找鬼巨坊。 笑死撬槽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的趾撵。 我是一名探鬼主播侄柔,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼占调!你這毒婦竟也來了暂题?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤究珊,失蹤者是張志新(化名)和其女友劉穎薪者,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剿涮,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡言津,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年攻人,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悬槽。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡贝椿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陷谱,到底是詐尸還是另有隱情,我是刑警寧澤瑟蜈,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布烟逊,位于F島的核電站,受9級特大地震影響铺根,放射性物質(zhì)發(fā)生泄漏宪躯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一位迂、第九天 我趴在偏房一處隱蔽的房頂上張望访雪。 院中可真熱鬧,春花似錦掂林、人聲如沸臣缀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精置。三九已至,卻和暖如春锣杂,著一層夾襖步出監(jiān)牢的瞬間糜俗,已是汗流浹背渔扎。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庆聘。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像汁汗,于是被迫代替她去往敵國和親咪辱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容