👩🏻💻Standford CS231N Deep Learning -5
2020/09/20 깃헙 블로그 기록
5. Convolutional Neural Network
What is CNN
- Neural Network와 기본적으로 동일
- Input이 Image
- 기존의 NN에서 이미지를 학습하면 파라미터의 수가 너무 많기 때문에 빠르게 overfitting 됨
- width, height, depth 로 3D layer를 이용
- 역사랑 실제 뉴런 내용은 패스
CNN 원리
- filter를 이용해서 이미지의 부분부분을 하나의 점들(scalar값)으로 만듦
- 점들을 합쳐서 다시 하나의 activation map 으로 만듦.
- convolve가 activation map의 픽셀이 된다고 생각하면 쉬울 듯
- stride-1 이고, 7*7 input, 3*3 filter
- 이렇게 stride만큼 이동하면서 하나의 activation을 뽑아내고, 그것들을 모아서 activation maps를 형성
- output size = (N - F)/stride +1
- padding
- filter를 통해 image의 크기가 작아지니까, 크기 보존이 필요한 경우 이용
- padding의 크기만큼 테두리에 0을 넣는다고 생각
- pad with 1
- output size = (N+P*2-F)/stride +1
- 여러 필터를 이용해 여러 겹의 activation map을 만듦 -> depth 생김
- 이 필터들은 edge나 색, 또는 전체적인 형태를 도드러져 보이게 함
- 위 사진의 경우 28*28*6의 image가 생겼다고 볼 수 있음
- param 갯수: [Filter W * filter H * filter D +1(bias) ]* filter 갯수
- 이 예시처럼 CNN은 CONV, non-linearity, POOL, FC(Fully-Connected)로 이루어짐
- INPUT - CONV - RELU - POOL - FC 라면
- CONV는 WH는 유지, D는 늘어남 (hidden layer 갯수만큼)
- RELU는 CONV의 dimension을 유지
- POOL은 downsampling. WH가 줄고, D는 유지
- FC는 1*1*(# of class) 가 됨
- RELU / POOL 는 fixed function
- CONV / FC 는 trainned params. backpropagation 필요
Pooling
- downsizing
- max pooling
- max, 즉 가장 핵심적인 요인을 뽑아서 다음 layer로 넘기는 것
- 겹치지 않고 section별로 도출