Convolutional Neural Network

by EMCS LABS — on  , 

CNN

CNN = Convolution + Pooling

Convolution 이란?

2D convolution

  • [1 0 1; 0 1 0; 1 0 1]이 filter matrix (convolutional kernel)임.
  • convolution kernel은 original image를 convolute (sliding with overlap)함.
  • 결과로서 convolved feature map을 만듦.
  • filter matrix가 input의 특정 영역에 곱해지는 이 convolution은 주위값들에 의해 중간값이 변경되도록 하는 것이다.
  • matrix에 따라 원 signal에 다양한 기능을 수행 (e.g. edge detection).
  • ANN 에선 input을 긴 vector로 처리해야 했다면, CNN서는 이미지와 같은 matrix형태를 그대로 유지할 수 있음.
  • 초록이 input, 노랑이 weight, 빨강이 output.
  • convolution kernel (filter matrix 혹은 receptive field)가 trained 될 weight matrix 임.
  • filter matrix가 trainable 값이므로 목적한 작업의 성공율이 높아지는 쪽으로 이미지를 변경해 갈 수 있도록 filter가 만들어질 것이다.
  • layer와 layer 사이에는 서로 다른 filter matrix를 여러 개 가질 수 있다.
  • filter matrix의 종류만큼 convolved feature map 층을 가지게 됨.

pooling 이란?

Max pooling with a 2x2 filter and stride = 2

  • 특정 영역의 숫자집합을 평균이나 최대값같은 하나의 값으로 차원 축소함 (sliding without overlap)
  • convolution으로 부터 나온 그림들로부터 각각 부분에서 대표들을 뽑아 (e.g. max pooling) 사이즈가 작은 이미지를 만듦 (축소하면 깔끔해짐)
  • convolved feature map층의 개수는 pooling feature의 층의 개수와 동일하게 됨.
  • convolution은 weight matrix의 곱이어서 training의 대상의 되지만, pooling은 단순한 sampling이기때문에 training의 대상이 아님 (back-propagation 과정에서 그냥 skip).
  • translation에 대해 invariant한 feature를 제공하고, noise의 역할을 최소화

마지막으로

  • vanilla CNN은 convolution과 pooling을 반복한 뒤 typical hidden 층과 output 층으로 마무리한다.

Hosung Nam