본문 바로가기
  • All about Finance
Study/C and AI

[OSS] 일단 CNN(Convolutional Neural Network)이 뭔데?

by 김 제로 2021. 5. 21.
반응형

#
Anaconda로 Jupyter notebook도 그래 어째저째 했다 이거야. 근데 교수님은 mac OS인 나에게 windows 가이드라인을 주시고 자꾸 도전해 보라고 하심. 심지어 in c인 강의에서 pip install까지...
+,
three different convolutional neural network라니요. 지피지기 백전백승이라고, 요놈들 정의부터 정복해 보자.




Fully Connected Layer 만으로 구성된 인공 신경망의 입력 데이터는 1차원(배열) 형태로 한정된다. 한 장의 컬러 사진은 3차원 데이터인데, 배치 모드에 사용되는 여러장의 사진은 4차원 데이터이다. 사진 데이터로 전연결(FC, Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 한다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없다.
결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있다. 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)이다.

CNN(Convolutional Neural Network)은 기존 Fully Connected Neural Network와 비교하여 다음과 같은 차별성을 갖는다.
각 레이어의 입출력 데이터의 형상 유지
이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식
복수의 필터로 이미지의 특징 추출 및 학습
추출한 이미지의 특징을 모으고 강화하는 Pooling 레이어
필터를 공유 파라미터로 사용하기 때문에, 일반 인공 신경망과 비교하여 학습 파라미터가 매우 적음



CNN은 위 이미지와 같이
이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나눌 수 있다.
✔︎ 특징 추출 영역은 Convolution Layer와 Pooling Layer를 여러 겹 쌓는 형태로 구성된다. Convolution Layer는 입력 데이터에 필터를 적용 후 활성화 함수를 반영하는 필수 요소이다. Convolution Layer 다음에 위치하는 Pooling Layer는 선택적인 레이어임. CNN 마지막 부분에는 이미지 분류를 위한 Fully Connected 레이어가 추가된다. 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten 레이어가 위치한다.

CNN은 이미지 특징 추출을 위하여 입력데이터를 필터가 순회하며 합성곱(Convolution)을 계산하고, 그 계산 결과를 이용하여 Feature map을 만든다. Convolution Layer는 Filter 크기, Stride, Padding 적용 여부, Max Pooling 크기에 따라서 출력 데이터의 Shape이 변경된다.


근데 여기까지만 해도 머리가 터질 것 같으니까, 세부 단어들은 더 보지 않겠다. 어차피 github의 능력자님들의 OS를 잘 받아먹어 써먹기만 하면 되기 때문에.


Convolution layer와 pooling layer가 두번 반복된 구조를 통해 나온 결과를 Fully-Connected layer를 통해 10개의 숫자들 중에서 예측하는 그림이다.

댓글