본문 바로가기

카테고리 없음

[딥러닝] 합성곱 신경망(CNN, Convolutional Neural Network) - 1

CNN, Convolutional Neural Network 이란?

CNN은 합성곱(Convolution)연산을 사용하는 ANN의 한 종류다.

그렇다면 ANN은 무엇일까? 처음공부하는 나로서는 이해하기 힘든말이 너무 많다.

천천히 알아가보자!!!


 

ANN, Artificial Neural Network 이란?

실제 생물의 신경계를 모방한 네트워크를 "인공 신경망" 이라고 한다.

 

신경계는 뉴런들의 결합으로 구성되어있다. 신경세포체는 가지돌기를 통해 자극을 받아들이며, 축삭돌기를 통해 전기자극을 전달한다. 인간을 포함한 많은 생물들은 이렇듯 단순한 뉴런들의 결합을 환경에 적합하도록 진화시켜왔다. 그 결과 신경계는 빛을 감지하거나, 다리를 움직이거나, 기억하거나, 상상하는 등의 복잡한 일을 할 수 있게 되었다. 

https://freshrimpsushi.tistory.com/962 참고

인공 신경망은 뉴런에서 신경세포레를 노드로, 축삭돌기를 링크로 모방한 네트워크를 말한다.  각 노드들은 신경세포체와 마찬가지로 정보를 받고 그것을 전달하는 과정에서 유의미한 결과를 얻을 수 있는 계산을 수행한다.

 


자, 이제 ANN이 어떤 것인지 알아보았으니 본격적으로 CNN에 대해 알아보자.

Convolution을 사용하면 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다.

대표적인 CNN으로는 LeNet(1998)과 AlexNet(2012)이 있다.

VGC, GoogLeNet, ResNet 등은 층을 더 깊게 쌓은 CNN 기반의 심층 신경망(DNN)이다.

 

CNN의 네트워크 구조

지금까지 다룬 신경망은 이전 계층의 모든 뉴런과 결합되어 있었고, 이를 Affine Layer라고 불렀다.

*Affine Layer(아핀 레이어) : 뉴럴넷의 표준 레이어로, 완전 연결된 레이어입니다. CNN이나 RNN의 최종 예측 직전 단계에서 자주 사용됩니다. "f(Wx + b)" 형태로 표현할 수 있습니다.

 

모두의 연구소 DeepLay Edu의 자료를 참조하였습니다.

 

이런 식으로 이전 계층의 모든 뉴런과 결합된 형태의 Layer를 Fully-Connected Layer( FC Layer, 전결합 레이어) 또는 Dense Layer라고 해요!

 

하지만 CNN에서는 FC대신 다음 두 레이어를 활성화 함수 앞 뒤에 배치하는 차이가 있습니다.

 - Convolutional Layer

 - Pooling Layer

 

그러나 모두 이렇게 바뀌는 것은 아니고 출력에 가까운 층에서는 FC Layer를 사용할 수 있습니다.

또한, 마지막 출력 계층에는 fc-Soft Max가 그대로 갑니다.

 

모두의 연구소 DeepLay Edu의 자료를 참조하였습니다.

 

왜 FC 대신에 CNN을 사용하게 된 것일까요??

 

FC Layer의 문제점

전결합 레이어는 1차원 데이터만 입력 받을 수 있기 떄문에, 3차원 데이터를 평탄화 해서 입력해야 한다.

여기서 3차원 데이터의 공간적 정보가 소실된다는 문제가 발생한다.

 

예를 들어 MNIST 이미지는 형상이 (1채널, 가로 28픽셀, 세로 28픽셀)인 3차원 데이터라고 하자.

이 3차원 데이터에는 공간적으로 가까운 픽셀은 값이 비슷하다거나, RGB의 각 채널은 서로 밀접하게 관련되어 있다든가 하는 공간적 정보가 들어있다.

 

이를 Affine Layer에 입력할 떄, (1,784)의 1차원 데이터로 평탄화 해서 넘기기 떄문에 이런 공간적 정보가 소실된다. 

 

*(1, 784)는 2차원 배열이지만, 1은 이미지 1개를 의미하고, 이미지 1개의 데이터는 784에 들어있는 것이므로 이미지 자체는 1차원 데이터 784에 들어 있다. 

*(1, 784)는 2차원 배열이지만, 1은 이미지 1개를 의미하고, 
이미지 1개의 데이터는 784에 들어있는 것이므로
이미지 자체는 1차원 데이터 784에 들어 있다. 

 

반면 CONV Layer 는 형상을 유지한다. 입/출력 모두 3차원(배치처리 시 4차원) 데이터로 처리하기 떄문에 공간적 정보를 유지할 수 있다.

왼쪽은 일반적인 3-Layer Neural Network(전결합), 오른쪽은 CNN을 3차원으로 표현한 그림이다.

 

https://umbum.tistory.com/223

 

 

좀 더 자세한 내용은 다음 포스팅에서 알아 보도록 하자 ~