Deep learning:十三(Softmax Regression)


 

  在前面的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

 

 

 

 


免責聲明!

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



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