Convolutional Neural Network (CNN) 이론


Convolutional Neural Network (CNN)은 결국 CONVReLUPOOLDropu-out을 번갈아서 적용하는 것을 말한다.
마지막에는 Fully connected network으로 구성 된다.
Pooling은 sampling과 resizing을 의미한다.

Start with an image (width x hight x depth)으로 구성된다.
결국, 32 x 32 x 3 image 이다.
3이라고 하면 red, green, blue를 나타낸다.
gray scale일 경우 1의 depth를 나타낸다.

결국은 위와 같이 filter를 상징하는 weight를 찾는 것이 Convolutional Neural Network(CNN)의 목적이라고 할 수 있다.

필터를 이미지에 적용 (conv + ReLU)

필터를 이미지에 적용하고 Stride에 따라서 나오는 이미지의 크기가 달라지게 된다.

필터의 사이즈가 너무 작으면 Weight를 구하는것이 의미가 없어 진다.

아래의 공식대로 필터가 구해진다.
출력 크기 = 1 + (입력 크기 - 필터 크기) / stride 크기

핵심은 구하려고하는 값이 2.33과 같이 나머지가 존재해서는 안된다.
정수로 딱 떨어져야 이 방법이 적용 가능하다.


실전에서는 위와 같이 Filter를 적용할 때 마다 원본 image의 크기가 작아지는 문제가 발생 한다.
stride크기에 상관 없이 최소한 (필터 크기 -1)만큼 줄어들 수 밖에 없다.
따라서 padding을 처리하는 것이 중요 하다.

Max Pooling

Pooling의 다른 말은 Sampling 또는 Resizing이다.
Pooling을 거치면 크기가 작아지게 된다.
결국 이전에 filter를 통해서 생성 했던 activation map이 크기는 1/2로 작아지고 channel의 두께는 바뀌지 않게 되는 것이다.

MAX POOLING

Pooling 기법 중에서 가장 많이 사용하는 Max pooling이 있다.
여러 개의 값 중에서 가장 큰 값을 꺼내서 모아 놓은것을 말한다.

이전의 Convolutional Layer에서는 Filter를 곱해서 새로운 출력 결과를 만들어 낸다.
이와 다르게 polling에서는 단순하게 존재하는 값 중에서 하나를 선택하게 된다.
Max pooling은 여기서 가장 큰 값을 선택하는 것을 말한다.

참고문헌

http://pythonkim.tistory.com/52


+ Recent posts