Softmax Regression
Logistic regression通常用來解決二分類問題,解決多分類問題通常就要用到softmax regression。給定一個樣例x,假設我們想要計算出x屬于k ∈{1,2,3...K} 的機率 P{y=k|x} 可以使用如下的公式:
hθ(x)=⎡⎣⎢⎢⎢⎢⎢P(y=1|x;θ)P(y=2|x;θ)⋮P(y=K|x;θ)⎤⎦⎥⎥⎥⎥⎥=1∑Kj=1exp(θ(j)Tx)⎡⎣⎢⎢⎢⎢⎢exp(θ(1)Tx)exp(θ(1)Tx)⋮exp(θ(1)Tx)⎤⎦⎥⎥⎥⎥⎥
其中 θ1,θ2...θk∈Rn 是模型的參數,其中 1∑kj=1exp(θ(j)Tx) 是标準化項,使得所有類的機率相加等于1, θ 是一個n*k的系數矩陣,具有如下形式:
[θ1θ2⋯θK]
Cost function
在cost function中使用訓示函數,1{true} = 1,1{false} = 0,cost function具有如下形式:
J(θ)=−[∑i=1m∑k=1K1{yi=k}logexp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)]
對每一個 θl 求導, l∈{1,2...K}
∂J(θ)∂θl=−∑i=1m[∂∑Kk=11{yi=k}logexp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)∂θl]
當l=k時
∂1{yi=k}logexp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)∂θl={yi=k}∑Kj=1exp(θ(j)Txi)exp(θ(k)Txi)∗xi∗exp(θ(k)Txi)∗∑Kj=1exp(θ(j)Txi)−xi∗exp(θ(k)Txi)∗exp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)2=xi∗(1−exp(θ(k)Txi)∑Kj=1exp(θ(j)Txi))=xi∗(1−P(yi=k|xi;θ)=xi∗(1{yi=k}−P(yi=k|xi;θ))
當 l≠k 時
∂1{yi=k}logexp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)∂θl={yi=k}∑Kj=1exp(θ(j)Txi)exp(θ(k)Txi)∗0−xi∗exp(θ(k)Txi)∗exp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)2=xi∗(0−exp(θ(k)Txi)∑Kj=1exp(θ(j)Txi))=xi∗(0−P(yi=k|xi;θ))=xi∗(1{yi=k}−P(yi=k|xi;θ))
是以
∂J(θ)∂θl=−∑i=1m[xi∗(1{yi=k}−P(yi=k|xi;θ))]
Softmax Regression參數特點
Softmax Regression回歸所求得參數是一個備援的參數集,把得到的每一個參數 θl 同時減去 φ ,并不影響預測結果,此時 θl 都變成了 θl−φ,l∈{1,2,3..K} ,數學推導如下:
P(yi=k|xi;θ)=exp((θ(k)−φ)Txi)∑Kj=1exp((θj−φ)xi)=exp(θ(k)Txi)exp(φTxi)∑Kj=1exp(θ(j)Txi)exp(φTxi)=exp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)
為了避免求得的是一個備援的參數集,可以考慮在cost function中加入一個正則化項,加入正則項後的cost function和導數表達式如下:
J(θ)=−[∑i=1m∑k=1K1{yi=k}logexp(θ(k)Txi)∑Kj=1exp(θ(j)Txi)]+λ/2∑i=1k∑j=1mθ2ij
∂J(θ)∂θl=−∑i=1m[xi∗(1{yi=k}−P(yi=k|xi;θ))]+λθl
最後exercise練習如下:
yLabel = full(sparse(y, :m, ));
yLabel = yLabel(:num_classes-,:);
M = exp(theta'*X);
p = bsxfun(@rdivide,M,sum(M));
f = - yLabel(:)'*log(p(:));
g = - X*(yLabel - p)';
g = g(:,1:num_classes - 1);