【ゼロから作るDeep Learning】7章 畳み込みニューラルネットワーク

全体の構造

  • これまでの全結合層
    • [Affine, ReLU]を繰り返し,最後に[Affine,Softmax]
  • CNN
    • [Conv, ReLU, Pooling]を繰り返し,最後の方で[Affine, ReLU], 最後に[Affine, Softmax]

畳み込み層

  • 全結合層の問題点
    • 入力データの形状が無視されてしまう点
      • たとえば画像の場合,縦横チャンネルの3方向を盛っているが,全結合相に入力するときは3次元を1次元にする必要がある.
        形状には大切な空間情報が含まれているはず.
      • すべての入力データを同等のニューロンとして扱う.

  • 畳み込み層(convolutionレイヤ)では形状を維持する.
    • 畳み込み層の入出力データを特徴マップ(feature map)
    • 入力データを入力特徴マップ(input feature map)
    • 出力データを出力特徴マップ(output feature map)

  • パディング(padding)
    • 入力データの周囲に固定のデータを埋める
    • 出力サイズを調整するため

  • ストライド(stride)
    • フィルターを適用する位置の間隔のこと

  • プーリング層
    • プーリングは縦・横方向の空間を小さくする演算
    • プーリングの種類は色々ある

      • Maxプーリング
      • Averageプーリング
    • プーリング演算によってチャネル数は変化しない

    • 微小な位置変化に対してロバスト

重みの可視化

  • 層が深くなるについれ、抽出される情報はより抽象化されていく
    • AlexNetでは、最初の層は単純なエッジに反応し、続いてテクスチャに反応し、そしてより複雑な物体のパーツへと反応する

代表的なCNN

  • LeNet
    • CNNの元祖
    • 手書き数字認識を行うネットワーク
    • 畳み込み層とプーリング層が連続し、最後に全結合層を経て結果が出力
    • 現在のCNNとの違い
      • 活性化関数
      • プーリング
        • LeNetではサブサンプリングを行って中間データのサイズ縮小
        • 現在ではMaxプーリングが主流

  • AlexNet
    • 畳み込み層とプーリング層が連続し、最後に全結合層を経て結果が出力
    • LeNetとの相違点
      • 活性化関数にReLUを用いる
      • LRN(Local Response Normalization)という局所的正規化を行う層を用いる
      • Dropoutを用いる

本章で学んだこと

  • CNNは、これまでの全結合層のネットワークに対して、畳み込み層とプーリング層が新たに加わる
  • 畳み込み層とプーリング層は、im2col(画像を行列に展開する関数)を用いるとシンプルで効率の良い実装ができる
  • CNNの可視化によって、層が深くなるにつれて高度な情報が抽出されていく様子が分かる
  • CNNの代表的なネットワークには、LeNetとAlexNetがある
  • ディープラーニングの発展に、ビッグデータGPUが大きく貢献している

yusuke-ujitoko.hatenablog.com