풀링(Pooling)은 신경망에서 사용되는 다운샘플링 연산으로, 특히 합성곱 신경망(CNN)에서 두드러지게 사용된다. 풀링 계층은 여러 벡터에 분산된 정보를 더 적은 수의 벡터로 집계하여 중복성을 줄이고 계산 및 메모리 요구량을 감소시킨다. 또한 이후 계층의 뉴런 수용 영역을 증가시켜 입력의 작은 변동에 대해 모델을 더 견고하게 만든다. 풀링은 일반적으로 합성곱 계층 이후에 적용되어 특징 맵의 공간 차원을 점진적으로 줄이면서 가장 중요한 정보를 보존한다.
2차원 CNN에서 풀링 계층은 입력 텐서 \(x \in \mathbb{R}^{H \times W \times C}\)를 받는데, 여기서 \(H\)는 높이, \(W\)는 너비, \(C\)는 채널 수이며, 출력 텐서 \(y \in \mathbb{R}^{H' \times W' \times C'}\)를 생성한다. 이 연산은 필터 크기(또는 커널 크기) \(f\)와 스트라이드 \(s\)라는 두 매개변수에 의해 제어된다. 경우에 따라 수평 및 수직 방향에 대해 별도의 필터 크기와 스트라이드가 사용되며, \(f_H, f_W, s_H, s_W\)로 표기된다. 출력 항목 \(y_{i,j,c}\)의 수용 영역은 해당 항목에 영향을 줄 수 있는 입력 항목들의 집합으로, 일반적으로 스트라이드에 의해 결정된 위치를 중심으로 한 \(f \times f\) 크기의 창이다.
최대 풀링
최대 풀링은 가장 일반적인 풀링 변형이다. 입력의 각 창에서 최대값을 선택한다. 공식적으로, 필터 크기 \(f\)와 스트라이드 \(s\)에 대해 위치 \((i,j,c)\)에서의 출력은 다음과 같이 정의된다:
\[\mathrm{MaxPool}(x|f,s)_{i,j,c} = \max(x_{is:is+f-1, js:js+f-1, c})\]
여기서 표기 \(is:is+f-1\)은 \(is\)부터 \(is+f-1\)까지의 인덱스 범위를 나타낸다. 수평 및 수직 스트라이드가 다른 경우, 공식은 \(x_{i s_H : i s_H + f_H - 1, j s_W : j s_W + f_W - 1, c}\)로 일반화된다. 최대 풀링은 각 지역 영역에서 가장 강한 활성화를 보존하는 데 효과적이며, 이는 가장자리나 질감과 같은 특징을 유지하면서 덜 중요한 세부 사항을 버리는 데 도움이 된다.
평균 풀링
평균 풀링은 최대값 대신 각 창에 있는 모든 값의 평균을 계산한다. 특히 분류 출력 전의 네트워크 최종 계층에서 최대 풀링 대신 사용되기도 한다. 평균 풀링은 특징 맵을 평활화하여 과적합을 줄일 수 있지만 날카로운 특징을 잃을 수 있다. 필터 크기가 전체 공간 차원과 같은 특수한 경우인 전역 평균 풀링은 채널당 단일 값을 출력하며, 2010년대 후반의 네트워크 설계와 같은 아키텍처에서 완전 연결 계층을 대체하는 데 자주 사용된다.
합성곱 아키텍처에서의 역할
풀링 계층은 많은 고전적인 CNN 아키텍처의 핵심 요소이다. 예를 들어, 2012년에 도입된 AlexNet 모델은 첫 번째, 두 번째, 다섯 번째 합성곱 계층 이후에 최대 풀링을 사용했다. 2014년에 개발된 VGG 네트워크는 각 합성곱 계층 블록 이후에 필터 크기 2와 스트라이드 2를 가진 최대 풀링을 사용했다. 이러한 설계는 분류 전에 특징 맵의 공간 크기를 224x224와 같은 차원에서 7x7로 줄여 더 적은 매개변수로 더 깊은 네트워크를 가능하게 했다.
대안 및 현대적 사용
현대 아키텍처에서는 풀링이 때때로 스트라이드 합성곱으로 대체되는데, 이는 스트라이드가 1보다 큰 합성곱을 사용하여 다운샘플링하는 방식이다. 생성 모델 및 일부 트랜스포머 기반 비전 시스템과 같은 모델에서 사용되는 이 접근 방식은 고정된 규칙 대신 네트워크가 다운샘플링 연산을 학습할 수 있게 한다. 그러나 풀링은 단순성과 효과성 덕분에 많은 실제 구현에서 여전히 일반적으로 사용된다. 트랜스포머 아키텍처에서 풀링은 덜 중심적이지만, 일부 비전 트랜스포머의 분류 헤드에서는 전역 평균 풀링이 여전히 사용된다.
이론적 속성
풀링은 제한된 정도의 변환 불변성을 제공한다. 로컬 창에 걸쳐 집계하기 때문에, 최대값이나 평균값이 창 내에 유지된다면 입력의 작은 이동이 동일한 출력을 생성할 수 있다. 이 속성은 특징의 정확한 위치보다 존재 여부가 더 중요한 객체 인식과 같은 작업에 유용하다. 수용 영역의 증가는 더 깊은 계층의 뉴런이 입력의 더 큰 영역에 반응할 수 있게 하여 네트워크가 계층적 패턴을 포착할 수 있게 한다. 풀링은 또한 매개변수와 연산 수를 줄여 이후 계층의 계산 비용을 감소시키며, 이는 GPU 및 가속기와 같은 하드웨어에서 훈련하는 데 중요하다.