交叉熵損失函數總結: 定義、應用及求導
先說熵(entropie),熵最早出現在熱力學中,用於度量一個熱力學系統的無序程度。後來熵被引入到信息論裏面,表示對不確定性的測量。
爲了弄清楚交叉熵,首先需要弄清楚交叉熵相關的幾個概念。
1.1 信息量
信息量用於刻畫消除隨機變量X在x處的不確定性所需的信息量的大小。也就是說不確定性越高,信息量越大。信息量的數學表達式如下,其中 p p p 爲隨機變量 X X X 的概率分佈,即 p ( x ) p(x) p ( x ) 爲隨機變量 X X X 在 X = x X=x X = x 處的概率密度函數值。
I ( x ) = − log p ( x ) = log 1 p ( x ) I(x) = -\log{p(x)} = \log{\frac{1}{p(x)}} I ( x ) = − log p ( x ) = log p ( x ) 1
1.2 信息熵
信息熵也叫熵。上面的信息量定義了隨機變量 X X X 在一個點處的香農信息量,那麼如何衡量隨機變量 X X X (或整個樣本空間)的總體香農信息量呢?下面就要引出隨機變量 X X X 的信息熵的概念,或概率分佈 p p p 的信息熵。信息熵 H ( p ) H(p) H ( p ) 是香農信息量 I ( x ) I(x) I ( x ) 的數學期望,即所有 X = x X=x X = x 處的香農信息量的和,由於每一個 x x x 出現的概率不一樣(用概率密度函數值 p ( x ) p(x) p ( x ) 衡量),需要用 p ( x ) p(x) p ( x ) 加權求和。因此信息熵是用於刻畫消除隨機變量 X X X 的不確定性所需要的總體信息量的大小。其數學定義如下:
H ( p ) = H ( X ) = E x p [ I ( x ) ] = − ∑ i = 1 N p ( x i ) log p ( x i ) H(p) = H(X) = E_{x~p}[I(x)] = -\sum_{i=1}^{N}p(x_i)\log{p(x_i)} H ( p ) = H ( X ) = E x p [ I ( x ) ] = − i = 1 ∑ N p ( x i ) log p ( x i )
1.3 相對熵
相對熵,又稱KL散度(Kullback-Leibler divergence),是兩個概率分佈 p 和 q 之間的差異的非對稱性的度量。在信息論中,相對熵等價於兩個概率分佈的信息熵的差值。
D K L ( p , q ) = E x p [ log p ( x ) q ( x ) ] = E x p [ log p ( x ) − log q ( x ) ] = ∑ i = 1 N p ( x i ) [ log p ( x ) − log q ( x ) ]
\begin{aligned}
D_{KL}(p,q) &= E_{x~p}[\log{\frac{p(x)}{q(x)}}] \\
&= E_{x~p}[\log{p(x) - \log{q(x)}}] \\
&= \sum_{i=1}^{N}p(x_i)[\log{p(x) - \log{q(x)}}]
\end{aligned}
D K L ( p , q ) = E x p [ log q ( x ) p ( x ) ] = E x p [ log p ( x ) − log q ( x ) ] = i = 1 ∑ N p ( x i ) [ log p ( x ) − log q ( x ) ]
1.4 交叉熵
交叉熵是 Shannon 信息論中的一個重要概念,主要用於度量兩個概率分佈間的差異性信息。在信息論中,交叉熵表示兩個概率分佈 p, q,其中 p 表示真實分佈,q 表示擬合分佈,在同一組事件中,其中用擬合分佈 q 來表示某個事件發生所需要的平均比特數。
更進一步,假設 q ( x ) q(x) q ( x ) 是用來擬合 p ( x ) p(x) p ( x ) 的概率分佈,x x x 屬於 p p p 的樣本空間,交叉熵用於衡量 q q q 在擬合 p p p 的過程中,用於消除不確定性而充分使用的信息量大小(理解爲衡量 q q q 爲了擬合p p p 所付出的努力,另外注意交叉熵定義裏的“充分使用”和信息熵定義裏的“所需”的區別,“充分使用”不一定能達到全部,“所需”是指全部)。
由於在每一個點 X = x X=x X = x 處 q q q 的香農信息量爲 − log q ( x ) -\log{q(x)} − log q ( x ) ,也就是在點 X = x X=x X = x 處,q q q 消除不確定性而充分使用的信息量爲 − log q ( x ) -\log{q(x)} − log q ( x ) (理解爲衡量 q q q 在 $ X=x$ 處爲了擬合 p p p 所作的努力),那麼就可以計算出在整個樣本空間上 q q q 消除不確定性而充分使用的總體信息量,即 − log q ( x ) -\log{q(x)} − log q ( x ) 的數學期望,由於每個 x x x 的權重爲 p ( x ) p(x) p ( x ) ,因此交叉熵 H ( p , q ) H(p,q) H ( p , q ) 爲:
H ( p , q ) = E x p [ I ( x ) ] = − ∑ i = 1 N p ( x i ) log q ( x i ) H(p,q) = E_{x~p}[I(x)] = -\sum_{i=1}^{N}p(x_i)\log{q(x_i)} H ( p , q ) = E x p [ I ( x ) ] = − i = 1 ∑ N p ( x i ) log q ( x i )
2 交叉熵損失函數
由於交叉熵可以度量兩個概率分佈間的的差異性信息,常被應用於分類任務中,度量標籤分佈與預測分佈的差異。
需要注意的是交叉熵的輸入應該是概率分佈,所以需要在交叉熵損失函數前加入 sigmoid 或者 softmax 函數將網絡的輸出轉化爲概率分佈(即0 到 1 之間)。
下面我們以神經網絡最後一層輸出爲例,看一下交叉熵的具體應用場景:
(1)在神經網絡的最後一層(輸入爲 x i x_i x i ,權重爲 w i w_i w i ) 裏,我們首先得到了每個類別的得分 scores (S i S_i S i );
(2)這個得分經過 sigmoid(或 softmax) 函數的變換會獲得一個概率輸出 (P i P_i P i );
(3)將得到的概率輸出與真實類別 (y i y_i y i ) 的 one hot 形式進行交叉熵損失函數的計算。
2.1 二分類任務下的交叉熵損失函數
二分類任務下的交叉熵損失函數可以表達如下:
L o s s = − ∑ i = 1 2 y i log P i = − [ y l o g P + ( 1 − y ) l o g ( 1 − P ) ] (2.1.1)
\begin{aligned}
Loss&=-\sum_{i=1}^{2}y_i\log{P_i} \tag{2.1.1}\\
&=-[ylogP + (1-y)log(1-P)]
\end{aligned}
L o s s = − i = 1 ∑ 2 y i log P i = − [ y l o g P + ( 1 − y ) l o g ( 1 − P ) ] ( 2 . 1 . 1 )
2.2 多分類任務下的交叉熵損失函數
L o s s = − ∑ i = 1 C y i log P i (2.2.1)
\begin{aligned}
Loss&=-\sum_{i=1}^{C}y_i\log{P_i} \tag{2.2.1}\\
\end{aligned}
L o s s = − i = 1 ∑ C y i log P i ( 2 . 2 . 1 )
從上面的損失函數可以看出,L o s s Loss L o s s 的取值總爲正,而且當 P i P_i P i 趨近 y i y_i y i 時 L o s s Loss L o s s 趨近於 0。
3 交叉熵損失函數求導
下面透過交叉熵損失函數的求導結果來看看交叉熵在反向傳播過程中的表現。
3.1 二分類交叉熵損失函數求導
對於二分類問題一般採用 sigmoid 函數將 score 映射爲概率。 sigmoid 函數的表達式如下:
σ ( x ) = 1 1 + e − x (3.1.1)
\sigma(x) = \frac{1}{1 + e^{-x}}\tag{3.1.1}
σ ( x ) = 1 + e − x 1 ( 3 . 1 . 1 )
對交叉熵損失函數進行求導如下:
∂ L ∂ w i = ∂ L ∂ P ∂ P ∂ S ∂ S ∂ w i (3.1.2)
\begin{aligned}
\frac{\partial{L}}{\partial{w_i}} = \frac{\partial{L}}{\partial{P}}\frac{\partial{P}}{\partial{S}}\frac{\partial{S}}{\partial{w_i}} \tag{3.1.2}\\
\end{aligned}
∂ w i ∂ L = ∂ P ∂ L ∂ S ∂ P ∂ w i ∂ S ( 3 . 1 . 2 )
其中
∂ L ∂ P = − y P + 1 − y 1 − P ∂ P ∂ S = σ ( S ) ( 1 − σ ( S ) ) ∂ S ∂ w i = x i (3.1.3)
\begin{aligned}
\frac{\partial{L}}{\partial{P}} &= -\frac{y}{P} + \frac{1-y}{1-P}\tag{3.1.3} \\
\frac{\partial{P}}{\partial{S}} &= \sigma(S)(1-\sigma(S)) \\
\frac{\partial{S}}{\partial{w_i}} &= x_i \\
\end{aligned}
∂ P ∂ L ∂ S ∂ P ∂ w i ∂ S = − P y + 1 − P 1 − y = σ ( S ) ( 1 − σ ( S ) ) = x i ( 3 . 1 . 3 )
將式 3.1.3 帶入 式3.1.2 可得
∂ L ∂ w i = [ − y P + 1 − y 1 − P ] ∗ σ ( S ) ∗ ( 1 − σ ( S ) ) ∗ x i = [ − y σ ( S ) + 1 − y 1 − σ ( S ) ] ∗ σ ( S ) ∗ ( 1 − σ ( S ) ) ∗ x i = [ − y ∗ ( 1 − σ ( S ) ) + ( 1 − y ) ∗ σ ( S ) ] ∗ x i = ( σ ( S ) − y ) ∗ x i
\begin{aligned}
\frac{\partial{L}}{\partial{w_i}} &= [-\frac{y}{P} + \frac{1-y}{1-P}]*\sigma(S)*(1-\sigma(S))*x_i\\
&= [-\frac{y}{\sigma(S)} + \frac{1-y}{1-\sigma(S)}]*\sigma(S)*(1-\sigma(S))*x_i\\
&= [-y*(1-\sigma(S)) + (1-y)*\sigma(S)]*x_i \\
&=(\sigma(S)-y)*x_i \\
\end{aligned}
∂ w i ∂ L = [ − P y + 1 − P 1 − y ] ∗ σ ( S ) ∗ ( 1 − σ ( S ) ) ∗ x i = [ − σ ( S ) y + 1 − σ ( S ) 1 − y ] ∗ σ ( S ) ∗ ( 1 − σ ( S ) ) ∗ x i = [ − y ∗ ( 1 − σ ( S ) ) + ( 1 − y ) ∗ σ ( S ) ] ∗ x i = ( σ ( S ) − y ) ∗ x i
從上面可以看出,交叉熵權重學習的速率受到 ( σ ( S ) − y ) (\sigma(S)-y) ( σ ( S ) − y ) 的影響,在誤差較大時有更大的學習速度,誤差較小時有較小的學習速度,這個性質很關鍵,這也是交叉熵和 MSE 相比的一個優點。
3.2 多分類交叉熵損失函數求導
對於多分類問題一般採用 softmax 函數將 score 映射爲概率。 softmax 函數的表達式如下:
y i = e x i ∑ k = 1 C e x k (3.2.1)
y_i = \frac{e^{x_i}}{\sum _{k = 1}^{C}e^{x_k}}\tag{3.2.1}
y i = ∑ k = 1 C e x k e x i ( 3 . 2 . 1 )
其中 C 爲預測的 class 數量, k 的取值爲 1 到 C。
具體到這裏就是
P i = e S i ∑ k = 1 C e S k (3.2.2)
P_i = \frac{e^{S_i}}{\sum _{k = 1}^{C}e^{S_k}}\tag{3.2.2}
P i = ∑ k = 1 C e S k e S i ( 3 . 2 . 2 )
對損失函數的求導和上面的類似:
∂ L ∂ w i = ∂ L ∂ P m ∂ P m ∂ S n ∂ S n ∂ w i (3.2.3)
\begin{aligned}
\frac{\partial{L}}{\partial{w_i}} = \frac{\partial{L}}{\partial{P_m}}\frac{\partial{P_m}}{\partial{S_n}}\frac{\partial{S_n}}{\partial{w_i}} \tag{3.2.3}\\
\end{aligned}
∂ w i ∂ L = ∂ P m ∂ L ∂ S n ∂ P m ∂ w i ∂ S n ( 3 . 2 . 3 )
根據式 2.2.1,對 softmax 進行求導。
∂ L ∂ S i = − ∑ i = 1 C y i P i ∂ P i ∂ S j (3.2.4)
\begin{aligned}
\frac{\partial{L}}{\partial{S_i}} &= -\sum_{i = 1}^{C} \frac{y_i}{P_i}\frac{\partial P_i}{\partial S_j}\tag{3.2.4} \\
\end{aligned}
∂ S i ∂ L = − i = 1 ∑ C P i y i ∂ S j ∂ P i ( 3 . 2 . 4 )
下面就是對 softmax 進行求導了。
$$
\begin{aligned}
\frac{\partial{P_i}}{\partial{S_j}} &= \frac{\partial{\frac{e^{S_i}}{\sum _{k = 1}{C}e {S_k}}}}{\partial{S_j}}\tag{3.2.5} \
&= \frac{(e^{S_i})’\sum _{k = 1}{C}e {S_k} - e^{S_i}(\sum _{k = 1}{C}e {S_k})’}{(\sum _{k = 1}{C}e {S_k})^2} \
\end{aligned}
$$
式 3.2.5 中如果 i = j i = j i = j 則
∂ P i ∂ S j = e S i ∑ k = 1 C e S k − e S i e S j ( ∑ k = 1 C e S k ) 2 = e S i ∑ k = 1 C e S k − e S i ∑ k = 1 C e S k e S j ∑ k = 1 C e S k = P i − P i P j = P i ( 1 − P j ) (3.2.6)
\begin{aligned}
\frac{\partial{P_i}}{\partial{S_j}} &= \frac{e^{S_i}\sum _{k = 1}^{C}e^{S_k} - e^{S_i}e^{S_j}}{(\sum _{k = 1}^{C}e^{S_k})^2} \tag{3.2.6}\\
&= \frac{e^{S_i}}{\sum _{k = 1}^{C}e^{S_k}} - \frac{e^{S_i}}{\sum _{k = 1}^{C}e^{S_k}} \frac{e^{S_j}}{\sum _{k = 1}^{C}e^{S_k}} \\
&= P_i-{P_i}{P_j} \\
&= P_i(1-P_j)
\end{aligned}
∂ S j ∂ P i = ( ∑ k = 1 C e S k ) 2 e S i ∑ k = 1 C e S k − e S i e S j = ∑ k = 1 C e S k e S i − ∑ k = 1 C e S k e S i ∑ k = 1 C e S k e S j = P i − P i P j = P i ( 1 − P j ) ( 3 . 2 . 6 )
式 3.2.5 中如果 i ≠ j i \neq j i = j 則
∂ e S i ∂ S j = 0 (3.2.7)
\frac{\partial{e^{S_i}}}{\partial{S_j}} = 0 \tag{3.2.7}
∂ S j ∂ e S i = 0 ( 3 . 2 . 7 )
因此
∂ P i ∂ S j = e S i ∑ k = 1 C e S k − e S i e S j ( ∑ k = 1 C e S k ) 2 = − P i P j (3.2.8)
\begin{aligned}
\frac{\partial{P_i}}{\partial{S_j}} &= \frac{e^{S_i}\sum _{k = 1}^{C}e^{S_k} - e^{S_i}e^{S_j}}{(\sum _{k = 1}^{C}e^{S_k})^2} \tag{3.2.8}\\
&= -P_i{P_j}\\
\end{aligned}
∂ S j ∂ P i = ( ∑ k = 1 C e S k ) 2 e S i ∑ k = 1 C e S k − e S i e S j = − P i P j ( 3 . 2 . 8 )
結合式 3.2.6 和 3.2.8 , 式 3.2.4 可得
∂ L ∂ S j = − ∑ i = 1 C y i P i ∂ P i ∂ S j = − ∑ i = 1 C y i P i ∂ P i ∂ S j = − [ ∑ i = j y i P i ∂ P i ∂ S j ] − [ ∑ i ≠ j C y i P i ∂ P i ∂ S j ] = − [ y i P i P i ( 1 − P j ) ] i = j + [ ∑ i ≠ j C y i P i P i P j ] = − [ y i ( 1 − P j ) ] i = j + [ ∑ i ≠ j C y i P j ] = − y j + y i P j + [ ∑ i ≠ j C y i P j ] = − y j + [ ∑ i = 0 C y i P j ] = − y j + P j [ ∑ i = 0 C y i ] = − y j + P j ∗ 1 = P j − y j (3.2.9)
\begin{aligned}
\frac{\partial{L}}{\partial{S_j}} &= -\sum_{i = 1}^{C} \frac{y_i}{P_i} \frac{\partial P_i}{\partial S_j} \tag{3.2.9} \\
&= -\sum_{i = 1}^{C} \frac{y_i}{P_i}\frac{\partial P_i}{\partial S_j} \\
&= -[\sum_{i = j} \frac{y_i}{P_i}\frac{\partial P_i}{\partial S_j}] - [\sum_{i \neq j}^{C} \frac{y_i}{P_i}\frac{\partial P_i}{\partial S_j}] \\
&= -[\frac{y_i}{P_i} P_i(1-P_j)]_{i=j} + [\sum_{i \neq j}^{C} \frac{y_i}{P_i}P_i{P_j}] \\
&= -[{y_i}(1-P_j)]_{i=j} + [\sum_{i \neq j}^{C} {y_i}{P_j}] \\
&= -y_j + y_i{P_j} + [\sum_{i \neq j}^{C} {y_i}{P_j}] \\
&= -y_j + [\sum_{i = 0}^{C} {y_i}{P_j}] \\
&= -y_j + P_j[\sum_{i = 0}^{C} {y_i}] \\
&= -y_j + P_j * 1 \\
&= P_j - y_j
\end{aligned}
∂ S j ∂ L = − i = 1 ∑ C P i y i ∂ S j ∂ P i = − i = 1 ∑ C P i y i ∂ S j ∂ P i = − [ i = j ∑ P i y i ∂ S j ∂ P i ] − [ i = j ∑ C P i y i ∂ S j ∂ P i ] = − [ P i y i P i ( 1 − P j ) ] i = j + [ i = j ∑ C P i y i P i P j ] = − [ y i ( 1 − P j ) ] i = j + [ i = j ∑ C y i P j ] = − y j + y i P j + [ i = j ∑ C y i P j ] = − y j + [ i = 0 ∑ C y i P j ] = − y j + P j [ i = 0 ∑ C y i ] = − y j + P j ∗ 1 = P j − y j ( 3 . 2 . 9 )
另外
∂ S j ∂ w i = x i (3.2.10)
\frac{\partial{S_j}}{\partial{w_i}} = x_i \tag{3.2.10}
∂ w i ∂ S j = x i ( 3 . 2 . 1 0 )
綜合式 3.2.3, 3.2.9 和 3.2.10 可得
∂ L ∂ w i = ( P j − y j ) x i (3.2.11)
\begin{aligned}
\frac{\partial{L}}{\partial{w_i}} = (P_j - y_j)x_i \tag{3.2.11}\\
\end{aligned}
∂ w i ∂ L = ( P j − y j ) x i ( 3 . 2 . 1 1 )