티스토리 뷰
1. CNN(Convolutional Neural Network)란?
[ CNN(Convolutional Neural Network) ]
CNN(Convolutional Neural Network)은 합성곱연산을 사용하는 ANN(Artificial Neural Network, 인공 신경망)의 한 종류로, 합성곱(Convolution)을 사용하면 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다. 여기서 합성곱이란 이미지 내에서 Feature를 뽑기 위한 연산으로 이해를 하면 되는데, 이미지를 기준으로 합성곱을 구하는 것에 대해 설명하도록 하겠다.
위와 같은 Input Image에 대해 Feature Detector(Filter or Kernel)를 기준으로 합성곱을 한다고 하면, 모든 Input Image의 요소들에 대해 Feature Detecting을 하게 된다. 아래와 같은 하나의 과정을 모든 이미지를 훑을때까지 반복하게 된다. 여기서 합성곱 연산은 각 행렬의 동일한 좌표를 dot연산하여 합을 구한 것이다.
즉, 위와 같은 예시에서 input image(0,0) * filter(0,0) + input image(0,1) * filter(0,1) + .... + input image(2,2) * filter(2,2) = 0 으로 구한 것이다. 이러한 과정을 모든 Input Image의 요소들에 대해 진행을 하면 아래와 같은 과정을 거쳐 최종의 Feature Map이 나오게 된다.
이러한 과정을 통해 나온 Feature Map의 크기(5 * 5)는 기존의 Input Image의 크기(7 * 7)보다 작아졌고, 이것은 원본의 이미지에서 특징을 뽑아내기 위해 필요했던 7 * 7=49번의 연산이 5 * 5=25번으로 줄어들었음을 의미한다. 당연히 원본의 이미지를 사용하는 것이 아니기 때문에 정보의 손실이 있지만, Convolution 연산의 목표는 Feature를 잡아내는 것이기에 이러한 과정이 의미가 있으며, 또한 이미지 비교시 빠르게 처리할 수 있게 되었다.
이렇게 뽑아낸 Feature Map들을 살펴보면 얻어낸 Feature 중에서도 가장 중요한 Feature를 뽑아낼 수 있을 것이고, 이를 위해 학습하는 역할을 CNN 중 Convolution Layer에서 수행한다. 영상처리에서 아래와 같은 Filter를 적용하면 특징을 더 잘 뽑아낼 수 있게되는데, 각 필터는 상황에 따라 맞게 설정해주면 된다.
참고 자료
'인공지능' 카테고리의 다른 글
Stochastic Gradient Descent(SGD)란? (0) | 2020.02.09 |
---|---|
Q-Learning이란? (2) | 2020.02.09 |
Deep Learning(딥러닝) vs Reinforcement Learning(강화학습) (2) | 2020.02.09 |
[Machine Learning] Machine Learning System Design (0) | 2018.01.18 |
[Machine Learning] Advice for Applying Machine Learning (0) | 2018.01.15 |