【轉載】Softmax Regression

原文地址:http://www.cnblogs.com/tornadomeet/archive/2013/03/22/2975978.html


在前面的logistic regression博文Deep learning:四(logistic regression練習) 中,我們知道logistic regression很適合做一些非線性方面的分類問題,不過它只適合處理二分類的問題,且在給出分類結果時還會給出結果的概率。那麼如果需要用類似的方法(這裏類似的方法指的是輸出分類結果並且給出概率值)來處理多分類問題的話該怎麼擴展呢?本次要講的就是對logstic regression擴展的一種多分類器,softmax regression。參考的內容爲網頁:http://deeplearning.stanford.edu/wiki/index.php/Softmax_Regression

  在Logistic regression中,所學習的系統的程爲:

   

  其對應的損失函數爲:

   

  可以看出,給定一個樣本,就輸出一個概率值,該概率值表示的含義是這個樣本屬於類別’1’的概率,因爲總共纔有2個類別,所以另一個類別的概率直接用1減掉剛剛的結果即可。如果現在的假設是多分類問題,比如說總共有k個類別。在softmax regression中這時候的系統的方程爲:

   

  其中的參數sidta不再是列向量,而是一個矩陣,矩陣的每一行可以看做是一個類別所對應分類器的參數,總共有k行。所以矩陣sidta可以寫成下面的形式:

   

  此時,系統損失函數的方程爲:

   

  其中的1{.}是一個指示性函數,即當大括號中的值爲真時,該函數的結果就爲1,否則其結果就爲0。

  當然了,如果要用梯度下降法,牛頓法,或者L-BFGS法求得系統的參數的話,就必須求出損失函數的偏導函數,softmax regression中損失函數的偏導函數如下所示:

   

  注意公式中的是一個向量,表示的是針對第i個類別而求得的。所以上面的公式還只是一個類別的偏導公式,我們需要求出所有類別的偏導公式。表示的是損失函數對第j個類別的第l個參數的偏導。

  比較有趣的時,softmax regression中對參數的最優化求解不只一個,每當求得一個優化參數時,如果將這個參數的每一項都減掉同一個數,其得到的損失函數值也是一樣的。這說明這個參數不是唯一解。用數學公式證明過程如下所示:

   

  那這個到底是什麼原因呢?從宏觀上可以這麼理解,因爲此時的損失函數不是嚴格非凸的,也就是說在局部最小值點附近是一個”平坦”的,所以在這個參數附近的值都是一樣的了。那麼怎樣避免這個問題呢?其實加入規則項就可以解決(比如說,用牛頓法求解時,hession矩陣如果沒有加入規則項,就有可能不是可逆的從而導致了剛纔的情況,如果加入了規則項後該hession矩陣就不會不可逆了),加入規則項後的損失函數表達式如下:

   

  這個時候的偏導函數表達式如下所示:

   

  接下來剩下的問題就是用數學優化的方法來求解了,另外還可以從數學公式的角度去理解softmax regression是logistic regression的擴展。

  網頁教程中還介紹了softmax regression和k binary classifiers之間的區別和使用條件。總結就這麼一個要點:如果所需的分類類別之間是嚴格相互排斥的,也就是兩種類別不能同時被一個樣本佔有,這時候應該使用softmax regression。反正,如果所需分類的類別之間允許某些重疊,這時候就應該使用binary classifiers了。

 

  參考資料:

     Deep learning:四(logistic regression練習)

     http://deeplearning.stanford.edu/wiki/index.php/Softmax_Regression

 

作者:tornadomeet 出處:http://www.cnblogs.com/tornadomeet 歡迎轉載或分享,但請務必聲明文章出處。 (新浪微博:tornadomeet,歡迎交流!)



發佈了167 篇原創文章 · 獲贊 65 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章