我們常見的邏輯回歸、SVM等常用于解決二分類問題,對于多分類問題,比如識别手寫數字,它就需要10個分類,同樣也可以用邏輯回歸或SVM,隻是需要多個二分類來組成多分類,但這裡讨論另外一種方式來解決多分類——softmax。
softmax的函數為
P(i)=exp(θTix)∑Kk=1exp(θTkx)
可以看到它有多個值,所有值加起來剛好等于1,每個輸出都映射到了0到1區間,可以看成是機率問題。
θTix為多個輸入,訓練其實就是為了逼近最佳的θT。
從下圖看,神經網絡中包含了輸入層,然後通過兩個特征層處理,最後通過softmax分析器就能得到不同條件下的機率,這裡需要分成三個類别,最終會得到y=0、y=1、y=2的機率值。

繼續看下面的圖,三個輸入通過softmax後得到一個數組[0.05 , 0.10 , 0.85],這就是soft的功能。
計算過程直接看下圖,其中zLi即為θTix,三個輸入的值分别為3、1、-3,ez的值為20、2.7、0.05,再分别除以累加和得到最終的機率值,0.88、0.12、0。
對于訓練集{(x(1),y(1)),...,(x(m),y(m))},有y(i)∈{1,2,3...,k},總共有k個分類。對于每個輸入x都會有對應每個類的機率,即p(y=j|x),從向量角度來看,有,
hθ(x(i))=⎡⎣⎢⎢⎢⎢⎢p(y(i)=1|x(i);θ)p(y(i)=2|x(i);θ)⋮p(y(i)=k|x(i);θ)⎤⎦⎥⎥⎥⎥⎥=1∑kj=1eθTj⋅x(i)⎡⎣⎢⎢⎢⎢⎢eθT1⋅x(i)eθT2⋅x(i)⋮eθTk⋅x(i)⎤⎦⎥⎥⎥⎥⎥
softmax的代價函數定為如下,其中包含了示性函數1{j=y(i)},表示如果第i個樣本的類别為j則yij=1。代價函數可看成是最大化似然函數,也即是最小化負對數似然函數。
J(θ)=−1m[∑mi=1∑kj=11{y(i)=j}⋅log(p(y(i)=j|x(i);θ))]
其中,p(y(i)=j|x(i);θ)=exp(θTix)∑Kk=1exp(θTkx)則,
J(θ)=−1m[∑mi=1∑kj=11{y(i)=j}⋅(θTjx(i)−log(∑kl=1eθTl⋅x(i)))]
一般使用梯度下降優化算法來最小化代價函數,而其中會涉及到偏導數,即θj:=θj−αδθjJ(θ),則J(θ)對θj求偏導,得到,
∇J(θ)∇θj=−1m∑mi=1[∇∑kj=11{y(i)=j}θTjx(i)∇θj−∇∑kj=11{y(i)=j}log(∑kl=1eθTl⋅x(i)))∇θj]
=−1m∑mi=1[1{y(i)=j}x(i)−∇∑kj=11{y(i)=j}∑kl=1eθTl⋅x(i)∑kl=1eθTl⋅x(i)∇θj]
=−1m∑mi=1[1{y(i)=j}x(i)−x(i)eθTj⋅x(i)∑kl=1eθTl⋅x(i)]
=−1m∑mi=1x(i)[1{y(i)=j}−p(y(i)=j|x(i);θ)]
得到代價函數對參數權重的梯度就可以優化了。
在多分類場景中可以用softmax也可以用多個二分類器組合成多分類,比如多個邏輯分類器或SVM分類器等等。該使用softmax還是組合分類器,主要看分類的類别是否互斥,如果互斥則用softmax,如果不是互斥的則使用組合分類器。
========廣告時間========
<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321">為什麼寫《Tomcat核心設計剖析》</a>
=========================
歡迎關注: