Linear classification: Support Vector Machine, Softmax 線形分離による分類アルゴリズムの解説.
Parameterized mapping from images to label scores
学習や評価に使うデータがD次元のベクトル空間で,ラベルは1からKまでの整数とする.
f:RD↦RK のような関数をscore function という.
Linear classifier
f(xi,W,b)=Wxi+b
xi はD次元縦ベクトルで,WはK行D列ベクトル,bはk次元縦ベクトルである.Wをweights, bをbiasesといい,W, bが最適になるようにするのが学習.学習が終わればtrain dataは予測には必要ないし,予測の計算は行列算だけなのでkNNより非常に高速.
Wの第i行Wi:は第iクラスのclassifierである.つまりexample x があるとき, Wi:xはxがどれほど第iクラスに属するらしいかを与える.
Interpretation of linear classifiers as template matching
Wi: を第iクラスのtemplate(or prototype)と考えることもできる.各クラスのtemplateたちとexampleがどれほど似ているかを比較して,最良のものを選び出す.
Bias trick
f(xi,W,b)=Wxi+b について,CIFAR-10ではWは10行3072列の行列で,x は3072次元のベクトル, bは10次元のベクトルだが,Wの第3073列にbを挿入して,xの11次元目を1とすれば,f(xi,W)=Wxi と簡潔に書ける.これをbias trick という.
Image data ppreprocessing
CIFAR-10のデータは0から255の値を取る整数の3072次元のベクトルだが,ベクトルごとに標準化を行って,平均0, 標準偏差1に揃える.
Loss function(cost function, objective)
score function によって計算した予測と正しい答えの食い違いを計量する関数で,これができるだけ小さな値になるようにscore functionの係数を変えていく.
Multiclass Support Vector Machine loss
loss functionの一つ.exapmle xiに対してs=f(xi,W)とするとき,xiにおけるloss Liを Li=∑j≠yimax(0,sj−syi+Δ)(Δ;マージンは定数) で定義する.0に閾値をもつmax(0,−)の形の関数をhinge loss という.
Regularization
重みの行列の各要素は絶対値が小さくなるように最適化する.そのためにloss functionにregularization項 R(W)=∑k∑lW2k,l==||W||2F を挿入する.理由は
- Wのある要素Wijがほかと比べて大きいというのは,画像データの第j要素が画像のクラス分類に大きな影響があるということで,実際にそういうことは無さそうなので無くしたい(過学習の抑制)
- Wをできるだけ一意に決めたい( Wがxiの分類に成功するとき,λW (λ>1)も分類に成功する.) (2.の理由はNielsenには無かった気がする) regularization項を加えて,loss functionは L=1n∑iLi+λR(W) となる.(λはregularization定数)
Practical Considerations
setting data
Δとλは一見別々に設定するハイパーパラメーターだが,Δは判別成否によるlossを計量するをどれほど重視するかというハイパーパラメーターで,λはどれほどregularzationを重視するかというハイパーパラメーターだから,どちらか一方を1.0と定めてもう一方を調整する.ふつうΔ=1.0とする.
Softmax classifier
SVM分類器のほか,よく使われる分類器にSoftmax がある. f(xi;W)=Wxiにって各クラスのスコアを計算したあと,Softmax関数によって確率にする. f(xi;W)=Wxi=fとすると, softmax(f)=[ef1∑kefk,...,efK∑kefk]T またこれによるloss Li=−log(efyi∑kefk)=−fyi+log∑kefk をcross-entropy loss という.
謎
Nielsenの定義と食い違う.今度調べる.
Ci=
−∑k[yklnaLj+(1−yk)ln(1−aLj)] 式(63)のデータセットによる和を無視した変形
=−lnai−∑k≠yiln(1−ak)
=−lnefyi∑kefk−∑k≠yiln(1−efyk∑kefk) (softmaxを使った場合)
≠Li
Information theory view (わからん)
真の確率分布pと推定された確率分布qがあるとき,p, qの間のcross-entropyH(p,q)は
H(p,q)=−∑xp(x)logq(x)=H(p)+DKL(p||q)
で定義される.
推定された確率分布qとはq=efyi∑kefk のことで,pは正しい分類すなわちp=[o,...,1,...,0](y_i番目が1).
またH(p)=0から,H(p,q)==DKL(p||q)
Probablistic interpretation
P(yi|xi;W)=efyi∑kefk はWという重み行列があり,example xiが与えられた時,そのラベルがyi(正解)である事後確率と考えることができる.それを最大にするようなWを計算することは最尤推定(Maximum Likelihood Estimation, MLE)であって,またregularization項R(W)はガウス事前分布を仮定した時のWのMaximum a posteriori(MAP)と考えることができる.
Practical issues: Numeric stability
efyi∑kefk の分母分子は非常に大きな数になりがちで,数値計算上の問題が生じうるので,何かしら定数をexponentialの中に足して計算できるようにする.一般的にはC=−log(maxjfj)を足す.
import numpy as np
f = np.array([123, 456, 789])
p = np.exp(f)/np.sum(np.exp(f))
print(p)
f -= np.max(f)
p = np.exp(f)/np.sum(np.exp(f))
print(p)
SVM vs. Softmax
Softmax classifier provides “probabilities” for each class.
fの出力が[1,−2,0]Tのとき,softmaxの結果は[0.7,0.04,0.26]T
Wの全ての要素が半分になると,fの出力は
[0.5,−1,0]Tで,softmaxの出力は[0.55,0.12,0.33]
よって確率はdiffuse(拡散)する.究極的には,Wの要素の値たちが小さくなるに連れて,softmaxの結果は一様分布に近づいていく.よって,softmaxの結果はどのクラスに分類されるかの確率の形をしているが,実際には順序だけを考えるべき.
In practice, SVM and Softmax are usually comparable.
正解ラベルが1のexampleで,Wxi=[10,−2,3]Tであり,Δ=1.0であるとき,lossは0.[10,−100,−100]T,これは[10,9,9]Tでも同様.一方softmaxは[10,9,9]Tで大きなlossを出す.このようにSVMのlossは近視眼出来なところがある.これは利点にもなりうる.例えば自動車分類器の行が,自動車とトラックの分離に殆どの要素を割いている時,すでに良好に分離が可能になったカエルのexampleに影響されるべきではない.例えば[自動車,トラック,カエル]T=[1,2,12]Tのスコアがでているとき,softmaxでは多少のlossが発生してWが書き換えられてしまうが,SVMでは書き換えられない.(この解釈でいいのか?)
0 件のコメント:
コメントを投稿