3種のラベルのうち1種が付与されている点列データを、
linear classifierと2層NNでそれぞれ分類させてみる。
Stanfordのオンライン教材CS231n Convolutional Neural Networks for Visual Recognitionを参考にしている。
Linear Classifier
入力データとパラメータ
非線形な領域をつくるように点群を作成 1種ごとに100点の訓練データがある。
入力データに対して、重みとバイアスを施し、
Softmax関数を出力とした。
Softmax関数なので、交差エントロピー誤差を最小にするようなパラメータをSGDで求めた。
分類結果
training dataに対して、正しく分類できたかを評価すると56%という結果となった。
(test dataを分けて作っていなことに注意)
下図でそれが一目瞭然だ。
下図の背景の色は、linear classifierで領域全体を3種に分類した結果領域を示しており、
点群は入力データで、その色は種類を指している。
背景と点の色が一致していれば、分類成功であり、
不一致であれば、上手くいっていないことを示している。
当然ながら、Linear Classifierの名の通り、
領域を線形分類しているため、非線形な入力データには対応できていない。
2層NeuralNetwork
基本的な方針はLinear Classifierのときと同じ。
層が増えるのでforward passとbackpropagationの計算が倍になる。
入力データ
ネットワークの構成
注意点としては、
- regularization lossの計算で、二層分の重みを加えること
- forward passでReLU関数で値を0にされた項は、backpropのときに勾配を0にすること
分類結果
training dataに対して、正しく分類できたかの評価は100%となった。
分類領域の変化
NNを学習させる過程で、領域がぐにょぐにょ動く様子は面白い。 (youtube:https://www.youtube.com/watch?v=yGihMqZZ13w&feature=youtu.be)
Loss functionの推移
Accuracyの推移