プーリング層 ぷーりんぐそう
プーリング層Pooling LayerMaxPoolingAverage PoolingCNNダウンサンプリング
プーリング層について教えて
簡単に言うとこんな感じ!
プーリング層は「特徴マップを縮小してギュッとまとめる層」だよ。4ピクセルの中で最大値だけ残す(最大プーリング)ことで、少しずれた位置にある特徴でも同じように反応できるんだ。解像度を半分にしながら「この辺りに猫の目がある」という情報は保つイメージだよ!
プーリング層とは
プーリング層(Pooling Layer) は、CNNにおいて特徴マップの空間サイズを縮小(ダウンサンプリング)する層です。小さな領域の値を集約(代表値を取る)ことで、①情報量の圧縮、②位置変動への耐性(位置不変性)、③過学習の防止を実現します。
プーリングの最大のメリットは「位置の不変性」 です。猫の目が画像の中で1ピクセルずれていても、プーリングによって同じ特徴として認識できるようになります。これにより「ほぼ同じ位置にある同じ特徴」を同一視できるため、実世界の画像(カメラ位置がわずかに違うなど)への汎化が向上します。
通常、畳み込み層の後に配置し、2×2のウィンドウでプーリングすると特徴マップの高さ・幅がそれぞれ半分になります。
プーリングの種類
| 種類 | 計算方法 | 特徴 |
|---|---|---|
| 最大プーリング(Max Pooling) | 領域内の最大値を取る | 最も強い特徴を保持。最もよく使われる |
| 平均プーリング(Average Pooling) | 領域内の平均値を取る | 全体的な傾向を保持 |
| グローバル平均プーリング(GAP) | 特徴マップ全体を平均して1次元ベクトルに | 全結合層の代替。パラメータ削減 |
| ストライド付き畳み込み | プーリングの代わりにstrideで縮小 | 学習可能。現代のCNNで増加中 |
最大プーリング(2×2、stride=2)の例:
入力(4×4) 出力(2×2)
┌──┬──┬──┬──┐ ┌──┬──┐
│1 │3 │2 │4 │ │3 │4 │
├──┼──┼──┼──┤ → ├──┼──┤
│5 │2 │1 │3 │ │5 │3 │
├──┼──┼──┼──┤ └──┴──┘
│2 │1 │3 │1 │
├──┼──┼──┼──┤
│4 │3 │1 │2 │
└──┴──┴──┴──┘
歴史と背景
- 1998年:LeCunのLeNetで平均プーリングが使われる
- 2012年:AlexNetで最大プーリングが採用され、以後標準的な選択肢に
- 2014年:Network in Network(NIN)でグローバル平均プーリングが提案
- 2015年以降:ResNetなど最新アーキテクチャではストライド付き畳み込みがプーリングを部分的に代替
プーリングありとなしの比較
| 項目 | プーリングあり | プーリングなし(ストライド畳み込み) |
|---|---|---|
| 位置不変性 | 高い | 低め |
| 学習可能 | なし(固定演算) | あり |
| 計算コスト | 低い | やや高い |
| 現在の主流 | Max Pooling + GAP | 両方使われる |
関連用語
- CNN(畳み込みニューラルネットワーク) — プーリング層が属する全体構造
- 畳み込み層 — プーリング層と組み合わせる前段の層
- 特徴マップ — プーリング層への入力・出力
- ストライド / パディング — プーリングに代わるダウンサンプリング手法