풀링(Pooling)이란? CNN이 특징맵을 작게 줄이는 방법
지난 글에서는 합성곱 연산으로 만든 특징맵(Feature Map)이 이미지의 어느 위치에서 특정 특징이 강하게 나타났는지를 기록한다고 설명했습니다. 그런데 CNN은 이 특징맵을 그대로 다음 층에 전달하기도 하지만, 중간에 크기를 줄여 핵심 정보만 남기기도 합니다.
이때 사용하는 대표적인 연산이 풀링(Pooling)입니다. 이번 글에서는 풀링이 특징맵을 어떻게 줄이는지, 최대 풀링과 평균 풀링은 무엇이 다른지, 그리고 풀링을 사용할 때 무엇을 조심해야 하는지 쉽게 알아보겠습니다.
풀링(Pooling)이란?
풀링은 특징맵의 작은 영역을 하나의 대표값으로 바꾸는 연산입니다. 예를 들어 4×4 크기의 특징맵을 2×2 영역씩 나누고 각 영역에서 하나의 값만 뽑으면, 결과는 2×2 크기로 줄어듭니다.
사진을 축소해 작은 미리보기를 만드는 과정과 비슷합니다. 모든 픽셀을 그대로 보존하지는 않지만, 전체적인 윤곽과 중요한 패턴은 알아볼 수 있도록 남기는 것입니다. CNN에서는 원본 이미지보다 합성곱을 거쳐 만들어진 특징맵에 풀링을 적용하는 경우가 많습니다.
풀링은 어떻게 작동할까?
풀링에도 특징맵을 훑어보는 작은 창이 필요합니다. 흔히 2×2 크기의 창을 사용하고, 창을 두 칸씩 이동하는 스트라이드(Stride) 2를 적용합니다.
- 특징맵에서 2×2 영역을 선택합니다.
- 그 안의 값들을 정해진 규칙으로 하나의 값으로 바꿉니다.
- 창을 다음 위치로 이동해 같은 계산을 반복합니다.
- 각 영역에서 얻은 대표값을 모아 더 작은 특징맵을 만듭니다.
2×2 창과 스트라이드 2를 사용하면 가로와 세로 길이가 대체로 절반이 됩니다. 예를 들어 28×28 특징맵은 14×14로 줄어들 수 있습니다. 다만 입력 크기, 창 크기, 스트라이드와 패딩 설정에 따라 정확한 출력 크기는 달라집니다.
최대 풀링과 평균 풀링의 차이
최대 풀링(Max Pooling)
최대 풀링은 작은 영역 안에서 가장 큰 값을 대표값으로 선택합니다. 특징맵의 큰 값은 필터가 찾으려는 선이나 모서리 같은 특징에 강하게 반응했다는 뜻입니다. 따라서 최대 풀링은 가장 뚜렷한 반응을 남기는 데 유리합니다.
예를 들어 2×2 영역의 값이 1, 3, 4, 6이라면 최대 풀링의 결과는 6입니다. 나머지 값은 출력에 직접 남지 않습니다.
평균 풀링(Average Pooling)
평균 풀링은 영역 안에 있는 값의 평균을 계산합니다. 같은 값이 1, 3, 4, 6이라면 결과는 3.5입니다. 가장 강한 반응 하나만 남기기보다 주변의 전체적인 반응을 부드럽게 요약하는 방식입니다.
일반적인 이미지 분류 CNN의 중간층에서는 최대 풀링을 자주 볼 수 있지만, 목적과 모델 구조에 따라 평균 풀링도 사용됩니다. 특히 특징맵 전체의 평균을 채널마다 하나씩 계산하는 전역 평균 풀링(Global Average Pooling)은 분류 모델의 마지막 부분에서 널리 활용됩니다.
풀링을 사용하는 이유
1. 계산량을 줄일 수 있습니다
특징맵의 가로와 세로를 절반으로 줄이면 위치의 수는 약 4분의 1이 됩니다. 다음 합성곱 층이 처리할 데이터가 줄어들기 때문에 계산량과 메모리 사용량을 낮출 수 있습니다.
2. 작은 위치 변화에 덜 민감해질 수 있습니다
사진 속 물체가 몇 픽셀 정도 움직여도 같은 풀링 영역 안에서 강한 특징이 유지될 수 있습니다. 덕분에 CNN은 특징의 정확한 좌표에만 매달리기보다 그 특징이 근처에 존재한다는 사실에 집중할 수 있습니다.
3. 중요한 특징을 간결하게 전달합니다
최대 풀링은 여러 반응 가운데 강한 값을 남깁니다. 이전 글에서 만든 특징맵이 “어디에서 특징이 얼마나 강했는지”를 기록한다면, 최대 풀링은 그 기록을 더 작은 지도에 요약한다고 볼 수 있습니다.
풀링에도 한계가 있습니다
크기를 줄이는 과정에서는 일부 위치 정보와 세부 정보가 사라집니다. 이미지 분류에서는 큰 문제가 아닐 수 있지만, 물체의 정확한 경계나 픽셀 단위 위치가 중요한 이미지 분할 같은 작업에서는 지나친 축소가 성능에 불리할 수 있습니다.
또한 모든 CNN이 반드시 풀링 층을 사용하는 것은 아닙니다. 최근의 여러 구조는 스트라이드가 큰 합성곱으로 특징맵 크기를 줄이거나, 과제에 따라 축소 방법을 다르게 설계합니다. 풀링은 매우 유용한 선택지이지만 CNN의 필수 규칙은 아닙니다.
합성곱과 풀링은 무엇이 다를까?
- 합성곱: 학습된 필터를 이용해 선, 모서리, 질감 같은 특징을 찾아 새로운 특징맵을 만듭니다.
- 풀링: 일정한 규칙으로 특징맵의 작은 영역을 요약해 공간 크기를 줄입니다.
쉽게 말하면 합성곱은 “무엇이 있는지 찾는 과정”이고, 풀링은 “찾은 정보를 더 작고 다루기 쉽게 정리하는 과정”입니다. 일반적인 최대 풀링과 평균 풀링에는 합성곱 필터처럼 학습으로 조정되는 가중치가 없습니다.
한눈에 정리하기
- 풀링은 특징맵의 작은 영역을 하나의 대표값으로 줄이는 연산입니다.
- 최대 풀링은 가장 큰 값을, 평균 풀링은 값들의 평균을 선택합니다.
- 특징맵이 작아지면 계산량과 메모리 사용량을 줄일 수 있습니다.
- 작은 위치 변화에 덜 민감해질 수 있지만 세부 위치 정보는 손실될 수 있습니다.
- 모든 CNN이 풀링을 반드시 사용하는 것은 아닙니다.
지금까지 필터, 합성곱, 특징맵, 풀링을 차례로 살펴봤습니다. 이제 각각의 부품이 어떤 역할을 하는지 알게 되었으니, 다음 글에서는 이 요소들이 실제 CNN 안에서 어떤 순서로 연결되는지 CNN 전체 구조를 통해 정리해보겠습니다.


댓글
댓글 쓰기