CNN(Convolutional Neural Network) 이란?

CNN은 Convolutional Neural Network의 약자로 DNN(Deep Neural Network)에서 이미지나 영상과 같은 데이터를 처리할 때 발생하는 문제점들을 보완한 방법을 이야기 합니다.

그렇다면 DNN에서 어떠한 문제점이 있었길래 CNN이 개발 되었는지 확인해 보면 CNN을 이해하기 훨신 수월 할 것이다. 블로그 글에서는 CNN이 무엇인지, DNN은 무엇인지를 공부하고 MNIST handwritten 데이터를 기반으로 DNN과 CNN으로 모델을 만들어 볼 것 입니다.

DNN에서는 어떻게 데이터를 입력받고 어떻게 데이터를 처리하는지 확인해보고 무엇이 문제였는지 확인 해보자.

DNN(Deep Neural Network) 이란?

DNN(Deep Neural Network)은 입력층(input layer)과 출력층(output layer)사이에 여러개의 은닉층(hidden layer)로 이루어진 인공신경망(Artificial Neural Network)을 의미한다.

모델에 대표적으로 많이 사용하는 2가지의 데이터 형태가 존재하는데, 1차원 데이터인 텍스트 데이터2차원 데이터인 이미지 데이터를 가장 많이 사용한다. 각각의 데이터를 어떻게 입력받고 DNN에서 어떻게 처리하는지 각각 확인해보자.

1차원 형태의 텍스트 데이터

1차원 형태의 데이터의 예시로 iris(아이리스) 데이터를 예로 들어보면 아래와 같다.

<aside> 💡 iris 데이터는 붓꽃이라는 꽃에 대한 데이터꽃잎의 각 부분(Sepal, Petal)의 길이와 넓이를 측정한 데이터이며 약 150개의 레코드로 구성되어 있다.

</aside>

Untitled

위와 같은 데이터가 존재 하는데, 위의 데이터는 각각의 Row로 구성 되어 있기 때문에 1차원의 데이터이다. 여기서 Sepal 과 Petal의 정보를 input데이터로 설정하고 output 데이터로 Species로 설정한다.

각각의 케이스 데이터를 기반으로 학습된 모델에 입력값으로 Sepal과 Petal의 정보를 넣음으로 입력된 꽃의 데이터를 기반으로 꽃의 종류를 맞추는 모델이 된다.

iris 데이터와 같이 모델에 input 값으로 제공해주는 데이터를 1차원 데이터라고 이야기 하는 이유는 데이터를 하나의 row로 표현을 할 수 있기 때문이다. 하지만 모델에 넣어주는 input 데이터가 매번 Row로 구성되어 있는 1차원 데이터만을 의미 하지 않는다.

2차원 형태의 이미지 데이터

2차원 형태의 데이터의 예시로 MNIST handwritten digit database를 예로 들어보면 아래와 같다.

<aside> 💡 MNIST handwritten digit database는 사람들의 손글씨 데이터를 28*28의 크기의 이미지로 각각의 알파벳을 저장해 놓은 데이터 베이스이다. 60000개의 학습데이터와 10000개의 평가 데이터로 구성되어 있다.

</aside>

MNIST handwritten 데이터를 한번 확인해 보면 아래와 같습니다.