CNN(Convolutional Neural Network)은 왜 등장했을까?

1. Fully connected layer

 

Neural network는 방대한 데이터를 모두 활용할 수 있도록 제한된 복잡도의 system에 압축하여 넣는 것

 

가장 간단한 single layer로 Perceptron이라고 부르는 Fully connected layer를 생각했다.

 

input image에 대해 하나의 feature를 뽑기 위해 모든 pixel을 각각 서로 다른 가중치로 연결한 것이다

 

 

모든 pixel을 서로 다른 가중치의 sum을 하여 nonlinear activation function을 넣어 하나의 classification score를 뽑아낸다

 

 

2. Perceptron의 첫번째 문제점

 

이 간단한 모델을 먼저 matrix 형태로 바라본다면?

 

 

각 이미지 pixel 구조에 weight를 그대로 내적하며 분류 score를 구하는데

 

이 weight matrix도 이미지 구조랑 동일하니까 흐릿하지만 평균적인 이미지로 복원시켜볼 수 있다

 

 

서로 다른 weight matrix에 대해 여러가지 class에 속하는 평균 이미지를 만들어낼 수 있다

 

input 이미지는 하나이고 당연히 카테고리는 하나인데

 

하나의 weight가 나타내는 것은 당연히 들어온 input에 맞춰진? 하나의 class를 나타낼 것

 

input에 맞춰진 class라고 보기는 어렵긴해 이게 맞으면 weight를 분류하면 끝이잖아

 

그러니까 weight가 하나의 class만 나타내는게 아쉽다는 것. 하나의 모델은 하나의 weight parameter를 갖는데

 

input은 여러개를 넣을거고 각각 다른 class가 있을 것인데 MODEL의 weight는 오직 하나의 class에만 대응된다는 점이 아쉽다는것

 

그러면서 자연스럽게 input의 class 분류 능력도 떨어지는것

 

 

3. Perceptron의 두번째 문제점

 

perceptron은 하나의 이미지에 대해서 열심히 학습하여 그 class에 대한 대표적인 패턴을 학습하는데

 

 

예를 들어 위와 같은 말 이미지를 학습했다고 생각해보자

 

그런데 이제 test time에 학습시에 봤던 패턴과 전혀 다른 패턴을 넣어버리면 모델이 당황해서 매우 다른 결과를 내놓는다

 

 

위에서 넣은 말 이미지의 일부분인 상반신 이미지만 넣어보면

 

당황해서 이해를 못해가지고 sofa라고 분류해버림

 

 

4. CNN의 등장

 

위와 같이 일부를 잘라버리면 이해를 못하는 Fully connected layer의 한계를 극복하고자

 

하나의 feature를 이미지의 공간적 특성을 고려하여 local 영역들만 고려한 connection을 생각함

 

 

Fully connected layer는 모든 feature는 동일하게 이미지의 모든 pixel과 연결된다

 

locally connected layer는 이미지의 일부 공간의 pixel만 하나의 feature에 연결한다

 

이것의 장점은? 필요한 parameter수가 획기적으로 줄어든다

 

근데 일부 픽셀만 사용하면 좀 그렇잖아? feature와 연결시키는 일부 공간을 filter이라 부르고

 

이 filter을 이미지 내에서 순회시켜서 순회시킨 공간마다 feature를 뽑아낸다

 

이것이 무슨 장점을 가지냐면 이미지의 각 공간별 특징을 고려한 feature를 뽑아낼 수 있다는 것이다

 

그러면서 위와 같이 말 잘라서 모델에 넣어도 말 상반신이라는 걸 이해할 수 있게 된다는 소리

 

심지어 feature map을 구성할때 쓰는 filter와 연결시키는 parameter는 공유할 수 있어서 더욱 parameter를 줄이고 overfitting을 방지한다

 

 

5. computer vision의 backbone

 

이미지는 부분 공간마다 서로 다른 특성을 가진다는 특징을 가지는데 이런 특징에 적절한 network가 바로 CNN이다

 

그래서 CNN은 computer vision task의 기본 base model인 backbone으로 자주 쓰인다

 

CNN으로 이미지에서 feature map을 구성하고

 

이 map을 원하는 task의 layer에 넣어서 학습시키는 것이 기본적인 Computer vision의 알고리즘

 

 

 

 

TAGS.

Comments