Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゼロから作るDeepLearning 第7章前半ざっくりまとめ

dproject21
February 20, 2017

ゼロから作るDeepLearning 第7章前半ざっくりまとめ

dproject21

February 20, 2017
Tweet

More Decks by dproject21

Other Decks in Science

Transcript

  1. 「ゼロから作るDeepLearning」
    第7章前半ざっくりまとめ
    (7.3章「プーリング」まで)
    2017.2.20 たのっち @dproject21

    View full-size slide

  2. この本のざっくりまとめです
    • 「ゼロから作る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/

    View full-size slide

  3. 第6章までやってきたニューラルネットワークは、
    1次元データ(⽩⿊データ)を扱うのに向いていた。
    畳み込みニューラルネットワークとは
    ⼊⼒
    データ
    Affine ReLU Affine ReLU Affine ReLU Affine Softmax
    第7章で取り上げる畳み込みニューラルネットワークは、
    3次元データ(カラー画像データ)を扱えるニューラルネットワーク。
    ⼊⼒
    データ
    Conv ReLU Pooling
    ReLU Affine Softmax
    Conv ReLU Pooling Conv ReLU
    Affine

    View full-size slide

  4. 畳み込みニューラルネットワークとは
    畳み込みニューラルネットワークでは、
    ・3次元データを扱う「畳み込み層(Convolutionレイヤ)」
    ・特徴抽出を⾏う「プーリング層(Poolingレイヤ)」
    が新たに加わる。
    ・前半ではConv-ReLU-(Pooling)の組み合わせを⽤いる
    ・出⼒に近い層ではAffine-ReLUの組み合わせを⽤いる
    ・出⼒層ではAffine-Softmaxの組み合わせを⽤いる
    ⼊⼒
    データ
    Conv ReLU Pooling
    ReLU Affine Softmax
    Conv ReLU Pooling Conv ReLU
    Affine

    View full-size slide

  5. 畳み込み層とは
    「畳み込み演算」(画像処理で⾔うところの「フィルタ演算」)を⾏う。
    ⼊⼒データ(4, 4)に対してフィルタ(3, 3)の積和演算を⾏う。
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    ⼊⼒データ フィルタ 出⼒

    View full-size slide

  6. 畳み込み層とは
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    ⼊⼒データに対して、フィルタを⼀定の間隔でスライドさせながら、
    演算を⾏う。

    View full-size slide

  7. 畳み込み層とは
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    ⼊⼒データに対して、フィルタを⼀定の間隔でスライドさせながら、
    演算を⾏う。

    View full-size slide

  8. 畳み込み層とは
    バイアスは、フィルタ適⽤後のデータに対して加算する。
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2
    ⊛ 15 16
    6 15
    ⼊⼒データ フィルタ 出⼒
    + 18 19
    9 18
    3
    バイアス

    View full-size slide

  9. 畳み込み層とは
    出⼒サイズを整えるために「パディング」を⽤いる。
    ⼊⼒データの周囲を固定データ(0など)で埋める。
    畳み込み演算を何度も⾏うとサイズが⼩さくなっていき、演算不能な状態に
    なっていく。これを回避するためにパディングを持ちいる。
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2

    ⼊⼒データ フィルタ 出⼒
    7 12 10 2
    4 15 16 10
    10 6 15 6
    8 10 4 3

    View full-size slide

  10. 畳み込み層とは
    フィルタの移動間隔を「ストライド」と呼ぶ。
    ストライドを⼤きくすると、出⼒サイズは⼩さくなる。
    パディングを⼤きくすると、出⼒サイズは⼤きくなる。
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 0 1
    0 1 2
    1 0 2

    ⼊⼒データ フィルタ 出⼒
    7 12 10 2
    4 15 16 10
    10 6 15 6
    8 10 4 3

    View full-size slide

  11. 畳み込み層とは
    3次元データの畳み込みを⾏う際は、チャンネルの数だけフィルタを⽤意して、
    畳込み演算を⾏う。

    ⼊⼒データ フィルタ 出⼒

    View full-size slide

  12. 畳み込み層とは
    各チャンネルごとに出⼒(特徴マップ)を⽤意したい場合、複数のフィルタを
    ⽤いる。

    ⼊⼒データ
    フィルタ
    出⼒

    View full-size slide

  13. プーリング層とは
    プーリングは縦・横⽅向の空間を⼩さくする演算。
    あるサイズ(ここでは2×2)の領域から最⼤値を取って集約していく。
    ※最⼤値だけでなく平均も扱えるが、画像認識の場合は主に最⼤値で⾏う。
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 3
    4
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 3
    1 2 3 0
    0 1 2 3
    3 0 1 2
    2 3 0 1
    2 3
    4 2

    View full-size slide