Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

NNDL 第3章 線形学習

中国の有名な機械学習の本の勉強ノート。自分がわからなかったところだけなので飛び飛びだろう。特に線形学習は大体わかってるし。

https://nndl.github.io/

やらないとやはりヤバい。存亡の際に立っている認識で臨む。

線形分類器と識別境界

線形識別器は、wTx+b\mathbf{w}^T \mathbf{x}+b。これが妥当な重みが存在して完全に分類できるときは、線形分類可能という。

多クラス分類

カテゴリがみなKK個あるとする。特徴量はPP次元。

  • 1 vs other。KK個の識別器を作って判断する。
  • 1 vs 1。K(K1)/2K(K-1)/2個の識別器を作って、すべてのありうるカテゴリのペアで作る。
  • argmax。識別結果としてスカラーを出すのではなく、KK次元のベクトルを出して、各成分ごとにそのカテゴリに所属していることに対しての評価値(正ほど良い)。これを実現するためにw\mathbf{w}P×1P \times 1のベクトルではなく、P×KP \times Kの行列とすればいい。実質的にはKK個の識別器を同時に訓練している。
    • これが一番いいです。
    • argmaxで分類できる場合、多クラス線形分類可能であるという。

Logistic回帰

g(x)=11+exp(y=+1x)=g(wTx+b)g(x)=\frac{1}{1+e^{-x}} \\ p(y=+1|\mathbf{x}) = g(\mathbf{w}^ T \mathbf{x} + b)

線形識別器をロジスティック関数に入れたもので、事後確率を近似する試み。

wTx+b=logp(y=1x)p(y=0x)\mathbf{w} ^ T \mathbf{x} + b = \log \frac{p(y=1|\mathbf{x})}{p(y=0 | \mathbf{x})}

式変形するとこうなる。logの中身は、Oddsという。log OddはLogitという

なので、Logistic回帰は、Logit回帰とも言われたりする。

Logistic回帰の学習については、クロスエントロピー誤差によって勾配降下法で行う。式変形をすると以下のように導関数は明示的に得ることができる。二次導関数も明示的に求まるので、ニュートン法でもいい。

Image in a image block

Softmax回帰

多クラスのLogistic回帰ともいえる。

p(y=cx)=softmax(wcTx+bc)=exp(wcTx+bc)i=1Cexp(wiTx+bi)p(y=c|\mathbf{x})=\mathrm{softmax}(\mathbf{w}_c ^ T \mathbf{x} + b_c) = \frac{\exp (\mathbf{w}_c ^ T \mathbf{x} + b_c)}{\sum _{i=1}^C \exp (\mathbf{w}_i ^ T \mathbf{x} + b_i)}

C=2C=2の時arg maxy0,1wyTx=1[(w1w0)Tx>0]\argmax _{y \in 0, 1} \mathbf{w}_y ^ T \mathbf{x}=\mathbf{1}[(\mathbf{w_1 - w_0}) ^ T \mathbf{x} > 0]とみなせるので(バイアス項はベクトルの中に折りたためる)、Logistic回帰とも兼ねている。

これの学習も同様にクロスエントロピー誤差によって行う。明示的にできるので、以下のようにLogistic回帰と似た形になる。WWは各wiT\mathbf{w_i}^Tという行ベクトルを各列に並べたもの。

Image in a image block

パーセプトロン(感知器)

最も簡単なニューラルネットワークのニューロン。ここでは同様にバイアスは重みの中に折りたたんでいることに注意。

y^=sgn(wTx)\hat{y} = \mathrm{sgn}(\mathbf{w}^T \mathbf{x})

間違った分類がなされた時、誤差逆伝搬するとgradientは明らかにx\mathbf{x}なので、以下のような更新式でできる。

ww+yx\mathbf{w} \gets \mathbf{w} + y \mathbf{x}
Image in a image block

データが有限で、線形で可分なのであればパーセプトロンは必ず有限回の更新を経て収束することが保証されている。

ただ欠点としては、可分でなければ収束は永遠にしないし、過学習するし、更新する順序によって最終的に得る分類超平面も異なってくる

パラメタ平均式パーセプトロン

各種を防ぐために過去のパラメタを保存して、それぞれに重みを設定し、最終的な識別結果は重み付きの各識別器による投票で判定することで、ロアスト性を高めることができる。しかし、パラメタ保存するのがめんどくさい。=Voted Perceptron

毎回保存するのがめんどくさいときは、最近のものを重視する指数平均、単純に平均を取る無印の平均などで対処できる。

多クラス分類パーセプトロンへの拡張

全てのラベルの集合をYYとする。この時、多クラス分類の式は、外積演算子vec(abT)\mathrm{vec}(\mathbf{a} \mathbf{b} ^ T)を用いると以下のようになる。y\mathbf{y}はone-hotである前提。

y^=arg maxyYwTvec(xyT)\hat{\mathbf{y}} = \argmax _{\mathbf{y} \in Y} \mathbf{w} ^ T \mathrm{vec}(\mathbf{x} \mathbf{y}^T)

外積を取る事によって、KKカテゴリでPP次元の特徴量であることから、P×KP \times K次元のベクトルとなる。具体的には以下のように、指定の部分のPP行だけ値が入ってそれ以外が0になっている。

Image in a image block

Support Vector Machine(支持向量机)

マージンとは、各点から識別器の超平面までの最短距離だと定義する。

より大きいマージンだとより良い分類ができるのでそれが望ましい。

Image in a image block

γw=1\gamma ||\mathbf{w}||=1と制限しても表現力は変わらないので、以下の最適化問題となる。

Image in a image block

s.t.の部分で=1となるようなすべてのサンプルの位置ベクトルは、サポートベクトルという。

パラメタの更新

凸最適化問題に書き換えると以下の通り。

Image in a image block

あとは、ラグランジュの未定乗数法などで解けばよい。サボります。

あとはカーネル法を使えばSVMの表現力を上げることができる。

また、分離不可能な場合では、最適化問題をペナルティの係数CCを導入して以下のようにあらわす。

Image in a image block