天天看點

歸一化(softmax)、資訊熵、交叉熵

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

一、歸一化

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

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

歸一化(softmax)、資訊熵、交叉熵

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

歸一化(softmax)、資訊熵、交叉熵

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

二、資訊熵

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

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

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

歸一化(softmax)、資訊熵、交叉熵

這裡p為機率,最後算出來的結果通常以bit為機關。

舉例:拿計算機領域最常現的編碼問題來說,如果有A、B、C、D這四個字元組成的内容,每個字元出現的機率都是1/4,即機率分布為{1/4,1/4,1/4,1/4},設計一個最短的編碼方案來表示一組資料,套用剛才的公式:

歸一化(softmax)、資訊熵、交叉熵

即: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,套用公式算出來的結果也是如此。

歸一化(softmax)、資訊熵、交叉熵

三、交叉熵 

歸一化(softmax)、資訊熵、交叉熵

這是公式定義,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感覺更準确,看看公式算下來,是不是符合直覺:

歸一化(softmax)、資訊熵、交叉熵
歸一化(softmax)、資訊熵、交叉熵

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

參考文章:

https://www.zhihu.com/question/23765351

https://www.zhihu.com/question/41252833/answer/108777563

https://www.zhihu.com/question/22178202

繼續閱讀