コンピュータービジョン

プーリング層 ぷーりんぐそう

プーリング層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両方使われる

関連用語