天天看點

softmax的多分類

我們常見的邏輯回歸、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的多分類

繼續看下面的圖,三個輸入通過softmax後得到一個數組[0.05 , 0.10 , 0.85],這就是soft的功能。

softmax的多分類

計算過程直接看下圖,其中zLi即為θTix,三個輸入的值分别為3、1、-3,ez的值為20、2.7、0.05,再分别除以累加和得到最終的機率值,0.88、0.12、0。

softmax的多分類

對于訓練集{(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>

=========================

歡迎關注:

softmax的多分類