「ゼロから作るDeepLearning」第7章前半ざっくりまとめ(7.3章「プーリング」まで)2017.2.20 たのっち @dproject21
View Slide
この本のざっくりまとめです• 「ゼロから作るDeepLearning」斎藤 康毅 著オライリー・ジャパンより2016年9⽉ 発⾏https://www.oreilly.co.jp/books/9784873117584/• 公式サポートページhttps://github.com/oreilly-japan/deep-learning-from-scratch• 第7章「畳み込みニューラルネットワーク」前半部です。(後半の実装については、次回、資料作ります。)https://deeplearning-yokohama.connpass.com/
第6章までやってきたニューラルネットワークは、1次元データ(⽩⿊データ)を扱うのに向いていた。畳み込みニューラルネットワークとは⼊⼒データAffine ReLU Affine ReLU Affine ReLU Affine Softmax第7章で取り上げる畳み込みニューラルネットワークは、3次元データ(カラー画像データ)を扱えるニューラルネットワーク。⼊⼒データConv ReLU PoolingReLU Affine SoftmaxConv ReLU Pooling Conv ReLUAffine
畳み込みニューラルネットワークとは畳み込みニューラルネットワークでは、・3次元データを扱う「畳み込み層(Convolutionレイヤ)」・特徴抽出を⾏う「プーリング層(Poolingレイヤ)」が新たに加わる。・前半ではConv-ReLU-(Pooling)の組み合わせを⽤いる・出⼒に近い層ではAffine-ReLUの組み合わせを⽤いる・出⼒層ではAffine-Softmaxの組み合わせを⽤いる⼊⼒データConv ReLU PoolingReLU Affine SoftmaxConv ReLU Pooling Conv ReLUAffine
畳み込み層とは「畳み込み演算」(画像処理で⾔うところの「フィルタ演算」)を⾏う。⼊⼒データ(4, 4)に対してフィルタ(3, 3)の積和演算を⾏う。1 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛ 15 166 15⼊⼒データ フィルタ 出⼒
畳み込み層とは1 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛ 15 166 151 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛ 15 166 15⼊⼒データに対して、フィルタを⼀定の間隔でスライドさせながら、演算を⾏う。
畳み込み層とはバイアスは、フィルタ適⽤後のデータに対して加算する。1 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛ 15 166 15⼊⼒データ フィルタ 出⼒+ 18 199 183バイアス
畳み込み層とは出⼒サイズを整えるために「パディング」を⽤いる。⼊⼒データの周囲を固定データ(0など)で埋める。畳み込み演算を何度も⾏うとサイズが⼩さくなっていき、演算不能な状態になっていく。これを回避するためにパディングを持ちいる。1 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛⼊⼒データ フィルタ 出⼒7 12 10 24 15 16 1010 6 15 68 10 4 3
畳み込み層とはフィルタの移動間隔を「ストライド」と呼ぶ。ストライドを⼤きくすると、出⼒サイズは⼩さくなる。パディングを⼤きくすると、出⼒サイズは⼤きくなる。1 2 3 00 1 2 33 0 1 22 3 0 12 0 10 1 21 0 2⊛⼊⼒データ フィルタ 出⼒7 12 10 24 15 16 1010 6 15 68 10 4 3
畳み込み層とは3次元データの畳み込みを⾏う際は、チャンネルの数だけフィルタを⽤意して、畳込み演算を⾏う。⊛⼊⼒データ フィルタ 出⼒
畳み込み層とは各チャンネルごとに出⼒(特徴マップ)を⽤意したい場合、複数のフィルタを⽤いる。⊛⼊⼒データフィルタ出⼒
プーリング層とはプーリングは縦・横⽅向の空間を⼩さくする演算。あるサイズ(ここでは2×2)の領域から最⼤値を取って集約していく。※最⼤値だけでなく平均も扱えるが、画像認識の場合は主に最⼤値で⾏う。1 2 3 00 1 2 33 0 1 22 3 0 121 2 3 00 1 2 33 0 1 22 3 0 12 341 2 3 00 1 2 33 0 1 22 3 0 12 31 2 3 00 1 2 33 0 1 22 3 0 12 34 2