수학/딥러닝 이론

[딥러닝] 합성곱 신경망(CNN) - CNN의 전체 구조

AI 꿈나무 2020. 10. 4. 20:07
반응형

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.

 


 합성곱 신경망 - Convolutional neural network, CNN

 CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 합니다.

 

CNN의 메커니즘을 공부하고 이를 파이썬으로 구현해보겠습니다.

 

전체 구조

 CNN의 네트워크 구조를 살펴보며 전체 틀을 이해하도록 하겠습니다.

 CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합하여 만들 수 있습니다.

 다만, 합성곱 계층(convolutional layer)풀링 계층(polling layer)이 새롭게 등장합니다.

 합성곱 계층과 풀링 계층의 상세 내용은 나중에 공부하기로 하고, 여기서는 이 계층들을 어떻게 조합하여 CNN을 만드는지 먼저 보겠습니다.

 

 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었습니다.

 이를 완전연결(fully-connected,전결합)이라고 하며, 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현했습니다.

 이 Affine 계층을 사용하면, 층이 5개인 완전연결 신경망은 아래 그림과 같이 구현할 수 있습니다.

 

완전연결 계층(Affine 계층)으로 이뤄진 네트워크의 예

 

 그림과 같이 완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU 계층(혹은 Sigmoid 계층)이 이어집니다.

 이 그림에서는 Affine-ReLU 조합이 4개가 쌓였고, 마지막 5번째 층은 Affine 계층에 이어 소프트맥스 계층에서 최종결과(확률)을 출력합니다.

 

 그럼 CNN의 구조를 한번 확인해 보겠습니다.

 

CNN으로 이뤄진 네트워크의 예 : 합성곱 계층과 풀링 계층이 새로 추가(회색)

 

 위 그림과 같이 CNN에서는 새로운 '합성곱 계층'과 '풀링 계층'이 추가됩니다.

 CNN의 계층은 'Conv-ReLU-(Pooling)' 흐름으로 연결됩니다. (풀링 계층은 생략하기도 합니다)

 지금까지의 'Affine-ReLU' 연결이 'Conv-ReLU-(Pooling)'으로 바뀌었다고 생각할 수 있습니다.

 

 CNN에서 주목할 또 다른 점은 출력에서 가까운 층에서는 지금까지의 'Affine-ReLU' 구성을 사용할 수 있다는 것 입니다.

 또 마지막 계층에서는 'Affine-Softmax' 조합을 그대로 사용합니다.

 

 이것이 일반적인 CNN에서 흔히 볼 수 있는 구성입니다.

 

 다음 포스팅에서는 합성곱 계층에 대해 알아보겠습니다. 감사합니다.

 

반응형