
CNN 전개도
convolution layer
- 입력 이미지: 입력 이미지는 H×W×C 크기의 3차원 배열로 나타낼 수 다. 여기서 H는 높이(height), W는 너비(width), C는 채널 수(channels)예를 들어, RGB 이미지는 C=3C = 3C=3인 3채널 이미지를 의미
- 필터(커널): Convolution 연산에서 사용하는 필터는 보통 K×K×C 크기를 가지며, 여기서 K는 필터의 너비와 높이입니다. 필터의 깊이(depth)는 입력 이미지의 채널 수 C와 같아야 함.
- 필터 적용 방식:
- 각 필터는 입력 이미지의 모든 채널에 걸쳐 적용. 즉, K×K×C 필터는 입력 이미지의 C개의 채널에 모두 적용.
- 이 필터를 이미지에 슬라이딩 윈도우 방식으로 이동시키면서, 각 위치에서 입력 이미지의 각 채널과 필터의 대응되는 요소끼리 곱셈 후 합산(Sum)을 계산. 이렇게 해서 하나의 출력 값을 얻는다.
- 이 과정을 이미지의 전체 영역에 대해 수행하여 하나의 feature map을 생성.
- Feature Map:
- 만약 32개의 필터를 사용했다면, 각 필터는 독립적으로 위의 과정을 통해 각기 다른 feature map을 생성합니다.
- 결과적으로, ConvNet 레이어를 통과한 후에는 H′×W′×N 크기의 출력이 생김. 여기서 H′와 W′는 필터의 스트라이드(stride)와 패딩(padding) 방식에 따라 결정된 새로운 높이와 너비이고, N은 필터의 개수.
요약하면, 각 필터는 입력 이미지의 모든 채널을 사용하여 하나의 feature map을 생성하며, 필터의 개수만큼 feature map이 생성됨. 따라서 필터의 개수가 곧 최종적으로 생성되는 feature map의 개수.

feature map 예시
각 채널(R, G, B)에서 필터를 적용해 얻은 결과를 더하여 최종적으로 하나의 스칼라 값이 되고 이 값이 feature map의 한 픽셀 값이 된다. 위의 그림처럼 2x2x3의 1개의 필터를 거쳐 2x2x1의 feature map이 생성된다.
Pooling layer
feature map의 차원의 복잡성을 줄이면서 유의미한 정보는 유지하기 위해 pooling layer가 필요하다. pooling 영역을 사용자가 지정할 수 있으며, 보통 2x2 크기로 지정한다. 보통 max pooling 방법을 사용. 이러한 pooling을 통해 가장 자리의 정보들이 사라질 수 있으므로 이를 보완하기 위해 보통 가장자리에 zero padding 영역을 설정

max pooling 예시
이러한 convolution을 통한 Filtering 과 max pooling을 반복하여, 중요한 특징들을 정제한 후 마지막에 FC(Fully Connected) layer를 통해 Classification을 한다.
Fully Connected Layer
해당 layer에서는 Classification을 수행하는데 2가지의 layer 가 있다.
- Flatter Layer : 보통 conv 와 pooling layer를 거치면서 데이터의 shape이 (m,n,k) 형태 일텐데 이 3차원 데이터 타입을 1차원으로 평탄화 시킨다.
- Softmax Layer : 활성화 함수(Relu, Tanh 등)을 거쳐 뉴런을 활성화 하고, soft max 함수를 거쳐 각 feature (mnist의 경우 0~9까지의 숫자) 별로 확률을 알 수 있고 argmax 함수를 통해 결과를 얻어낼 수 있다.

FC Layer