1. 程式人生 > >交叉熵與softmax函式

交叉熵與softmax函式

交叉熵與softmax函式

在神經網路中,在對超引數進行優化過程當中,需要有一個優化的目標值,也就是真實值與預測值之間的差距要儘量小,差距越小說明預測越精確。這個差距往往用loss表示

在分類問題當中,我們用交叉熵來表示這個loss值。

1. 熵的概念

熵是物理學中的一個名詞,表示體系混亂的程度,越混亂熵越大。在神經網路中,交叉熵越大說明預測的越不準確,越混亂。

2. 交叉熵的計算公式

H y

( y ) = i
= 0
n
y i l
o g ( y i )
H_{y'}(y) = -\sum_{i=0}^n{y'_ilog(y_i)}

其中 y i y'_i 就是真實值, y i y_i 為預測的結果概率

3. 二分類問題

假設真實結果:

  • A’ 發生的概率為0
  • B’ 的概率為1

方法一:預測的結果為:

  • A發生的概率為0.4
  • B發生的概率為0.6

則他們的交叉熵就為:

( 0 l o g 0.4 ) 1 l o g 0.6 = 0.222 -(0*log0.4) - 1*log0.6 = 0.222

方法二:預測的結果為:

  • A發生的概率為0.1
  • B發生的概率為0.9

則他們的交叉熵就為:

( 0 l o g 0.1 ) 1 l o g 0.9 = 0.046 -(0*log0.1) - 1*log0.9 = 0.046

經過計算,方案二的交叉熵比方案一的小,這也和我們預期的一樣,方案二的預測結果的確更加精確

4. 多分類問題

在多分類問題當中,我們假設5分類,真實結果為:

  • A’ 發生的概率為 0
  • B’ 發生的概率為 0
  • C’ 發生的概率為 0
  • D’ 發生的概率為 0
  • E’ 發生的概率為 1

在計算交叉熵前,我們要確保預測的所有結果滿足概率和為1,但是往往,我們通過神經網路計算出來的結果並不滿足這樣的條件。這時候就需要softmax函式幫忙了。

4.1. softmax函式

  • softmax能夠計算出每個值在所有值中的大小比重,得出該事件的概率
  • 並且保證所有事件的概率和為1

4.1.1. softmax公式

S i = e i j = 0 n e j S_i=\frac{e^i}{\sum_{j=0}^n e^j}

其中,i為第i個事件對應的神經網路計算出的值, S i S_i 就是第i個事件在所有事件中的概率了

4.1.2. 簡單應用

在多分類問題當中,我們假設5分類,計算出的結果為:

  • A 預測的概率為 1
  • B 預測的概率為 4
  • C 預測的概率為 0.6
  • D 預測的概率為 0.1
  • E 預測的概率為 9

很顯然這5個事件的概率和並不為1,不能直接使用交叉熵進行計算,先通過softmax函式進行適當的縮放,使得他們的概率和為1

j = 0 n e j = e 1 + e 4 + e 0.6 + e 0.1 + e 9 = 8163.33 S A = e 1 8163.33 = 0.0003 S B = e 4 8163.33 = 0.0067 S C = e 0.6 8163.33 = 0.0002 S D = e 0.1 8163.33 = 0.0001 S E = e 9 8163.33 = 0.9923 S A + S B + S C + S D + S E = 1 , s o f t m a x \sum_{j=0}^n e^j = e^1 + e^4 + e^{0.6} + e^{0.1} + e^9 = 8163.33\\ S_A = \frac{e^1}{8163.33}=0.0003\\ S_B = \frac{e^4}{8163.33}=0.0067\\ S_C = \frac{e^{0.6}}{8163.33}=0.0002\\ S_D = \frac{e^{0.1}}{8163.33}=0.0001\\ S_E = \frac{e^9}{8163.33}=0.9923\\ 顯然S_A+S_B+S_C+S_D+S_E=1,softmax函式成功實現功能

4.2. 求交叉熵

有了softmax函式的轉換,多分類問題求交叉熵就容易了,和二分類別無二致。

( 0 l o g 0.0003 ) 0 l o g 0.0067 0 l o g 0.0002 0 l o g 0.0001 1 l o g 0.9923 = 0.0034 -(0*log0.0003) - 0*log0.0067 - 0*log0.0002 - 0*log0.0001 - 1 * log0.9923= 0.0034

這個計算結果已經很小了,說明系統預測的這個結果還是很精確的。並且系統預測E的概率0.9923,實際E的概率為1,也的確很精確了。