본문 바로가기
ML & DL

[DL] 컨볼루션 신경망, CNN 이해하기

by 다람이도토리 2021. 6. 24.

(프로그래머스 Week9 - Day4)
추가참고자료 : https://wikidocs.net/62306

이미지 분류 등에 많이 쓰이는 CNN을 이해해보자.

CNN의 구조 

전체적 구조는 컨볼루션 층과, 풀링층의 반복이 된다. ( conv - relu - conv - relu - pool의 반복 등)

Convolution 이후, 주요 특징을 추출하는 방식을 통해, 최종 결과값을 추출하게 된다.

CNN과, Multi Layer Perceptron의 차이는 완전히 모든경우의 수를 연결하는지, 부분적으로만 연결하는지의 차이이다. 컨볼루션 연산을 틍해 분류에 더 좋은 특징들만을 추출해서 가지게 된다. 

특히, CNN의 경우는 인접한 정보의 특징을 효과적으로 인식할 수 있다.
그리고 Pool을 통해 특징을 요악하고 강화하게 된다.

 

컨볼루션층

해당하는 요소들끼리 곱하고 결과를 모두 더하는 선형 연산이다.

 

입력값에, 커널을 대보며, 원소들의 값의 곱을 모두 더하는 방식으로 계산하게 된다.
이 과정을 통해 출력층에서 얻게 되는 것은 특성 맵(feature map)이 된다.

한편, 이렇게 커널을 적용할 경우, 입력층의 크기보다 출력층의 크기가 줄어들게 되는데, 출력층의 크기를 유지시키기 위해 padding이라는 방법을 적용한다. padding이란, 입력층의 테두리를 0으로 둘러싸는 것이다.

또한, kernel이 몇 칸씩 이동할지를 결정할 수 있는데, 이를 stride라고 한다.

풀링층

풀링층은 특성 맵을 downsampling 하여, 맵의 크기를 줄이는데 주로 최대 풀링이나 평균 풀링 등을 활용하여 특성을 추출하는데 사용된다. 

 

텐서 적용

3차원 이상의 구조에 대해서도 적용된다. (예시 - RGB, 입력 차원이 N개면, 커널도 N개가 된다)