모델링

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

https://wikidocs.net/64066

728x90