じぶんメモ

プログラミングのメモ、日常のメモとか。

【ゼロから作るDeep Learning】要点まとめ 第7章

7章 - 畳み込みニューラルネットワーク

CNN(Convolutional Neural Network)は、畳み込み層、プーリング層からなる学習方法
基本的にはconv→relu→conv→relu→...→pool→conv→relu→conv→relu→...→pool→affine→softmaxの流れ
conv→relu or conv→relu→poolが隠れ層になるイメージ。

このサイトがとてもわかり易い。
http://postd.cc/how-do-convolutional-neural-networks-work/

畳み込み層

  • 畳み込み層は、用意された入力データ(画像データなど)をフィルタ(重み)を使って畳み込む
  • 入力データ(縦×横×チャネル→RGB画像なら3チャネル)に対して、フィルタを少しずつづらしながら行列演算をしていく。
  • 入力データのチャネル数とフィルタのチャネル数は合わせておく必要がある。 例) 入力データxは(32,32,3)、フィルタwは(5,5,3)
  • 入力データxは(32,32,3)、フィルタwは(5,5,3)を1幅ずつスライドさせていくと、出力される値は(28,28,1)のデータになる。
  • フィルタの数が増えれば(4次元配列)、出力されるデータのチャネル数も同じ数だけ増える。
  • 例) 入力データx(32,32,3)、フィルタw(10,5,5,3)(10はフィルタの数)を畳み込むと出力される値は(28,28,10)のデータになる。
  • 入力データxを行列に変換 × フィルタwを行列に変換 + バイアス →reluに突っ込む → 再度4次元データに変換して次の隠れ層へ送る。
  • ストライド == スライド幅
  • パディング == スライドした時にはみ出る箇所のデータを0として扱う

プーリング層

  • 縦横の幅を決めてその範囲内での最大値を取る(maxプーリング)プーリングを行う層。
  • 大きな画像を、重要な情報は残しつつ縮小する利点がある。
  • maxプーリングの他にもaverageプーリングがある。