Pooling

CNN의 전체적인 그림을 시각화해보면 위의 그림과 같습니다.
Pooling Layer의 목적
ConvNet은 종종 pooling layer를 사용합니다.
Representation 크기가 감소해서 속도가 향상되고, 검출된 feature를 더 robust하게 해줍니다.
Max Pooling


4 x 4 input으로 2 x 2 output이 되는데, $f = 2, s = 2$ 이라면 아래와 같이 연산이 이루어집니다.
- Input을 $f$ x $f$ region들로 나눈다 (stride $s$로 이동).
- 각 region에서 최대값을 취한다.
- 각 region의 max들로 output을 구성
좌상단 1, 3, 5, 9 중에서 최댓값은 9이기 때문에 9가 도출이 되는 방식이에요. 각 region들도 같은 방식으로 각 region에서 최댓값을 각 원소로 갖게 됩니다.
이 4 x 4를 어떤 layer의 activation이라고 한다면
위에서 큰 값 즉, 9 라는 수는 그 region에서 어떤 feature(e.g. vertical edge, cat eye etc.)가 강하게 검출되었다고 해석할 수 있어요.
작은 값은 해당 feature가 그 region에 존재하지 않다고 볼 수 있겠죠.
Region 내 어디에 있든, 어떤 feature가 검출되기만 하면 그 정보를 보존하자
이게 Max pooling 연산의 의미입니다.
하지만 엄밀히 말하면 실제 max pooling이 잘 작동하는 진짜 이유를 정확히 아는 사람이 있는지는 미지수입니다. 그저 수많은 실험에서 잘 작동하는 것이 발견되어 사용되고 있다는 것이 가장 합리적인 답변이라 할 수 있어요.
Pooling의 Hyperparameter와 학습 가능 여부
Hyperparameter: $f$ (filter size), $s$ (stride)
Pooling layer에는 학습할 parameter가 없습니다. Hyperparameter $f$, $s$를 한 번 정하면 나머지는 fixed function, Gradient Descent가 변화시킬 것이 없어요.
3D 입력에 대한 Pooling
Input이 5 x 5 $n_C$(3D)라면, output은 3 x 3 x $n_C$.
Channel 별로 독립적으로 max pooling을 적용합니다. Pooling은 channel 수를 바꾸지 않는다는 점 꼭 기억합시다.
Average Pooling
Max 대신 평균을 취하는 Pooling

요즘은 max pooling이 더 흔합니다. Average pooling은 주로 매우 깊은 network에서 representation을 collapse할 때 사용됩니다.
Pooling Output 크기 공식
- Input: $n_H$ x $n_W$ x $n_C$ 이고 Padding 0 가정.
$$\left\lfloor \frac{n_H - f}{s} + 1 \right\rfloor \times \left\lfloor \frac{n_W - f}{s} + 1 \right\rfloor \times n_C$$
Channel 수는 변하지 않습니다.
'CS & AI > Computer Vision' 카테고리의 다른 글
| <영상처리> Image Filtering (0) | 2026.06.01 |
|---|---|
| <영상처리> Point Processing (0) | 2026.05.23 |
| [Coursera] CNN - Padding & Stride / Deep Learning Specialization (0) | 2026.05.13 |
| [Coursera] CNN & Computer Vision / Deep Learning Specializaton (0) | 2026.05.05 |
| [Coursera] CNN - Edge Detection / Deep Learning Specialization (0) | 2026.05.05 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!