天天看點

UFLDL Softmax Regression 推導

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); 
           

繼續閱讀