Softmax Regression

Softmax簡介

記得之前做過的logistic regression的練習是一個二類分類的問題,模型的假設函數是


      這個函數判斷給定的x在當前的模型theta下被預測爲1的概率,顯然預測爲0的概率就是1減去預測爲1的概率即可。LR實際上就是在訓練數據中的空間中找一條超平面把正負樣本分開,與感知機、SVM(支持向量機)也有點類似,但是損失函數是不一樣的。LR的損失函數爲


LR也可以被擴展到多類分類問題,此時變爲Softmax Regression問題,訓練數據的類別屬於1,2,...,k。這時有k個模型分別預測訓練數據屬於那個類別的概率。

    模型theta爲:

 


損失函數

我們知道LR的損失函數爲:

 

    擴展到Softmax Regression的損失函數爲(交叉熵或者可看成是根據最大似然推出來的):

  

    對損失函數J求導是關鍵的一步,求導結果如下(這個要自己動手推一推)

    

    從求導結果我們可以大概看出,假設只有一個樣本時,如果樣本類別爲j,則括號裏面的指示函數爲真,值爲1,減去在當前模型theta下屬於類j的概率,如果theta_j與其它theta_k (k!=j)相比較小,計算出的p就相對較小,則對theta_j的梯度就較小(爲負數,theta_j越小,該負數越小),而對其它theta_k的p較大,梯度就較大(正數,theta_k越大,該正數越大),然後進行梯度更新時,由於是加上負梯度,所以theta_j就變大,theta_k變小了,這樣就往正確結果走進了一步。(應該不是theta_j變大,而是theta_j*x變大,這樣模型就能以更大的概率產生數據了,只要根據梯度更新規則:theta_j=theta_j+(1-p_j)*x,兩邊同時乘x,由於(1-p_j)*x*x>0,這樣theta_j*x就變大了,同理,其它的theta_k*x就變小了)

   Softmax Regression有一個特點就是冗餘的參數集,表現如下:


      說明theta被過度參數化了,每個theta_i減去同樣的一個數後,都是得到相同的模型,說明最優解不唯一。但是由於J(theta)仍然是一個凸函數,所以梯度下降法求解是能得到全局最優解的,所以可能是在最優解處是平坦的,但是用牛頓法就會遇到問題了,因爲hessen矩陣是奇異的(不可逆)。

       加入權重衰減後的模型爲:


    求導函數變爲:


     當k=2時,Softmax迴歸可以退化爲Logistic迴歸:


     那麼什麼時候該用Softmax迴歸,又什麼時候該用Logistc迴歸呢?當類別是嚴格互斥時用Softmax迴歸,當不是嚴格互斥,即某些數據可能屬於多個類別時就用Logistic迴歸。


參考:

http://blog.csdn.net/freeliao/article/details/18447757

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



      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章