Stanford大の教材CS231nを使ってNNやCNNを学んでいる.
本記事では,Linear Classificationについて,下記項目を中心に扱う.
- Support Vector Machine
- Softmax
Linear Classification
- k-Nearest Neighborは以下の欠点があった
- 空間的な非効率性
- 分類器は全てのtraining dataを記憶し,将来のtest dataとの比較のために保持しておく必要があった.
- 計算コストがかかる
- 全てのtraining dataと比較してはじめてtest dataを分類できた.
- 空間的な非効率性
- そこでscore functionとloss functionを導入する
- score function
- raw dataを分類クラスごとにスコア付け
- loss function
- 予測したスコアとラベルの持つスコアの差を計算
- score function
- これらを最適化問題(optimization problem)に帰着させる
Parameterized mapping from images to label scores
- 画像から分類クラスへのスコア付けを考える
- たとえば,前回のCIFAR-10で考えると,
- training set
- d次元
- 分類クラス数
- このときにはscore functionはとなる
- たとえば,前回のCIFAR-10で考えると,
Linear classifier
- 一番シンプルなscore functionはlinear mapping(線形写像)
- 注意点
- 目標はとを設定すること
- これらを設定したらtraining dataは捨ててよい.
Interpreting a linear classifier
- このlinear classifierの特徴
- 各ピクセルの各3色チャネルに対して,重み付けされた値が算出される.
(言い換えると,位置に対して3色を好きか嫌いかで重み付けしたものが算出される)- "ship"クラスであれば,blueが大きく,redやgreenは小さく重み付けされている.
- 各ピクセルの各3色チャネルに対して,重み付けされた値が算出される.
- の行ごとに分類器の特性を表していると考えることができる(下図)
(CS231nより引用)
- 結果のベクトルを低次元としてみなして考察してみる
- 本当は結果のベクトルは高次元だが,それを二次元だと想定してみる
- は分類ごとの特性を表している
- もしを変化させたら,分類の境界は回転する(下図)
- バイアスは分類の境界線を並進移動させる働きがある
(CS231nより引用)
- 別の解釈としてtemplate matchingとしても見ることができる
- の各行と入力画像ベクトルの内積をとってスコア付けしている
- なにが一番合致しているかをスコア化
- Nearest Neighborを効率化したものでもある.
(CS231nより引用)
- バイアスを重みとして扱うテクニック
- 下図のように,とを拡張してを隠蔽する
- 入力データの前処理
- 正規化をするのが通例
- 勾配降下法のため.
Loss function
- 重みを制御したい
- training dataの真のラベルと分類予測が一致するように
- loss functionの導入
- cost functionやobjectiveともいう
- 「lossが高いとだめ」,「lossが低いとよい」という指標
Multiclass Support Vector Machine loss
- loss fuctionの定義は幾つかある
- 1つめの例としてMulticlass Support Vector Machine(SVM)を見る
- 前提
- をi個目の画像ピクセル列
- をi個目の画像の正しい分類クラスのインデックス
- score functionをとする.
- i個目の画像の,j個目のクラスへのスコアはで表す. $$ s_{j} = f(x_{i}, W)_{j} $$
- i個目の画像のMulticlass SVM lossは以下の式で表す.
- i個目の画像に対して,
- 全クラス分の損失を合計する
$$ L_{i} = \sum_{j \neq y_{i}}{ \max (0, s_{j} - s_{y_{i}} + \Delta) } $$
例
- 例
- ある画像に対して3つの分類クラスを考える
- それぞれのクラスへのスコアは
- その画像に対しては1つ目のクラスが真()
- ハイパーパラメータ(あとで説明あり)
$$ \begin{align} L_{i} &= \sum_{j \neq y_{i}}{ \max (0, s_{j} - s_{y_{i}} + \Delta) } \\ &= \max (0, -7 -13 +10 ) + \max (0, 11 -13 +10 ) \\ &= 0 + 8 \\ &= 8 \end{align} $$
- 上式を眺めると,
- ハイパーパラメータがあるので,が-10より大きくないと0となる.
- このSVN loss functionは結局,が-10以下となることを目指している.そうでない場合にはlossとなる.(下図がわかりやすい)
(CS231nより引用)
- 正規化(Regularization)の必要性
- このままだと重みが一意に決まらない
- datasetと重みで,うまく分類できた()とする.
- でもをに入れ替えてもうまく分類できてしまう.
- このままだと重みが一意に決まらない
- loss functionを拡張する
- regularization penalty を導入する
- 普通はL2 normを使う.
$$ R(W) = \sum_{k} \sum_{l} {W_{k,l}^2} $$
- loss functionはdata loss とregularization lossから構成する
- はハイパーパラメータ $$ \begin{align} L &= \frac{1}{N} \sum_{i}{L_{i}} + \lambda R(W) \\ &= \frac{1}{N}\sum_{i}\sum_{j \neq y_{i}}{\max(0, f(x_{i}; W)_{j} - f(x_{i}; W)_{y_{i}} + \Delta)}+ \lambda \sum_{k}\sum_{l} {W_{k,l}^2} \end{align} $$
- 大きい重みにペナルティを課す利点は汎用性が増すこと
- 例
Practical Considerations
- ハイパーパラメータのをどう設定するか
- とは異なるハイパーパラメータに見えるが,実際には同じトレードオフを制御している
- data lossとregularization lossの間のトレードオフの制御
Softmax Classifier
- SVMはよく使われる分類器の1つ
- 別の人気の分類器は,Softmax classifierだ
- Softmax classifier
- SVMより直観的な結果を出力する
- 確率的な解釈ができる
- cross-entropy loss(交差エントロピー誤差)をhinge lossの代わりに使う $$ \begin{align} L_{i} &= - \log{ (\frac{\exp(f_{y_{i}})}{\sum_{j} \exp(f_{j})}) } \\ &= -f_{y_{i}} + \log \sum_{j} \exp(f_{j}) \end{align} $$
- はsoftmax functionという
- cross-entropyは真の広がりと推定した広がりで定義される
- 真の確率と推定された確率のcross-entropyを最小化する $$ H(p, q) = - \sum_{x} p(x) \log q(x) $$
- このcross-entropyの目的は,推定された確率をを真のラベルの重みに集めること
- 確率的な解釈
- 下記の式は確率としてみなせる
- 画像が真のラベルに割り当てられ,によってパラメータ化されたもの $$ P(y_{i} | x_{i}; W) = \frac{\exp(f_{y_{i}})}{\sum_{j} \exp(f_{j})} $$
- 下記の式は確率としてみなせる
- 安定に計算させるための工夫
- などは大きい値になる
- 大きい値の割り算は不安定なので,工夫が必要となる
- 下記のは自由に決められるので,通常とする $$ \frac{\exp(f_{y_{i}})}{\sum_{j} \exp(f_{j})} = \frac{C \exp(f_{y_{i}})}{C \sum_{j} \exp(f_{j})} = \frac{\exp(f_{y_{i}} + \log C)}{\sum_{j} \exp(f_{j} + \log C)} $$
SVM vs. Softmax
- SVMはクラスのスコアとして,loss functionは,真のクラスのスコアがmargin分だけ高くなるよう促進する
- Softmax classifierは各クラススコアのlog probabilityをとる.そして正規化して,真のクラスのスコアが高くなることを促進する
(CS231nより引用)
- Softmaxではスコアの順序は意味があるが,大小はそこまで意味がない
- [1,−2,0]→[exp(1),exp(−2),exp(0)]=[2.71,0.14,1]→[0.7,0.04,0.26]
- [0.5,−1,0]→[exp(0.5),exp(−1),exp(0)]=[1.65,0.37,1]→[0.55,0.12,0.33]
- 実用上の大きな差はないが下記の違いはある
Summary
- kNN classifierと違って,このparametric approachの利点
- 一度パラメータを学習すればtraining setを捨てられる
- 新しいtest画像への予測は高速
- 2つのloss function(SVMとSoftmax)
- そのときのパラメータのセットが真のラベルを導けるかを調べる
- このパラメータの決め方は次のトピックとなる.
理解できなかった内容
The most appealing property is that penalizing large weights tends to improve generalization, because it means that no input dimension can have a very large influence on the scores all by itself.