- 本章では畳み込みニューラルネットワーク(convolutional neural network)を学ぶ
全体の構造
- これまでの全結合層
- [Affine, ReLU]を繰り返し,最後に[Affine,Softmax]
- CNN
- [Conv, ReLU, Pooling]を繰り返し,最後の方で[Affine, ReLU], 最後に[Affine, Softmax]
畳み込み層
- 全結合層の問題点
- 入力データの形状が無視されてしまう点
- たとえば画像の場合,縦横チャンネルの3方向を盛っているが,全結合相に入力するときは3次元を1次元にする必要がある.
形状には大切な空間情報が含まれているはず. - すべての入力データを同等のニューロンとして扱う.
- たとえば画像の場合,縦横チャンネルの3方向を盛っているが,全結合相に入力するときは3次元を1次元にする必要がある.
- 入力データの形状が無視されてしまう点
- 畳み込み層(convolutionレイヤ)では形状を維持する.
- 畳み込み層の入出力データを特徴マップ(feature map)
- 入力データを入力特徴マップ(input feature map)
- 出力データを出力特徴マップ(output feature map)
- パディング(padding)
- 入力データの周囲に固定のデータを埋める
- 出力サイズを調整するため
- ストライド(stride)
- フィルターを適用する位置の間隔のこと
- プーリング層
- プーリングは縦・横方向の空間を小さくする演算
プーリングの種類は色々ある
- Maxプーリング
- Averageプーリング
プーリング演算によってチャネル数は変化しない
- 微小な位置変化に対してロバスト
重みの可視化
- 層が深くなるについれ、抽出される情報はより抽象化されていく
- AlexNetでは、最初の層は単純なエッジに反応し、続いてテクスチャに反応し、そしてより複雑な物体のパーツへと反応する
代表的なCNN
- LeNet
- CNNの元祖
- 手書き数字認識を行うネットワーク
- 畳み込み層とプーリング層が連続し、最後に全結合層を経て結果が出力
- 現在のCNNとの違い
- 活性化関数
- LeNetではシグモイド関数
- 現在は主にReLU
- プーリング
- LeNetではサブサンプリングを行って中間データのサイズ縮小
- 現在ではMaxプーリングが主流
- 活性化関数
- AlexNet
- 畳み込み層とプーリング層が連続し、最後に全結合層を経て結果が出力
- LeNetとの相違点
- 活性化関数にReLUを用いる
- LRN(Local Response Normalization)という局所的正規化を行う層を用いる
- Dropoutを用いる