本次筆記絕大部分轉自https://www.cnblogs.com/Luv-GEM/p/10674719.html
softmax回歸
Logistic回歸是用來解決二類分類問題的,如果要解決的問題是多分類問題呢?那就要用到softmax回歸了,它是Logistic回歸在多分類問題上的推廣。此處神經網絡模型開始亂入,softmax回歸一般用於神經網絡的輸出層,此時輸出層叫做softmax層。
1、softmax函數
首先介紹一下softmax函數,這個函數可以將一個向量(x1,x2,...,xK)映射為一個概率分布(z1,z2,...,zK),它將數據的范圍映射到(0,1)區間:

那么在多分類問題中,假設類別標簽y∈{1, 2, ..., C}有C個取值,那么給定一個樣本x,softmax回歸預測x屬於類別c的后驗概率為:

其中wc是第c類的權重向量。
那么樣本x屬於C個類別中每一個類別的概率用向量形式就可以寫為:

其中W=[w1,w2,...,wC]是由C個類的權重向量組成的矩陣,1表示元素全為1的向量,得到
是由所有類別的后驗概率組成的向量,第c個元素就是預測為第c類的概率,比如[0.05, 0.01, 0.9, 0.02, 0.02],預測為第3類。
2、softmax回歸的損失函數和梯度下降
one-hot向量:[0,0,0,1,0,...,0,0]這個向量就表示第四個類別標簽,1所在的位置就是那個位置的類標簽,其它全設置為0。
假設訓練數據集為{(x1,y1),(x2,y2),...(xM, yM)},即有M個樣本,softmax回歸使用交叉熵損失函數來學習最優的參數矩陣W,對樣本進行分類。
由於涉及到多分類,所以損失函數的表示方法稍微復雜一些。我們用C維的one-hot向量y來表示類別標簽。對於類別c,其向量表示為:

其中
表示指示函數。
則softmax回歸的交叉熵損失函數為:

其中
表示樣本
預測為每個類別的后驗概率組成的向量。
上面這個式子不太好理解,我們單獨拿出一個樣本來觀察。假設類別有三類,預測一個樣本x屬於第2類的交叉熵損失為
,其中
,如果預測正確,如
,則交叉熵損失為
,而如果預測錯誤,如
,則交叉熵損失為
,可見預測錯誤時損失非常大。
同樣的,用梯度下降法對損失函數進行優化求解,首先得到損失
對參數向量W的梯度:

初始化W0=0,然后對所有參數WC進行迭代更新,直至收斂。

參考資料:
1、吳恩達:《機器學習》
2、邱錫鵬:《神經網絡與深度學習》
3、 https://blog.csdn.net/u010867294/article/details/79138603
