轉載的這篇文章來自峯神知乎上的文章,鏈接如下:
Softmax理解之二分類與多分類 - 王峯的文章 - 知乎 https://zhuanlan.zhihu.com/p/45368976
本文首先分析了softmax的性質,然後得出了softmax可以看成 "多個二分類器加權結合" 的方法,具體內容如下:
本篇爲Softmax理解的第二篇文章,沒看過第一篇的請點擊傳送門:從最優化的角度看待Softmax損失函數 。
在SVM時代,因爲SVM是一個二分類器,如果我們要進行多分類,就需要使用1 vs 1或者1 vs all的技巧來訓練。其中1 vs 1需要尋找兩兩組合的 個分界面;而1 vs all需要訓練 個分類器,尋找的是某個類別與其他所有類別之間的分界面。具體的情況可以看看這篇博客:支持向量機SVM整理 - CSDN博客 。
神經網絡時代用得最多的是Softmax交叉熵損失函數,它是從邏輯迴歸這個二分類器上演化出來的,具體是如何演化的可以看看這個教程:http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92。注意這裏提到了因爲Softmax操作是有冗餘的,所以在二分類情況下Softmax交叉熵損失等價於邏輯迴歸。但實際上Softmax是給每個類別都分配了權重向量,而邏輯迴歸和SVM都是隻有一個向量來表示這兩個類別之間的分界面。如果我們強行還要使用Softmax進行二分類,那麼根據公式(假設當前樣本的類別爲1)
,
其中 ,可以推導出 得到的梯度永遠是反向且幅度是相等的。這兩個類別之間的分界面就是 。
Softmax交叉熵損失函數的核心在於Softmax操作,它將樣本在 個類別的分數 轉化成了一組概率值 :
這一組概率具備概率的各種性質,這篇文章主要用到兩個性質:
1、非負性: ;
2、正則性: 。
Softmax交叉熵損失函數關於分數 的導數如下:
這個導數的含義是:對於目標分數 ,其梯度爲負數 ,其他的非目標分數得到的梯度恰好爲其對應的概率值 。我將Softmax的概率和梯度的關係畫在了題圖中,從這張圖上可以總結出以下性質:
1、Softmax交叉熵損失對分數的梯度之和爲0,即 ;
2、Softmax交叉熵損失對各個分數的梯度絕對值之和爲2倍的對目標分數梯度絕對值之和,即 ;
3、Softmax交叉熵損失對非目標分數的梯度之和等於對目標分數梯度的絕對值,即 ;
其中第1條性質說明回傳的正負梯度之間是平衡的,第2條性質說明回傳梯度的總幅度是受限的,這兩條性質保證了Softmax loss不會出現上一篇文章提到的Hinge loss那樣的非目標分數得到的梯度過多的情況。
這裏的第3條性質比較重要,我把它畫在了題圖的右圖上,根據這條性質,對目標分數 的梯度可以被分解爲 份,每一份與對應的非目標分數 的梯度都可以組成一對正負梯度,這對梯度反向且幅度相等,剛好符合我們前面分析的二分類器的性質。因此,對於每一個類別,Softmax實際上是訓練了個二分類器的線性組合,而這 個二分類器的權重恰好等於非目標概率 。
這與SVM的1 vs 1方式比較類似,區別在於SVM訓練的是分界面而不是類別向量,所以SVM需要訓練 個分界面,但Softmax只需要訓練 個類向量即可。這些類別的分界面可以由 來求得,仍然可以得到類似的 個分界面。所以Softmax是比SVM 1 vs 1更省空間也更省計算量的多分類器。最關鍵的是,Softmax的多個分類器是同時訓練的,因此其效率遠遠超過了需要訓練多次的SVM。
另一個區別在於權重的分配,Softmax的各個二分類器之間的權重分配遵循了“較難的二分類器給予較大權重”的原則,其中難易的準則是由當前樣本的分類情況來決定的,如果某個非目標分數較高則認爲當前樣本對於這個類別的區分能力較差,要着重優化這個非目標分數。而且Softmax概率是經過了指數函數的,因此較難的二分類器可以獲得遠超已經分得比較好的分類器的權重。
總結一下,Softmax交叉熵損失函數在進行多分類時可以理解爲是在訓練多個二分類器的組合,只不過因爲Softmax訓練的是類別向量而不是分界面,所以其訓練效率得到了很大的提升。Softmax交叉熵損失函數的多條優良的性質以及它在多個二分類器之間的權重分配方式有助於我們設計其他的損失函數,同時也能啓發一下多個損失函數之間加權方式的研究,畢竟Softmax看似是多分類,實際上是有着巧妙設計的權重的多個二分類器,那麼其他的多損失函數說不定也能利用一下類似的權重分配方式呢?