CNN Architectures VGGNet,AlexNet,GoogleNet,ResNetのケーススタディ
今回はCNNの様々なモデルについて書きとめようと思う。
VGGNetはそれまで首位を獲得していたAlexNetと比べ
より層を深くし、重みフィルターのサイズも小さくしている
Layer数 AlexNet 8 →VGGNet 16~19
重みフィルター(Conv層)
3×3, stride1,zero-padding1
Pooling
2×2,stride2
以前にも書き留めたが、重みフィルターを小さくすることには様々な利点がある。
7×7のConv層を1層重ねるのと、3×3のConv層を3層重ねるのは、見ている範囲(ピクセル数)は同じである。
しかし3×3のConv層を3層重ねると
非線形性をより表現でき、調整するパラメーター数を少なくすることができる。
GoogleNet
22Layer,
Inception Moduleという計算を効率よく行う工夫がなされている。
Inception Moduleでなされている工夫は、
Inputに対し複数の畳み込みを行い、次の層へと渡すということがなされる
しかし保持するParameterがとても大きくなってしまうため、
このように1×1の畳み込み層を挟んでから次の畳み込み層へ渡している。
この1×1の畳み込み層をbottleneck Layerと呼ぶ。
Fully ConnectedLayerは取り除かれている
さらに分類を行う処理を三つ取り入れている。
AlexNetに比べて約12分の1のparameter数である。
これらの工夫はBatch Normalizationが発明されていないためになされたものだが、BatchNormalizationを使えばこのような構造を取る必要はなくなるようだ。
ResNet
152層も重ねている
しかし普通層を重ねすぎると弊害が起こる
それは過学習を起こしてtestdataに対して低いスコアを出すということではなかった。
Optimization、重みの最適化の段階でうまく機能していないという問題点があった
解決策として
residualと呼ばれる考えを使用しているらしい(理解に時間がかかる、、、)
他にもこれらを組み合わせた構造があるようだ。