CS231n- 5강
CS231n- 5강
- 강의를 듣고 cnn 구조에 대해 이곳 저곳에서 이해해보고 다시 구성한 글입니다.
Convolutional Neural Networks
구조
- (Convolutional layer - Relu- Pooling) X 반복 - Fully Conneted Layer
- 앞의 과정을 Feautre extraction이라고 한다고 한다.(참고 https://www.slideshare.net/modulabs/2-cnn-rnn)
Fully connected Neural Network(FCNN)와 비교
사진데이터를 FC신경망에 학습을 할 경우 3차원 사진데이터를 1차원으로 평면화 시켜야 한다
사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수 밖에 없다.
CNN은 이미지의 공간 정보를 유지하면서 필터,polling layer를 통해 이미지의 특징을 추출하고 학습할 수 있다는 장점을 갖고 있다.
Convolution Layer
32 * 32 * 3 이미지에서 5 * 5* 3 filter 만큼의 이미지를 가져오는 것
filter의 depth는 원 이미지의 depth와 같아야한다
filter는 이미지에 차례로 돌아다니면서 이미지의 정보를 filter가 뽑아내고자하는 특성을 수집하고 그것을 모아 둔 것이 activation map
필터를 여러개 사용하면 하나당 하나의 activation map을 만든다.
filter & stride
밑의 예시와 같이 7 7 input에서 3 *3 filter을 적용한다고 했을 때 *filter가 얼마나 움직일지 그 크기를 stride라고 한다.
stride가 1이라고 하면 오른쪽으로는 5번이동할 수 있고 아래로는 5번이동 할 것이다.
따라서 output은 5 * 5가 나올 것이다.
stirde가 2이라고 하면 오른쪽으로는 3번 아래로는 3번이동할수 있을것이다.
따라서 output은 3 * 3이 나올 것이다.
그래서 위와 같은 공식을 얻을 수 있게 된다
N - filter을 적용할려고 하는 이미지의 한면의 길이
F - filter의 한면의 길이
stride - filter의 stepsize
- Zero paddig
filter을 사용하다보면 output사이즈가 작아지는 경우 위와 같이 ouptut 사이즈가 줄어든다 그렇게 되면 정보의 손실이 일어나게된다.
이를 위해서 원래 이미지의 테두리에 0을 배치한다 단, 크기는 (Filter 사이즈-1)/2 크기로 만들게 된다.
F=3이라면 zero pad을 1만큼 덧붙인다.
- Pooling layer
풀링레이어는 convolution layer의 activation map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용(down sampling)
max-pooling이 대표적인 pooling 방법
- 각 박스(filter)안에서 가장 큰 값을 선택해 가져오게 한다.
- 가장 강한 feature만 남긴다.
- Fully Connected Layer
- 마지막 fully connected layer을 통해 기존 ordinary NN처럼 결과를 낸다.
- Summary
- 참고사이트
https://www.youtube.com/watch?v=bNb2fEVKeEo
https://hamait.tistory.com/535
https://www.slideshare.net/leeseungeun/cnn-vgg-72164295