天天看點

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

文章目錄

  • 一.交叉熵函數的由來(推導)
    • 1.1普通推導交叉熵 :
    • 1.2極大似然推導交叉熵:
  • 二.交叉熵函數直覺了解
  • 三.交叉熵的兩種不同形式
    • 3.1 Sigmoid + Cross-entropy
    • 3.2 SoftMax + Cross-entropy
  • 四.交叉熵函數求導
    • 4.1 Sigmoid + Cross-entropy
    • 4.2 SoftMax + Cross-entropy
  • 六.優缺點
  • 七.為什麼邏輯回歸不用MSE而用交叉熵

一.交叉熵函數的由來(推導)

1.1普通推導交叉熵 :

我們一共有m組已知樣本, ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))表示第i組資料及其對應的類别标記,

其中 x ( i ) = ( 1 , x 1 i , x 2 i , x 3 i … x p i ) x^{(i)} = (1, x^{i}_1,x^{i}_2,x^{i}_3…x^{i}_p) x(i)=(1,x1i​,x2i​,x3i​…xpi​), y ( i ) y^{(i)} y(i)則為表示類别的一個數:

  1. logistic回歸(二分類問題)中, y ( i ) y(i) y(i)取0或者1;
  2. softmax回歸 (多分類問題)中, y ( i ) y(i) y(i)取1,2…k中的一個表示類别标号的一個數(假設共有k類)
    交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
    交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
    以上來自交叉熵代價函數(損失函數)及其求導推導 (Logistic Regression)

1.2極大似然推導交叉熵:

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

二.交叉熵函數直覺了解

單個樣本的交叉熵損失函數(注意這裡是用單個樣本做例子,是以公式裡沒有 Σ \Sigma Σ):

L o s s = − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] Loss = - [ylogŷ + (1-y)log(1-ŷ)] Loss=−[ylogy^​+(1−y)log(1−y^​)]

其中 y ^ ŷ y^​表示真實值,y表示預測值

  • 當 y = 1 y=1 y=1時: L o s s = − l o g y ^ Loss = -logŷ Loss=−logy^​

    這時候,Loss與預測輸出的關系如下圖所示:

    交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
    橫坐标是預測輸出,縱坐标是交叉熵損失函數 L。顯然,預測輸出越接近真實樣本标簽 1,損失函數 L 越小;預測輸出越接近 0,L 越大。是以,函數的變化趨勢完全符合實際需要的情況。
  • 當 y = 0 y = 0 y=0 時: L o s s = − l o g ( 1 − y ^ ) Loss = -log(1- ŷ) Loss=−log(1−y^​)

    這時候,Loss 與預測輸出的關系如下圖所示:

    交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

同樣,預測輸出越接近真實樣本标簽 0,損失函數 L 越小;預測函數越接近 1,L 越大。函數的變化趨勢也完全符合實際需要的情況。

從上面兩種圖,可以幫助我們對交叉熵損失函數有更直覺的了解。無論真實樣本标簽 y 是 0 還是 1,L 都表征了預測輸出與 y 的差距。

從損失函數中我們可以知道交叉熵是用來描述兩個分布的距離的,而神經網絡訓練的目的就是使 預測值ŷ 逼近 真實值y。

三.交叉熵的兩種不同形式

  • − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] - [ylogŷ + (1-y)log(1-ŷ)] −[ylogy^​+(1−y)log(1−y^​)]
  • − y l o g y ^ -ylog ŷ −ylogy^​

這兩個都是交叉熵損失函數,但是看起來長的卻有天壤之别。這是因為這兩個交叉熵損失函數對應不同的最後一層的輸出:第一個對應的最後一層是sigmoid,第二個對應的最後一層是softMax。 下面會具體解釋Sigmoid + Cross-entropy 和 SoftMax + Cross-entropy。

3.1 Sigmoid + Cross-entropy

用sigmoid函數作為神經元的激活函數時,最好使用交叉熵代價函數而不用均方誤差損失函數,以避免訓練過程太慢

為什麼呢?

如果使用均方誤差損失函數時:

C = ( y − a ) 2 2 C = \frac{(y-a)^2}{2} C=2(y−a)2​

其中, y y y為真實值, a a a為預測值, a = σ ( z ) a = \sigma(z) a=σ(z) , z = w x + b z = wx +b z=wx+b ,是以 a = σ ( w x + b ) a = \sigma(wx + b) a=σ(wx+b)

用鍊式法則來求權重和偏置的偏導數得:

∂ C ∂ w = ( a − y ) σ ′ ( z ) x = a σ ′ ( z ) \frac{\partial C}{\partial w} = (a - y) \sigma'(z)x = a\sigma'(z) ∂w∂C​=(a−y)σ′(z)x=aσ′(z)

∂ C ∂ b = ( a − y ) σ ′ ( z ) = a σ ′ ( z ) \frac{\partial C}{\partial b} = (a - y) \sigma'(z) = a\sigma'(z) ∂b∂C​=(a−y)σ′(z)=aσ′(z)

而梯度下降更新規則為:

w = w − η ∂ C ∂ w w = w - \eta\frac{\partial C}{\partial w} w=w−η∂w∂C​

b = b − η ∂ C ∂ b b = b - \eta\frac{\partial C}{\partial b} b=b−η∂b∂C​

由 sigmoid 函數的圖像我們可以知道,當 z 很小 ( 遠小于0 ) 或者 z 很大 ( 遠大于0 ) 時,σ′(z) 趨于 0,是以代價函數對于 w 和 b 的偏導數就會很小。也可以從下圖的sigmoid求導後的圖像可以看出,最大值隻有0.25,是以 w 和 b 就會産生的變化很小,故,學習緩慢。

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

而使用交叉熵作代價函數時:

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

其用鍊式法則來求權重和偏置的偏導數就有:

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

σ′(z) 在鍊式求導時被約去了,是以不會出現學習緩慢的問題 (除非在最後結果收斂的時候) 。它告訴我們權重學習的速度受到 σ(z) − y,也就是輸出中的誤差的控制。更大的誤差,會有更快的學習速度。這是我們期待的結果,比如現實生活中,如果你犯了很大的錯誤,肯定會知道應該更要往正确的方向學習,是以學習速度大大提升。

3.2 SoftMax + Cross-entropy

多分類是指分類任務中有多個類别, 比如對一堆水果圖檔分類, 它們可能是橘子、蘋果、梨. 多類分類是假設每個樣本都被設定了一個且僅有一個标簽: 一個水果可以是蘋果或者梨, 但是同時不可能是兩者。

是以用真實值y用one-hot表示方法表示出來: [ 0 , 0 , 1 ] [0,0,1] [0,0,1]1表示圖檔屬于這個類别,0則表示圖檔不屬于這個類别。

那為什麼在多分類問題中通常使用SoftMax + Cross-entropy的組合方式呢?因為softmax 函數,它可以将一個N維的實數向量壓縮成一個滿足特定條件的N維實數向。壓縮後的向量滿足兩個條件:

  1. 向量中的每個元素的大小都在[0,1]
  2. 向量所有元素的和為 1

比如預測一張圖檔屬于橘子、蘋果、梨等的機率,經過softMax函數之後y值變為 [ 0.1 , 0.5 , 0.4 ] [0.1,0.5,0.4] [0.1,0.5,0.4]

可以看到y值都在區間[0,1],且之和為1.

經過softMax函數之後的輸出的預測值機率矩陣與經過one-hot編碼後的真實值矩陣相對應:

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

具體步驟如下圖所示:

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

在這裡softMax更像是一個激活函數而不是損失函數

四.交叉熵函數求導

4.1 Sigmoid + Cross-entropy

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

4.2 SoftMax + Cross-entropy

求導

舉個例子,通過若幹層的計算,最後得到的某個訓練樣本的向量的分數是 [ z 4 , z 5 , z 6 ] = [ 2 , 3 , 4 ] [z4,z5,z6] = [ 2, 3, 4 ] [z4,z5,z6]=[2,3,4]那麼經過softmax函數作用後機率分别就是: [ e 2 ( e 2 + e 3 + e 4 ) , e 3 ( e 2 + e 3 + e 4 ) , e 4 ( e 2 + e 3 + e 4 ) ] = [ 0.0903 , 0.2447 , 0.665 ] [\frac{e^2}{(e^2+e^3+e^4)},\frac{e^3}{(e^2+e^3+e^4)},\frac{e^4}{(e^2+e^3+e^4)}] = [0.0903,0.2447,0.665] [(e2+e3+e4)e2​,(e2+e3+e4)e3​,(e2+e3+e4)e4​]=[0.0903,0.2447,0.665]如果這個樣本正确的分類是第二個的話,那麼計算出來的偏導就是 [ 0.0903 , 0.2447 − 1 , 0.665 ] = [ 0.0903 , − 0.7553 , 0.665 ] [0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665] [0.0903,0.2447−1,0.665]=[0.0903,−0.7553,0.665]

正确分類數值-1 , 不正确分類數值不變

六.優缺點

  • 優點

    在用梯度下降法做參數更新的時候,模型學習的速度取決于兩個值:一、學習率;二、偏導值。其中,學習率是我們需要設定的超參數,是以我們重點關注偏導值。從上面的式子中,我們發現,偏導值的大小取決于 [公式] 和 [公式] ,我們重點關注後者,後者的大小值反映了我們模型的錯誤程度,該值越大,說明模型效果越差,但是該值越大同時也會使得偏導值越大,進而模型學習速度更快。是以,使用邏輯函數得到機率,并結合交叉熵當損失函數時,在模型效果差的時候學習速度比較快,在模型效果好的時候學習速度變慢。

  • 缺點

    sigmoid(softmax)+cross-entropy loss 擅長于學習類間的資訊,因為它采用了類間競争機制,它隻關心對于正确标簽預測機率的準确性,忽略了其他非正确标簽的差異,導緻學習到的特征比較散。基于這個問題的優化有很多,比如對softmax進行改進,如L-Softmax、SM-Softmax、AM-Softmax等。

七.為什麼邏輯回歸不用MSE而用交叉熵

因為 當我們在學習邏輯回歸參數的時候,會發現我們的優化目标不是凸優化,隻能找到多個局部 最優值,梯度下降法很可能找不到全局最優值,雖然平方差是一個不錯的損失函數,但是我 們在邏輯回歸模型中會使用交叉熵損失函數。

交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵
交叉熵損失函數整理一.交叉熵函數的由來(推導)二.交叉熵函數直覺了解三.交叉熵的兩種不同形式四.交叉熵函數求導六.優缺點七.為什麼邏輯回歸不用MSE而用交叉熵

繼續閱讀