CNN 설계의 다섯 가지 선택은 하나의 문제에서 나온다
Convolution의 forward/backward 수학부터 depthwise separable의 텐서 분해까지, CNN이 '어디서 무엇을 볼 것인가'를 결정하는 방식을 추적한다.
- 01 CNN의 수학적 토대 — Convolution부터 Frequency까지
- 02 CNN 설계의 다섯 가지 선택은 하나의 문제에서 나온다
- 03 CNN의 수용장은 왜 기대보다 작은가
- 04 Skip Connection은 왜 깊은 네트워크를 살렸는가
- 05 CNN 아키텍처 설계의 통일된 논리: 무엇이 성능을 결정하는가
- 06 CNN 응용의 통일 원리 — 손실 함수가 설계를 결정한다
- 07 CNN의 설계 철학은 어디서 왔는가
CNN을 구성하는 선택들 — 커널 크기, 패딩 전략, 풀링 방식, 스트라이드, 채널 분리 — 은 표면적으로 서로 독립적으로 보인다. 하지만 이 장들을 함께 읽으면 하나의 공통 질문이 드러난다: “이 레이어는 입력의 어떤 영역을, 어떤 비용으로, 얼마나 선택적으로 볼 것인가?” 이 질문에 대한 서로 다른 답이 각각의 설계 결정을 낳는다.
Convolution이 정의하는 것
Multi-channel convolution의 forward는 다음과 같다.
수식이 말하는 것은 단순하다. 출력의 각 위치는 입력의 국소 영역 전체를 모든 입력 채널에 걸쳐 가중합한 결과다. 같은 커널 가 이미지 전체에 반복 적용된다 — 이것이 weight sharing이고, 이것이 translation invariance의 원천이다.
backward는 이 구조의 필연적 귀결이다.
는 와 flipped kernel 의 full-mode convolution으로 표현된다. 는 와 의 valid convolution으로 표현된다.
Forward에서 는 출력 위치 에서 , 인 모든 을 통해 나타난다. Chain rule을 적용하면, 이를 kernel 인덱스 방향으로 합산하는 식은 을 사용한 convolution과 동일한 형태가 된다. 이것이 flipped kernel이다.
이 대칭성은 단순히 수학적 아름다움이 아니다. transposed convolution(Ch4)이 정확히 이 backward 구조를 forward로 재사용하고, im2col이 이 전체 연산을 행렬 곱셈으로 펼칠 수 있는 이유가 여기서 나온다.
Pooling이 정의하는 것
Convolution이 “무엇을 볼 것인가”를 정의한다면, pooling은 “얼마나 선택적으로 요약할 것인가”를 결정한다.
Max pooling은 receptive region 내 최댓값만 취한다.
Backward에서는 argmax 위치로만 gradient가 흐른다. 나머지 위치의 gradient는 0이다. Average pooling은 반대다 — 모든 위치에 의 균일한 gradient를 돌려준다.
Max pooling은 강한 활성화에만 집중하므로 noise에 강하지만 gradient가 sparse해진다. Average pooling은 gradient 흐름이 균일하지만 weak activation도 출력에 영향을 준다. 최근 EfficientNet 계열은 Global Average Pooling으로 spatial 정보 전체를 하나의 벡터로 압축한다.
Stride 인 pooling이 다음 레이어의 receptive field를 배 곱셈적으로 확대한다는 사실은 이 설계의 핵심 동기다. 5개 레이어를 쌓으면 receptive field는 배가 된다. 깊은 CNN이 전역 패턴을 인식할 수 있는 이유다.
Padding과 Dilation이 정의하는 것
커널이 이면 경계 픽셀은 완전한 receptive field를 가질 수 없다. Padding은 이 경계 처리 문제에 대한 선택이다.
Zero padding은 경계를 0으로 채운다. 1D 신호 에 zero padding을 적용하면 출력 경계가 내부보다 낮아진다 — “dark halo” artifact다. Reflection padding은 경계를 이미지 내용으로 대칭 반사시켜 이 discontinuity를 제거한다. 의료 영상이나 텍스처 합성에서 reflection padding이 선호되는 이유다.
‘Same’ convolution의 패딩 공식 는 출력 크기를 입력과 동일하게 유지하기 위한 필요조건이다. 가 홀수일 때만 정수 padding이 가능하다 — 이것이 CNN에서 , 같은 홀수 커널이 지배적인 이유다.
Dilated (atrous) convolution은 다른 방식으로 receptive field 문제에 답한다.
Dilation rate 를 사용하면 공간 해상도를 그대로 유지하면서 receptive field를 로 확장한다. WaveNet은 의 exponential dilation을 30층 쌓아 개 샘플(약 1분 오디오)에 달하는 receptive field를 단일 출력이 바라보게 만든다. Stride가 해상도를 포기하는 대신 receptive field를 얻는다면, dilation은 해상도를 지키면서 receptive field를 얻는 전략이다.
Depthwise Separable이 정의하는 것
Standard convolution의 FLOPs는 다. , 이면 . 모바일 기기에서는 감당하기 어렵다.
Depthwise separable convolution은 이 연산을 두 단계로 분해한다. Depthwise는 각 채널을 독립적으로 convolution하고, pointwise는 으로 채널을 혼합한다. FLOPs는 로 줄어든다.
감소 비율은 다음과 같다.
, 이면 — 약 8.4배 감소다. 이 수식이 말하는 것은 명확하다. 출력 채널이 많을수록, 커널이 클수록 분리의 이득이 커진다.
정리
다섯 개의 챕터는 결국 하나의 질문에 대한 다섯 가지 답이다 — “이 레이어는 무엇을, 어느 범위에서, 어떤 비용으로 볼 것인가.”
- Convolution forward/backward: weight sharing이 translation invariance를 낳고, backward는 flipped kernel의 convolution이다.
- Pooling: max는 선택적으로, average는 균일하게 요약한다. 둘 다 stride마다 receptive field를 곱셈적으로 확대한다.
- Padding: zero padding은 경계 artifact를 낳는다. Reflection이 더 자연스럽지만 비용이 있다. ‘Same’ convolution은 가 홀수일 때만 깔끔하다.
- Stride/Dilation/Transposed: Stride는 해상도를 포기하고 RF를 얻는다. Dilation은 해상도를 지키며 RF를 얻는다. Transposed는 backward를 forward로 재해석해 upsampling한다.
- Depthwise separable: 공간과 채널을 분리해 이상의 FLOPs 감소를 얻는다. MobileNet에서 ConvNeXt까지 이어지는 설계 원리다.
다음 글에서는 이론적 receptive field와 실효 receptive field가 왜 다른지, 그리고 그 차이가 실제 feature detection에 어떤 영향을 주는지 추적한다.