CNN이란 신경망의 한 종류이다. 다수의 Convolutional Layer으로 부터 모서리, 선,모양 같은 특징맵(Feature map)을 추출하고 서브샘플링(Subsampling)을 통해 차원을 축소하여 특징맵에서 중요한 부분을 추출한다.
합성곱은 이미지와 같은 데이터에서 특징을 추출하는 데 사용된다.
그림을 보면 6x6 행의 입력 이미지가 있을 때 3x3 커널로 합성곱을 진행하면, 4x4의 특징맵이 추출된다.
합성곱을 계속 진행하다 보면 이미지가 축소하게 되고, 가장자리의 픽셀은 한번만 사용 되므로 이미지 윤곽쪽의 정보는 버리는셈이 된다.
이를 해결하기 위해 아래 그림처림 이미지 주위로 추가로 경계를 덧대는 padding을 사용한다.
패딩을 사용한 최종 이미지 크기
커널의 크기 패딩의 크기 이미지의 크기
스트라이드는 합성곱을 진행하며 커널이 한번에 이동하는 범위를 말한다.
스트라이드를 포함한 특징맵 사이즈
convolution layer 이외에도 CNN은 pooling layer를 사용해서 차원을 축소하여 계산시간을 줄이고 특징을 잘 검출할 수 있다
Convolution: (5x5x3x6) + 6 = 456개
Fully connected: (32 x 32 x 3 )x(28x28x6)+(28x28x6) 개