softmax與交叉熵

機器學習中經常遇到這幾個概念,用大白話解釋一下:

一、歸一化

把幾個數量級不同的數據,放在一起比較(或者畫在一個數軸上),比如:一條河的長度幾千甚至上萬km,與一個人的高度1.7m,放在一起,人的高度幾乎可以被忽略,所以爲了方便比較,縮小他們的差距,但又能看出二者的大小關係,可以找一個方法進行轉換。

另外,在多分類預測時,比如:一張圖,要預測它是貓,或是狗,或是人,或是其它什麼,每個分類都有一個預測的概率,比如是貓的概率是0.7,狗的概率是0.1,人的概率是0.2... , 概率通常是0到1之間的數字,如果我們算出的結果,不在這個範圍,比如:700,10,2 ,甚至負數,這樣就需要找個方法,將其轉換成0-1之間的概率小數,而且通常爲了滿足統計分佈,這些概率的和,應該是1。

最常用的處理方法,就是softmax,原理如上圖(網上淘來的)。

類似的softmax(1)=0.12,softmax(-3)=0,這個方法在數學上沒毛病,但是在實際運用中,如果目標值x很大,比如10000,那e的10000次方,很可能超出編程語言的表示範圍,所以通常做softmax前,要對數據做一下預處理(比如:對於分類預測,最簡單的辦法,所有訓練集整體按比例縮小)

二、信息熵

熱力學中的熱熵是表示分子狀態混亂程度的物理量,而且還有一個所謂『熵增原理』,即:宇宙中的熵總是增加的,換句話說,分子狀態總是從有序變成無序,熱量總是從高溫部分向低溫部分傳遞。 香農借用了這個概念,用信息熵來描述信源的不確定度。

簡單點說,一個信息源越不確定,裏面蘊含的信息量越大。舉個例子:吳京《戰狼2》大獲成功後,說要續拍《戰狼3》,但是沒說誰當女主角,於是就有各種猜測,各種可能性,即:信息量很大。但是沒過多久,吳京宣佈女主角確定後,大家就不用再猜測女主角了,信息量相比就沒這麼大了。

這個例子中,每種猜測的可能性其實就是概率,而信息量如何衡量,可以用下面的公式來量化計算,算出來的值即信息熵:

這裏p爲概率,最後算出來的結果通常以bit爲單位。

舉例:拿計算機領域最常現的編碼問題來說,如果有A、B、C、D這四個字符組成的內容,每個字符出現的概率都是1/4,即概率分佈爲{1/4,1/4,1/4,1/4},設計一個最短的編碼方案來表示一組數據,套用剛纔的公式:

即:2個bit,其實不用算也能想明白,如果第1位0表示A,1表示B;第2位0表示C,1表示D,2位編碼搞定。

如果概率變了,比如A、B、C、D出現的概率是{1,1,1/2,1/2},即:每次A、B必然出現,C、D出現機會各佔一半,這樣只要1位就可以了。1表示C,0表示D,因爲AB必然出現,不用表示都知道肯定要附加上AB,套用公式算出來的結果也是如此。

三、交叉熵

這是公式定義,x、y都是表示概率分佈(注:也有很多文章喜歡用p、q來表示),這個東西能幹嘛呢?

假設x是正確的概率分佈,而y是我們預測出來的概率分佈,這個公式算出來的結果,表示y與正確答案x之間的錯誤程度(即:y錯得有多離譜),結果值越小,表示y越準確,與x越接近。

比如:

x的概率分佈爲:{1/4 ,1/4,1/4,1/4},現在我們通過機器學習,預測出來二組值:

y1的概率分佈爲 {1/4 , 1/2 , 1/8 , 1/8}

y2的概率分佈爲 {1/4 , 1/4 , 1/8 , 3/8}

從直覺上看,y2分佈中,前2項都100%預測對了,而y1只有第1項100%對,所以y2感覺更準確,看看公式算下來,是不是符合直覺:

對比結果,H(x,y1)算出來的值爲9/4,而H(x,y2)的值略小於9/4,根據剛纔的解釋,交叉熵越小,表示這二個分佈越接近,所以機器學習中,經常拿交叉熵來做爲損失函數(loss function)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章