softmax+交叉熵


1 softmax函數

softmax函數的定義為

$$softmax(x)=\frac{e^{x_i}}{\sum_j e^{x_j}} \tag{1}$$

softmax函數的特點有

  • 函數值在[0-1]的范圍之內
  • 所有$softmax(x_i)$相加的總和為1

面對一個分類問題,能將輸出的$y_i$轉換成[0-1]的概率,選擇最大概率的$y_i$作為分類結果[1]

這里需要提及一個有些類似的sigmoid函數,其定義為

$$sigmoid(x)=\frac{1}{1+e^{-x_i}} \tag{2}$$

sigmoid函數將每個$y_i$都映射到[0-1]之間,但每個$y_i$之間是相互獨立的,$\sum y_i$與1沒有關系,可以用作二分類;而softmax函數的本質是將一個k維數據$[a_1,a_2,a_3,...,a_k]$映射成另外一個K為向量$[b_1,b_2,b_3,...,b_k]$,每個值之間是相互存在關系的[2],$\sum a_i=\sum b_i=1$,可以用於多分類問題,選取權重最大的一維。

下面介紹幾個例子,區分softmax和sigmoid的使用場景[1]

如果你在開發一個音樂分類的應用,需要對k種類型的音樂進行識別,那么是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立 k 個獨立的二元分類器呢?
這一選擇取決於你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那么你可以假設每個訓練樣本只會被打上一個標簽(即:一首歌只能屬於這四種音樂類型的其中一種),此時你應該使用類別數 k = 4 的softmax回歸。(如果在你的數據集中,有的歌曲不屬於以上四類的其中任何一類,那么你可以添加一個“其他類”,並將類別數 k 設為5。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間並不是互斥的。例如:一首歌曲可以來源於影視原聲,同時也包含人聲 。這種情況下,使用4個二分類的 logistic 回歸分類器更為合適。這樣,對於每個新的音樂作品 ,我們的算法可以分別判斷它是否屬於各個類別。
現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax回歸還是 3個logistic 回歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 回歸還是多個 logistic 回歸分類器呢?
在第一個例子中,三個類別是互斥的,因此更適於選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。

因此,當label之間是互斥的,我們通常使用softmax,而當label之間是相互獨立的,我們可以使用sigmoid。

 

2 交叉熵

2.1 信息熵

香農曾提出了一個重要的概念:信息熵,其定義為:

$$H(X)=\sum_j p(x)log(p(x)) \tag{3}$$

信息熵表示一個信息的混亂程度,信息熵越大,混亂程度越大。因此,在C4.5中就信息增益的最大值,其目的就是使一個信息的混亂程度最大化降低。

2.2 相對熵(KL散度)

從而引出相對熵(KL散度)的概念:如果我們對於同一個隨機變量x有兩個單獨的概率分布P(x)和Q(x),我們可以使用KL散來衡量這兩個分布的差異。

其中,P往往用來表示樣本的真實分布,比如[1,0,0]表示當前樣本屬於第一類。Q用來表示模型所預測的分布,比如[0.7,0.2,0.1]。直觀的理解就是,如果用P來描述樣本,那么就非常完美;而用Q來描述樣本,雖然可以大致描述,但是不是那么的完美,信息量不足,需要額外的一些”信息增量”才能達到和P一樣完美的描述。如果我們的Q通過反復訓練,也能完美的描述樣本,那么就不再需要額外的“信息增量”,Q等價於P[3]

相對熵的定義為:

$$D_{K||L}(p||q)=\sum_{i=1}^{n}p(x_i)ln(\frac{p(x_i)}{q(x_i)}) \tag{4}$$

其中,$D_{K||L}$的值越小,表示q分布和p分布越接近。

2.3 交叉熵

對公式4進行變形,從而得到:

\begin{align*}
{D_{KL}}(p||q) &= \sum\limits_{i = 1}^n {p({x_{_i}})\ln (p({x_i}))} - \sum\limits_{i = 1}^n {p({x_{_i}})\ln (q({x_i}))} \\
&= - H(p(x)) + [ - \sum\limits_{i = 1}^n {p({x_{_i}})\ln (q({x_i}))} ] \tag{5}
\end{align*}

等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:

\begin{align*}
H(p,q) =  - \sum\limits_{i = 1}^n {p({x_{_i}})\ln (q({x_i}))}\tag{6}
\end{align*}

在機器學習中,我們需要評估label和predicts之間的差距,使用KL散度剛剛好,即${D_{KL}}(y|\hat y)$。當${D_{KL}}(y|\hat y)$越小,說明label和predicts之間的差距越小。由於KL散度中的前一部分$H(y)$不變,故在優化過程中,只需要關注交叉熵就可以了。所以一般在機器學習中直接使用交叉熵做loss,評估模型[3]

 

3 softmax+交叉熵求導

 接下來,我們針對softmax模型,損失函數為交叉熵進行求導,了解其數學原理[4]

對公式6稍作變形,損失函數為:

\begin{align*}
L =  - \sum\limits_i {{y_i}\ln {a_i}} \tag{7}
\end{align*}

其中,$y_i$為真實分布,$a_i$而為預測分布,即softmax輸出的結果。因此,softmax的定義為:

\begin{align*}
{a_i} = \sigma ({z_i}) = \frac{{{e^{{z_i}}}}}{{\sum\limits_j {{e^{{z_j}}}} }} \tag{8}
\end{align*}

\begin{align*}
{z_i} = \sum\limits_j {{w_{ij}}{x_{ij}} + b} \tag{9}
\end{align*}

其中,$z_i$為神經元的輸出,如下圖所示。

做完上面的准備后,我們需要對Loss損失函數進行求導,即$\frac{{\partial L}}{{\partial {w_i}}}$和$\frac{{\partial L}}{{\partial {b_i}}}$。根據鏈式法則,我們可以分解成

\begin{align*}
\frac{{\partial L}}{{\partial {w_{ij}}}} = \frac{{\partial L}}{{\partial {z_i}}}\frac{{\partial {z_i}}}{{\partial {w_{ij}}}}{\rm{ = }}\frac{{\partial L}}{{\partial {z_i}}}{x_{ij}}\\
\frac{{\partial L}}{{\partial {b_i}}} = \frac{{\partial L}}{{\partial {z_i}}}\frac{{\partial {z_i}}}{{\partial {b_i}}} = \frac{{\partial L}}{{\partial {z_i}}} \tag{10}
\end{align*}

因此,重點還是$\frac{{\partial L}}{{\partial {z_i}}}$的獲取。根據鏈式法則:

\begin{align*}
\frac{{\partial L}}{{\partial {z_i}}} = \sum\limits_j {(\frac{{\partial {L_j}}}{{\partial {a_j}}}\frac{{\partial {a_j}}}{{\partial {z_i}}})} \tag{11}
\end{align*}

這里為什么是$a_j$而不是$a_i$呢?這里要看一下softmax的公式了,因為softmax公式的特性,它的分母包含了所有神經元的輸出,所以,對於不等於i的其它輸出里面,也包含着$z_i$,所有的a都要納入到計算范圍中,並且后面的計算可以看到需要分為$i=j$和i \ne j兩種情況求導。

對於公式(11)中的前一項$\frac{{\partial L_j}}{{\partial {a_j}}}$可以先行求出來,得到:

\begin{align*}
\frac{{\partial {L_j}}}{{\partial {a_j}}}{\rm{ = }}\frac{{\partial ( - {y_j}\ln {a_j})}}{{\partial {a_j}}} = - {y_j}\frac{1}{{{a_j}}} \tag{12}
\end{align*}

這里值得留意的是,$L=L_1+L_2+...+L_n$,我們這里是對$L_j$進行求導。

  • 當$i=j$時

\begin{align*}
\frac{{\partial {a_j}}}{{\partial {z_i}}} = \frac{{\partial {a_i}}}{{\partial {z_i}}} = \frac{{\partial \left( {\frac{{{e^{{z_i}}}}}{{\sum\nolimits_j {{e^{{z_j}}}} }}} \right)}}{{\partial {z_i}}} = \frac{{{e^{{z_i}}}\sum\nolimits_j {{e^{{z_j}}}} - {{\left( {{e^{{z_i}}}} \right)}^2}}}{{{{\left( {\sum\nolimits_j {{e^{{z_j}}}} } \right)}^2}}} = \frac{{{e^{{z_i}}}\left( {\sum\nolimits_j {{e^{{z_j}}}} - {e^{{z_i}}}} \right)}}{{{{\left( {\sum\nolimits_j {{e^{{z_j}}}} } \right)}^2}}}\\
= \frac{{{e^{{z_i}}}}}{{\sum\nolimits_j {{e^{{z_j}}}} }}\left( {1 - \frac{{{e^{{z_i}}}}}{{\sum\nolimits_j {{e^{{z_j}}}} }}} \right) = {a_i}\left( {1 - {a_i}} \right)  \tag{13}
\end{align*}

  • 當$i \ne j$時

\begin{align*}
\frac{{\partial {a_j}}}{{\partial {z_i}}} = \frac{{\partial \left( {\frac{{{e^{{z_j}}}}}{{\sum\nolimits_k {{e^{{z_k}}}} }}} \right)}}{{\partial {z_i}}} = \frac{{ - {e^{{z_j}}}{e^{{z_i}}}}}{{{{\left( {\sum\nolimits_k {{e^{{z_k}}}} } \right)}^2}}} = - {a_j}{a_i} \tag{14}
\end{align*}

因此,將兩種情況進行相結合

\begin{align*}
\frac{{\partial L}}{{\partial {z_i}}} &= \sum\limits_j {(\frac{{\partial {L_j}}}{{\partial {a_j}}}\frac{{\partial {a_j}}}{{\partial {z_i}}})} \\
&= \sum\limits_{i = j} {(\frac{{\partial {L_j}}}{{\partial {a_j}}}\frac{{\partial {a_j}}}{{\partial {z_i}}})} + \sum\limits_{i \ne j} {(\frac{{\partial {L_j}}}{{\partial {a_j}}}\frac{{\partial {a_j}}}{{\partial {z_i}}})} \\
&= - {y_i}\frac{1}{{{a_i}}}{a_i}(1 - {a_i}) + \sum\limits_{i \ne j} {({y_j}\frac{1}{{{a_j}}}{a_j}{a_i})} \\
&= - {y_i}(1 - {a_i}) + \sum\limits_{i \ne j} {{y_j}{a_i}} \\
&= \sum\limits_{i \ne j} {{y_j}{a_i}} + {y_i}{a_i} - {y_i}\\
&= {a_i}\sum\limits_j {{y_j}} - {y_i} \tag{15}
\end{align*}

 最后,針對分類問題,我們給定的結果$y_i$最終只會有一個類別是1,其他類別都是0,即$\sum_j y_j=1$,因此,對於分類問題,這個梯度等於:

\begin{align*}
\frac{{\partial L}}{{\partial {z_i}}}{\rm{ = }}{a_i} - {y_i} \tag{16}
\end{align*}

 

 

references:

[1] https://blog.csdn.net/bitcarmanlee/article/details/82320853

[2] https://www.cnblogs.com/charlesblc/p/6750290.html

[3] https://blog.csdn.net/tsyccnh/article/details/79163834

[4] https://blog.csdn.net/qian99/article/details/78046329


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM