我們知道Logistic迴歸只能進行二分類,因爲它的隨機變量的取值只能是0或者1,那麼如果我們面對多分類問題怎麼辦?比如要將一封新收到的郵件分爲垃圾郵件,個人郵件,還是工作郵件;根據病人的病情預測病人屬於哪種病;對於諸如MNIST手寫數字分類(MNIST是一個手寫數字識別庫,相見:http://yann.lecun.com/exdb/mnist/)。諸如此類問題都涉及到多分類,那麼今天要講的softmax迴歸能解決這類問題。即,softmax迴歸稱爲Logistic迴歸的擴展。
在Logistic迴歸中,樣本數據的值,而在softmax迴歸中,其中是類別種數,比如在手寫識別中,表示要識別的10個數字。設那麼
而且有
爲了將多項式模型表述成指數分佈族,先引入,它是一個維的向量,那麼
應用於一般線性模型,必然是屬於個類中的一種。用表示爲真,同樣當爲假時,有
,那麼進一步得到概率密度函數爲[非聯合概率密度,y有k種情況]
對比一下,可以得到
由於
那麼最終得到
可以得到期望值爲
接下來得到對數似然函數函數爲
其中是一個的矩陣,代表這個類的所有訓練參數,每個類的參數是一個維的向量。所以在
softmax迴歸中將分類爲類別的概率爲
跟Logistic迴歸一樣,softmax也可以用梯度下降法或者牛頓迭代法求解,對對數似然函數求偏導數,得到
然後我們可以通過梯度上升法來更新參數
注意這裏是第個類的所有參數,它是一個向量。
在softmax迴歸中直接用上述對數似然函數是不能更新參數的,因爲它存在冗餘的參數,通常用牛頓方法中的Hessian矩陣也不可逆,是一個非凸函數,那麼可以通過添加一個權重衰減項來修改代價函數,使得代價函數是凸函數,並且得到的Hessian矩陣可逆。更多詳情參考如下鏈接。
鏈接:http://deeplearning.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
這裏面也講述了K個二元分類器與softmax的區別,值得學習。
參考資料:
(1)http://www.cnblogs.com/tornadomeet/archive/2013/03/22/2975978.html
(2)http://www.cnblogs.com/tornadomeet/archive/2013/03/23/2977621.html
(3)http://demo.netfoucs.com/lingerlanlan/article/details/38410123
(4)http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/
(5)http://blog.csdn.net/celerychen2009/article/details/9014797