3.7 합성곱과 풀링(Convolution and Pooling)

tmdwo1016·2026년 9월 27일

합성곱 신경망은 합성곱층(Convolution layer)과 풀링층(pooling layer)로 구성

CNN 예시를 보면 conv block 단계 마다 conv, ReLU, pooling 단계를 거치며 연산을 수행함. conv와 ReLU 연상을 수행하는 과정을 합성곱 층이라 하며, Pooling 을 pooling 층이라고 함.

1. 합성곱 신경망 대두

2차원 텐서인 행렬로 표현 한 행태(아래 그림)

사람이 보기에 쉽게 판단이 가능하지만 픽셀마다 가진 값이 상잉하므로 완전히 다른 갑을 가짐. 또한 이미지는 다양한 변형이 존재하기에 다층퍼셉트론은 몇가지 픽셀만 달라져도 예측에 민감하게 반응하게 됨.


2차원 텐서를 1차원 배열로 나타내느 것으로 1차원상에서는 어떤 구조와 형태인지 구분이 힘들다. 이는 공간적 구조 정보가 유실된 상태로서 각 픽셀별 유사도의 정보다 사라졌기 때문에 이를 보존하며 학습하는 방법이 필요햇고, 그것이 합성곱 신경망 이다.

2. 채널

이미지는 (높이, 너비, 채널) 이라는 3차원 텐서이다.

  • 높이 : 이미지의 세로 방향 픽셀 수
  • 너비 : 이미지의 가로 방향 픽셀 수
  • 채널 : 색 성분 (흑백 이미지느 채널 1, 각 픽셀은 0 ~ 255 값을 가짐)

3. 합성곱 연산 (Convloution operatoin)

합성곱층은 합성곱 연산을 통해 이미지의 특징을 추출하는 역할을 수행.

  • 합성곱 = Kernel or Filter
    -> n x m 크기의 의 행렬로(높이 x 너비)크기의 이미지를 훓으면서 겹처지는 부분의 이미지와 커널의 원소 값을 곱해서 모두 더한 값을 출력
    일반적으로 3x3, 5x5 를 사용


위와 같은 연산을 수행하며 총 9번의 연산과정 및 단계를 거치게 되면 특성맵(feature map)이 나오게 됨. 여기서 커널의 크기는 사용자가 조절 가능하며, 이동범위도(stride 스트라이드) 조절이 가능하다.

4. 패딩 (Padding)

위에서 특성을 추출하는 단계를 보면 연산 결과로 얻는 특성맵은 입력보다 크기가 작아지는 특징을 가진다. 합성곱 연산에도 크기를 입력과 동일하게 유지하도록 하는 것을 패딩(Padding)이라고 한다.

패딩을 통해 가장자리에 지정된 개수의 폭만큼 행과 열을 추가해주는 것으로 주로 0값을 추가해주는 zero-padding을 사용한다.

5. 가중치와 편향


합성곱 연산을 수행하여 (2x2 인 커널, 스트라이드 1)이라고 했을 때 총 2x2 크기의 특성맵이 형성되고, 이 특성맵은 인공신경망으로 표현하게 되면 은닉층의 개념과 유사해질 수 있다. 이때 각 커널과 특성을 고융하는 입력값과 매핑됨에 따라 다층 퍼셉트론에서 전체를 매핑시키는 것 대비 적은 에너지로 효율을 낼 수 있다.

5-1. 편향 추가

편향을 추가해 특성맵을 만들 수 도 있다.

6. 특성 맵의 크기 계산 방법

입력의 크기와 커널의 크기, 그리고 스트라이드의 값만 안다면 합성곱 연산의 결과인 특성맵의 크기를 구할 수 있다.

7. 다수의 채널을 가질 경우 합성곱 연산(3차원 텐서의 합성곱 연산)

실제로 합성곱 연산의 입력은 다수의 채널을 가진 이미지 또는 이전 연산으 ㅣ결과로 나온 특성 맵일 수 있다. 만약 다수의 채널을 가진 입력데이터를 가지고 합성곱 연산을 구한다면 커널의 채널수도 입력 채널 수만큼 존재해야한다.

8. Pooling

일반적으로 합성곱 (합성곱 연산 + 활성화 함수 다음에 풀링츠을 추가하는 것이 일반적이다. 풀링층에서는 특성 맵을 다운샘플링 하여 특성 맵의 크기를 줄이는 풀링 연산이 이루어진다.

  • max pooling(최대값)
  • average pooling(평균값)

여기서도 커널과 스트라이드의 개념이 존재하며 스트라이드가 2일 경우 2x2 크기 커널로 맥스풀링 연산 수행했을 때 해당 영역에서 최대값만 추출하는 다운샘플링 방식이다.

profile
할 게 많은데 놀거야?

0개의 댓글