본문 바로가기
AI/딥러닝

합성곱 신경망(Convolutional Neural Network, CNN)이란?

by 남오공 2022. 5. 16.
728x90

합성곱 신경망 (Convolutional Neural Network, CNN) 은 왜 필요한 것일까?

  • 기존에 배운 DNN(Deep Neural Network)은 커다란 해상도의 이미지들을 분석할 때 데이터를  1차원 형태로 변환하여 하나의 row로 표현하기가 쉽지가 않았다.
  • 반면 CNN은 이미지의 한 픽셀과 주변 픽셀들의 연관관계를 유지시켜 영상, 사진과 같은 데이터 처리를 할 때 발생하는 문제들을 해결하여 공간적 특성을 유지한채 학습을 할 수 있다. 
  • 간단히 말해 이미지를 인식하기 위한 패턴을 찾는데 유용하기 때문에 자주 사용된다.

어떻게 CNN은 이미지의 주변 픽셀들 분석하는걸까?

CNN은 크게 특징 추출 단계(Feature Extraction)와 이미지 분류 단계(Classification)으로 이루어진다.

첫번째로 특징 추출 단계에 대해 공부하기 위해 합성곱(convolution)에 대한 이해가 필요한데,

우선 합성곱이 어떠한 순서로 진행되는지 아래 예시를 보자

합성곱에 사용할 필터

우선 필터(Filter = kernel)은 CNN에서 자동으로 적합한 필터를 생성해 준다. 위의 이미지는 예시로 들기위한 필터이다.

합성곱이 진행되는 과정

 

입력되어진 이미지에 합성곱 필터의 크기(3*3) 대로 오른쪽으로 차례로 움직이며 이미지 부분들의 특징들을 읽고
Convolved Feature에 정보를 저장하여 feature map을 만들어 낸다.

이때 위의 gif처럼 오른쪽으로 한 칸씩 움직일 것인가, 두 칸씩 움직일 것인가 조정하는 항목이 stridge(보폭)이라고 하며

당연하게도 출력되어진 Feature map의 크기는 필터와 보폭의 영향으로 입력데이터보다 작아지게 된다.

 

하지만 출력데이터의 크기를 조정할 수 있는 방법이 있는데 이를 패딩(Padding)이라고 하며 이해를 위해 아래 예시를 보자

Zero-padding이 적용되어지는 모습

위 그림과 같이 0으로 둘러쌓아 외부에 특정한 값을 채우는 방법을 제로 패딩(Zero-padding)이라고 하며,

이미지의 특징이나 분해능에 영향을 끼치지 않기 때문에 자주 사용되어진다고 한다.

 

만약 이미지의 크기를 유지하고 계속 연산하게 된다면 연산량이 기하급수적으로 늘어날 것이다.
이에 이미지의 크기를 적당하게 줄이고 특정한 feature를 찾을 수 있어야 하는데
그 역할을 풀링(Pooling) 레이어에서 연산하게 된다.  아래 사진을보자.

CNN의 전체 흐름 Polling Layer의 설명을 위해 첨부하였다.

Convolved layer 이후 Pooling Layer가 있는것을 볼 수 있다.  

그렇다면 풀링 레이어는 어떤 방식이 있을까?

풀링에는 크게 세가지 방법이 있으며 아래 예시를 통해 알아보자.

  • 최대 풀링(Max Polling)은 정해진 범위 내에서 가장 큰 값을 꺼내오는 방식
  • 평균 풀링(Average Pooling)은 정해진 범위 내에 있는 모든 요소의 평균을 가져오는 방식
  • 최소 풀링(Min Pooling)은 정해진 범위 내에서 가장 작은 값을 꺼내오는 방식
  • CNN에서 자주 사용되는 방식은 최대 풀링(Max Pooling)인데, 그 이유는 뉴런이 가장 큰 신호에 반응하는 것과 유사하기에 노이즈가 감속하고 속도가 증가하고 영상의 분별력 또한 증가한다고 한다.
  • 또한 풀링 레이어는 학습해야 할 가중치, 파라미터가 없으며 채널 수가 변하지 않으며, 행렬의 크기가 감소한다 특징이 있다.

 

댓글