KoreanFoodie's Study

딥러닝 튜토리얼 7-1강, 합성곱 신경망(CNN)의 개념 - 밑바닥부터 시작하는 딥러닝 본문

Deep Learning/밑바닥부터 시작하는 딥러닝 1

딥러닝 튜토리얼 7-1강, 합성곱 신경망(CNN)의 개념 - 밑바닥부터 시작하는 딥러닝

GoldGiver 2020. 3. 8. 22:38

해당 포스팅은 한빛 미디어에서 출판한 '밑바닥부터 시작하는 딥러닝'이라는 교재의 내용을 따라가며 딥러닝 튜토리얼을 진행하고 있습니다. 관련 자료는 여기에서 찾거나 다운로드 받으실 수 있습니다.


전체 구조

우선 CNN의 네트워크 구조를 살펴보자. CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합아혀 만들 수 있다. 다만, 합성곱 계층(convolutional layer)과 풀링 계층(pooling layer)가 새롭게 등장한다.

지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었다. 이를 완전연결(fully-connected)라고 하며, 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현했다. Affine 계층을 사용하면, 가령 층이 5개인 완전 연결 신경망은 다음 그림과 같이 구현할 수 있다.

위 그림과 같이 완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU 계층(혹은 sigmoid 계층)이 이어진다. 그럼  CNN의 구조는 어떻게 다를까? 다음 예시를 보자.

위 그림과 같이 CNN에서는 새로운 '합성곱 계층(Conv)'과 '풀링 계층(Pooling)'이 추가된다. CNN의 계층은 'Conv-ReLU-(Pooling)' 흐름으로 연결된다.


합성곱 계층

CNN에서는 패딩(padding), 스트라이드(stride) 등 CNN 고유의 용어가 등장한다. 또, 각 계층 사이에는 3차원 데이터같이 입체적인 데이터가 흐른다는 점에서 완전연결 신경망과 다르다. 이제 합성곱 계층의 구조를 차분히 살펴보도록 하자.

  • 완전연결 계층의 문제점

지금까지 본 완전연결 신경망에서는 완전연결 계층(Affine 계층)을 사용했다. 

Comments