CNN 알아보기

1. CNN 정의


CNN은 Convolutional Neural Networks의 줄임말로 Convolution 전처리 작업이 들어가는 Neural Network 모델이다. CNN은 하나 또는 여러개의 Convolutional Layer와 그 위에 올려진 일반적인 인공 신경망 계층들로 이루어져 있으며, 가중치와 Pooling Layer들을 추가로 활용한다.

CNN은 Deep Neural Network의 문제점을 해결하고자 나타난 모델이다. DNN은 기본적으로 1차원 형태의 데이터를 사용하기 때문에 3차원 데이터인 한장의 사진을 1차원으로 평면화시켜 신경망을 학습하였다. 이 과정에서 공간적 지역적 정보가 손실될 수밖에 없었고 이미지에 대한 정보 부족으로 특징을 추출하거나 학습에 있어서 비효율적이고 모델의 정확도를 높이는데 한계가 나타나게 되었다.

이에 따라 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델인 CNN이 등장하게 되고 2차원 구조의 입력 데이터를 충분히 활용하여 computer vision 분야에서 우수한 성능을 보여준다.

출처: https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

출처: https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

CNN은 Convolution Layer와 Pooling Layer를 여러 겹 쌓아 이미지의 특징을 추출하고 Fully Connected Layer에서 이미지를 분류하게 된다. 이미지의 공간 정보를 유지하면서 추가적으로 한 픽셀과 주변 픽셀들의 연관성을 파악하여 특징을 효과적으로 인식하기 때문에 이미지를 인식하기 위해 패턴을 찾는데 강점을 갖고 있다.

2. CNN 구조


CNN은 하나의 필터만 사용하지 않고, 다양한 필터를 사용한다. 다양한 필터를 사용하여 필터마다 다른 특징을 나타내게 만든다. 필터별로 활성화 맵을 만들어내고, 활성화맵 개수의 볼륨을 가지는 출력이 만들어지게 된다. 이렇게 만들어진 Convolution layer와 활성화함수를 같이 쌓아올리고, Pooling Layer를 곳곳에 넣어 CNN모델을 구성한다.

2-1. Convolutional Layer