본문 바로가기

AI/이론

[ML] CNN(Convolutional Neural Network)

deep learning -> cnn

 

CNN 관련 내용

 

기계 학습(Machine Learning, 머신 러닝)은 즐겁다! Part 3

딥러닝(Deep Learning)과 컨볼루션 신경망(Convolutional Neural Network 또는 CNN)

medium.com

 

 

 

[CS231n] 강의노트 : CNN (Convolutional Neural Networks)

목표

taeu.github.io

 

 

A Comprehensive Introduction to Different Types of Convolutions in Deep Learning

Towards intuitive understanding of convolutions through visualizations

towardsdatascience.com

 

 

 

일반 신경망은 이미지 데이터를 잘 다루지 못했다. CIFAR-10의 데이터의 경우 각 이미지가 32 X 32 X 3(가로, 세로, 3개 color 채널(Red, Green, Blue의 색상값들))로 이루어져 있고 첫번째 히든 레이어의 하나의 뉴런의 경우 32 X 32 X 3 = 3072개의 weight들이 필요하다. 만약 이미지 크기가 이것보다 훨씬 크다면? 그만큼 가중치가 더 많이 필요하고 이와 같은 fully connectivity는 심각한 낭비이며 많은 수의 모수는 overfitting으로 귀결된다.

 

CNN은 이와 달리 좀 더 합리적인 방향으로 아키텍쳐를 구성할 수 있다. CNN의 레이어들은 보통 가로, 세로, 깊이의 3개의 차원을 갖게된다.(깊이는 전체 신경망의 깊이가 아니라 이 레이어의 액티베이션 볼륨(activation volume)을 나타낸다) 예를 들어, CIFAR-10 이미지는 32x32x3(가로, 세로, 깊이)의 차원을 갖는 입력 액티베이션 볼륨(activation volume)이라고 볼 수 있다. 곧 자세히 구조를 살펴볼 것이지만 전체 이미지를 클래스 점수들로 이뤄진 하나의 벡터로 만들어주기 때문에 마지막 출력 레이어는 1x1x10(10은 CIFAR-10 데이터의 클래스 개수)의 차원을 갖게 된다. 이에 대한 그림은 아래와 같다.

 

 

 

 

풀링 레이어

컨볼류션 레이어(Conv Layer)의 중간중간 마다 풀링레이어를 넣는 것이 일반적이다. 이 레이어가 하는 일은 파라미터의 개수, 연산량을 줄이는 것이다. 맥스 풀링이 가장 일반적이다.

 

CNN 구조 (ConvNet Architectures)

작은 사이즈의 필터로 많이. 큰 리셉티브 필드를 가지는 Conv 레이어보다 여러개의 작은 사이즈의 필터를 가진 Conv 레이어를 쌓는 것이 좋다. 쌓을 때 사이에는 activation function이 들어간다. 

 

 

 

CNN은 뉴럴 네트워크 앞에 여러 계층의 Convolutional layer를 붙인 것입니다.

컨볼루셔널 계층에서 특징이 추출이 되었으면 이 추출된 특징 값을 기존의 뉴럴 네트워크 (인공 신경 지능망)에 넣어서 분류를 한다.

Fully connected layer만으로 구성한 네트워크는 1차원 배열로만 이루어져 있습니다.

 

네트워크의 인풋이 사진일때 fully connected layer가 사진을 학습하려면 (1,0)과 (2,0)이 가진 벡터의 연관관계에 대한 정보가 있어야 하는데, 1차원 배열로 되면 (1,0) (1,1) …. (1,N) (2,0) 과 같이 두 벡터 간의 연관관계라는 정보는 소실되어서 사람이 파악하는 것 만큼 특징 파악이 어렵습니다. 그래서 1차원 배열로 늘어뜨리기 전에 input을 특정 스페이스 안의 특징값들의 정보를 가지고 있는 노드로 하기 위해 Convolution layer를 사용하는 것입니다.

 

설현의 사진을 넣었을때 코 아랫부분에는 콧구멍(???)을 기대하는 것이 사람의 인식이다. 근데 1차원으로 늘이면 코랑 콧구멍을 표시하는 벡터가 저~기 멀리 존재하게된다. (설명이 참;;;) 그래서 Convolutional layer로 2차원의 특징값을 미리 잘게 잘게 얻은다음에 neural network에 집어넣게된다. 잘 학습이 된다면 동일인물의 다른 사진을 넣게 되었을 때 특징 추출이 가능할 것으로 예상하고 만든 layer이다.

'AI > 이론' 카테고리의 다른 글

[ML] Supervised/Unsupervised learning  (0) 2020.06.15
[ML] Activation function  (0) 2020.06.15
[ML] Backpropagation  (0) 2020.06.12
[ML] Machine Learning training  (0) 2020.06.12
[ML] AI, Machine Learning, Deep Learning  (0) 2020.06.12