深層学習day2 Section5:最新のCNN
要点まとめ
AlexNet
入力は224x224x3、畳み込み層、Pooling層、全結合層を通して、1000の出力を得られる。
全結合層の処理
Flatten
13x13x256 のデータを単にベクトル化して1313256=43264のベクトルにする
Global Max Pooling
13x13x256のデータに対して、13x13のデータから最大値を取得して256のベクトルにする。
Global Average Pooling
13x13x256のデータに対して、13x13のデータから平均値を取得して256のベクトルにする。
実装演習
Alexnetを実装してmnistを試してみる。
結果は1,2回のEPOCHでかなり良い結果が得られてしまう。
確認テスト等考察
追加演習
シラバス範囲の各種CNNのまとめ
VGG
VGGチームの作成した、比較的単純なCNN。 代表的なVGG16では(畳み込み 2~3層 + MaxPooling層) を5つ繋げ、全結合層を4つ繋げて、16のNNで構成されている。
GoogLeNet
2014年のILSVRCの優勝モデル。「モジュール」を1つの単位として、Inspectionモジュールを連結して構成している。ネットワーク途中から分岐させたサブネットワークからもクラス分類を行い、途中から誤差逆伝播を行うことで、勾配消失を防いでいる。
ResNet
層の途中にショートカットを適用することで勾配消失問題を回避して、層を増やしても性能が出るようにしている。VGGが16層や19層、googLeNetの22層に対して最大152層までの構成がある。
MobileNet
モバイル機器等でも利用可能なように、少ない計算量である程度の性能が得られる目的で作成されたCNN。通常のCNNが空間方向とチャネル方向の畳込みを同時に行うのに対し、MobileNetでは最初に空間方向、次にチャネル方向の畳込みというように順に計算を行うことで、トータルの計算量を減らしている。
DenseNet
DenseNet はResNetを元に発展させた構成で、ResNetでは結合の一部にショートカットを用いていたのに対し、 DenseBlock内では前のレイヤは後方のすべてのレイヤの入力となるような構成となっている。 DenseBlock内では特徴量のサイズが変わらないが、間に畳み込みとPoolingを行う TransitionLayer を用いて特徴量サイズを変更するBlockを挟むことで、チャネル数と特徴量のサイズを適当なものに変更する。 Dense Block と Transition Layter とを複数つなぐ構成になっている。