모델링
CNN 기초 정리
eugenie
2021. 8. 8. 00:43
728x90
CNN (Convolutional Neural Network)
일반 뉴럴넷(MLP)과 같이 층을 쌓아가며 만들수 있음.
CNN와 MLP의 차이점
- Convolution layer와 pooling layer의 등장
- 계층사이에 입체적인 데이터 흐름 (따라서 RGB와 같이 3차원을 가지는 이미지 데이터 처리에 주로 쓰임
- MLP: Affine -> ReLU 가 한 층
- CNN: Convolution layer -> ReLU -> (Pooling)
CNN 용어 정리
- 필터(filter) = 커널(kernel): (높이, 너비) 예. (3,3)
- 합성곱(convolution) 연산: 필터를 이동해가며 입력데이터에 곱함. (입력 & 필터를 element-wise로 곱한후 그 총합이 출력)
- 편향(bias): 항상(1x1). 이 하나의 값을 합성곱 연상 후 모든 원소에 더함
- 패딩(padding): 입력데이터 주변을 특정 값으로 채움 (주로 0으로) - 주로 출력 크기 조정
- 스트라이드(stride): 필터 적용하는 간격. (예) stride=1이면 1씩 필터가 이동하면서 입력과 합성곱 연산 진행.
- feature map: CNN계층의 입출력 데이터
- 예) CNN층의 입력 데이터: input feature map / CNN층의 출력 데이터: output feature map
3차원 데이터의 합성곱 연산
* 주의: 입력 데이터릐 채널 수와 필터의 채널 수가 같아야함.
1. Convolution Layer
(C:Channel, H:Height, W:Width)
(F: Filter, O:Output)
(#: number of)
1. 필터 1개 사용 = channel이 1개인, 1장의 output feature map
(C, H, W) x (C, FH, FW) = (1(=C), OH, OW) * FH != H
2. 필터 N개 사용 = N장의 output feature map
(C, H, W) x (FN, C, FH, FW) = (FN(=C), OH, OW)
2.2 편향 추가
(C, H, W) x (#Filter, C, FH, FW) = (#Filter(=C), OH, OW) + (FN(=C), 1, 1)
3. 배치처리 (위 연산에서 배치용 차원 추가) : (데이터 수, 채널 수, 높이, 너비)
(#data, C, H, W) x (#Filter, C, FH, FW) = (#data, #Filter(=C), OH, OW) + (#Filter(=C), 1, 1)
= (#data, #Filter(=C), Output H, Output W)
2. Pooling Layer
가로 세로 공간 축소
예: (2, 2) max pooling = 2x2영역에서 max 값을 출력.
특징: 학습할 매개변수 없음. 채널수 변하지 않음. 입력데이터의 변화에 robust
Reference
Deep Learning from Scratch
728x90