CNN/Convolutional Neural Network (합성곱 신경망)
핵심 인사이트 (3줄 요약)
- 본질: CNN(Convolutional Neural Network)은 이미지의 공간적 구조를 효과적으로 활용하기 위해 설계된 심층 신경망으로, 합성곱(Convolution) 연산을 통해 지역적 패턴을 추출하고 계층적으로 조합하여 전역적 특징을 학습한다.
- 가치: 합성곱 연산은 파라미터 공유(Parameter Sharing)와 희소 연결(Sparse Connectivity)을 통해 전통적인 완전연결(Dense) 계층보다 훨씬 적은 파라미터로 효과적인 이미지 표현 학습이 가능하다.
- 융합: 이미지 분류, 객체 탐지, 세그멘테이션, 얼굴 인식 등 컴퓨터 비전 전반에 걸쳐 혁신적 성능을 제공하고 있으며, 비전 분야之外的音频 처리, 시계열 분석 등에도 적용되고 있다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
CNN(Convolutional Neural Network)은 1998년 Yann LeCun이 손글씨 인식(MNIST)을 위해 제안한 신경망架构이다. 그러나 2012년 AlexNet이 ImageNet 대회에서 압도적인 성능을 보이면서 딥러닝의 Renaissance를 촉발시켰다.
왜 CNN이 필요한가? 이미지를 전통적인 완전연결 신경망(MLP)에 직접 입력하면 심각한 문제가 발생한다. 224×224×3(RGB) 크기의 이미지는 150,528개의 입력을 가지며, 첫 번째 은닉층에서 150,528 × 수천 개의 가중치를 학습해야 한다. 이는 메모리와 계산 비용 측면에서 비현실적이며, 과적합 위험도 크다.
CNN은 이미지의 공간적 구조를 利用한다. 인접한 픽셀들이 모여 의미 있는 지역 패턴(엣지, 텍스처, 부분 등)을 형성한다는점에 주목한다.
[완전연결 vs 합성곱 연결]
완전연결 (MLP):
- 모든 입력 뉴런이 모든 출력 뉴런에 연결
- 파라미터 수: M × N (매우 많음)
- 공간 정보 무시 (Permutation invariance 문제)
합성곱 (Conv):
- 지역적인 입력에만 연결 (Local Receptive Field)
- 파라미터 수: K × K × C_in × C_out (훨씬 적음)
- 공간적 구조 보존
[Local Receptive Field 시각화]
입력 이미지 (예: 32×32):
┌───────────────────────────────┐
│ │
│ ┌───┐ │
│ │ │ ← 3×3 Local Field │ 하나의 필터가
│ └───┘ │ 지역적인 영역만 봄
│ │
│ ┌───┐ │
│ │ │ ← 같은 필터 │ 모든 위치에
│ └───┘ sliding │ 적용됨 (가중치 공유)
│ │
└───────────────────────────────┘
📢 섹션 요약 비유: CNN의 합성곱 연산은犹如현미경으로 표본을 관찰하는 것과 같다. 전체 슬라이드를 한꺼번에 보기보다는(완전연결), 작은 영역(Receptive Field)을 집중적으로 관찰하고, 같은 배율(필터)로 슬라이드를 하나하나 스캔하는 것과 같다. 이를 통해 더 세밀하고 효율적인観察(특징 추출)가 가능하다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
2.1 합성곱 연산 (Convolution Operation)
합성곱 연산은 입력 위에 필터(커널)를滑动시키며 각 위치에서 요소별 곱셈과 합산을 수행한다.
[2D 합성곱 연산 과정]
입력 (5×5):
┌─────────────────┐
│ 1 1 1 0 0 │
│ 0 1 1 1 0 │
│ 0 0 1 1 1 │
│ 0 0 1 1 0 │
│ 0 1 1 0 0 │
└─────────────────┘
필터 (3×3):
┌─────────────────┐
│ 1 0 1 │
│ 0 1 0 │
│ 1 0 1 │
└─────────────────┘
출력 (3×3):
각 위치에서 필터와 요소별 곱셈 후 합산
예: 출력[0,0] =
1×1 + 1×0 + 1×1 +
0×0 + 1×1 + 1×0 +
0×1 + 0×0 + 1×1 = 4
[Stride와 Padding]
Stride: 필터가 이동하는 간격
Stride=1: 1칸씩 이동 (기본)
Stride=2: 2칸씩 이동 (출력 크기 감소)
Padding: 입力的 주변에 0을 추가
Valid: 패딩 없음 (출력 < 입력)
Same: 패딩 있어 출력 = 입력
2.2 CNN의 핵심 구성 요소
1. 합성곱 계층 (Convolutional Layer)
- 여러 개의 필터를 적용하여 특성 맵(Feature Map) 생성
- 각 필터가 다른 지역 패턴을 detection
- 예: 32×32×3 입력이 64개의 5×5×3 필터를 거치면 28×28×64 출력
2. 풀링 계층 (Pooling Layer)
- 지역적인 영역을압축하여 특성 맵의 크기를 줄임
- 주요 유형: Max Pooling, Average Pooling
[Max Pooling (2×2, stride=2)]
입력:
┌─────────────────┐
│ 1 3 2 1 │
│ 2 9 1 1 │
│ 1 2 3 1 │
│ 4 1 0 0 │
└─────────────────┘
출력:
┌─────────────────┐
│ 9 2 │
│ 4 3 │
└─────────────────┘
각 2×2 블록에서 최대값 선택
→ 크기 50% 감소, 계산량 감소, 과적합防止
3. 활성화 함수 (Activation)
- ReLU (Rectified Linear Unit)가 가장 널리 사용
- f(x) = max(0, x)
4. 완전연결 계층 (Fully Connected Layer)
- 최종 특성 맵을 1차원 벡터로 평탄화
- 분류/회귀를 위한 최종 예측 수행
2.3 고전적인 CNN 아키텍처
[LeNet-5 구조 (1998)]
Input(32×32) → Conv(5×5, 6) → AvgPool(2×2) → Conv(5×5, 16) → AvgPool(2×2)
→ FC(120) → FC(84) → Output(10)
[AlexNet 구조 (2012)]
Input(227×227×3)
→ Conv(11×11, 96) + MaxPool(3×3)
→ Conv(5×5, 256) + MaxPool(3×3)
→ Conv(3×3, 384) × 2
→ Conv(3×3, 256) + MaxPool(3×3)
→ FC(4096) → FC(4096) → Output(1000)
특징: ReLU, GPU 훈련, Data Augmentation, Dropout
[VGG-16 구조 (2014)]
Input(224×224×3)
→ Conv(3×3, 64) × 2 + MaxPool
→ Conv(3×3, 128) × 2 + MaxPool
→ Conv(3×3, 256) × 3 + MaxPool
→ Conv(3×3, 512) × 3 + MaxPool
→ Conv(3×3, 512) × 3 + MaxPool
→ FC(4096) → FC(4096) → Output(1000)
특징: 3×3 필터만 사용 (더 깊은 네트워크 가능)
📢 섹션 요약 비유: CNN은犹如작업 반장의分工制度와 유사하다. 각 작업자(필터)가 특정 작업(패턴 검출)만 담당하고, 이들의 결과를 종합하여(풀링, 계층적 조합) 최종 제품(분류 결과)을 완성한다.專門가分工合作的 것처럼, CNN도 지역 전문가들이 협력하여 全般적인 판단을 내리는 구조이다.
Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)
CNN은 计算机비전 분야를Revolutionized했지만, 다른 모델과의 조합과 비교를 통해その長所と短所를 이해할 필요가 있다.
| 특성 | MLP (완전연결) | CNN | RNN |
|---|---|---|---|
| 입력 | 1차원 벡터 | 다차원 배열 (이미지) | 시계열/순서 데이터 |
| 연결 방식 | 모든 뉴런 연결 | 지역적 연결 + 가중치 공유 | 순환적 연결 |
| 공간 구조 | 무시 | 보존 및 활용 | 시간 구조 활용 |
| 파라미터 수 | 매우 많음 | 상대적으로 적음 | 중간 |
| 주요 적용 | 간단한 분류 | 이미지/비전 | NLP, 시계열 |
ResNet (2015): Residual Connection을 통해 очень 깊은 네트워크(152층)에서도梯度消失문제를 해결했다.
[ResNet의 Residual Connection]
기존 방식:
x → [Conv layers] → F(x) → Output
Residual 방식:
x → [Conv layers] → F(x)
↓
x ───→ + → Output (F(x) + x)
비유: diferença를 학습 vs 전체를 학습
- 기존: "어떤 그림이 나비인지 알아야 해" (전체 학습)
- Residual: "방금 전 그림과의差만覚えて" (차이 학습)
→ 더 깊은 네트워크도 학습 가능해짐
📢 섹션 요약 비유: CNN의 발전은犹如建築構造의 진화와 유사하다. 처음에는 간단한 단층 집(MLP)이었지만, 층을 높이 쌓으면서(더 깊은 네트워크) 공간利用効率が向上した.しかし太高的建筑에는地基の問題(梯度消失)が発生したが, 잔디石(Residual Connection)을 통한 구조 보강으로解决这个问题했다.
Ⅳ. 실무 적용 및 한계 (Application & Limitation)
주요 적용 분야:
-
이미지 분류 (Image Classification)
- AlexNet, VGG, ResNet, EfficientNet 등
- ImageNet (1000 클래스) 분류에서 인간 수준 성능 초과
-
객체 탐지 (Object Detection)
- Two-stage: R-CNN, Fast R-CNN, Faster R-CNN
- One-stage: YOLO, SSD, RetinaNet
- 실시간 객체 탐지 가능
-
시맨틱 분할 (Semantic Segmentation)
- U-Net, FCN, DeepLab
- 픽셀 단위 분류 (의료 영상 분석 등)
-
얼굴 인식 (Face Recognition)
- FaceNet, DeepID, ArcFace
- 스마트폰 잠금 해제, 감시 시스템
한계점:
-
지역적 receptive field: 글로벌 컨텍스트 포착에 제한이 있을 수 있음 (트랜스포머 대비)
-
병렬 처리 한계: 합성곱 연산의本地性으로 인해 하드웨어 가속에 한계
-
적대적 공격에 취약: 작은Perturbation에 의해 쉽게 속上当
-
대규모 데이터 필요: 효과적인 학습을 위해 많은 레이블된 데이터 필요
# PyTorch에서의 간단한 CNN 구현
import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self, num_classes=10):
super().__init__()
self.features = nn.Sequential(
# Conv block 1
nn.Conv2d(3, 32, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2), # 32×32 → 16×16
# Conv block 2
nn.Conv2d(32, 64, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2), # 16×16 → 8×8
# Conv block 3
nn.Conv2d(64, 128, kernel_size=3, padding=1),
nn.ReLU(),
nn.AdaptiveAvgPool2d((1, 1)) # Global Average Pooling
)
self.classifier = nn.Linear(128, num_classes)
def forward(self, x):
x = self.features(x)
x = x.view(x.size(0), -1) # Flatten
x = self.classifier(x)
return x
📢 섹션 요약 비유: CNN은犹如촬영렌즈의filtersと類似している. 각 필터(렌즈)가 특정 波長(패턴)만을 통과시키듯, CNN의 각 계층도 특정 수준(엣지→텍스처→개체)의 특징만 추출한다. 여러 필터를 겹쳐 사용하면 더 입체적인图像(복잡한 패턴)를 볼 수 있듯, CNN도 계층을 깊게 쌓아 복잡한 표현을 학습한다.
Ⅴ. 요약 및 전망 (Summary & Outlook)
CNN은 计算机비전 분야의 혁신적 발전을 이끌었다. AlexNet부터 ResNet, EfficientNet에 이르기까지 계속해서进化해왔으며, 그 적용 분야도 이미지 분류를 넘어 객체 탐지, 분할, 생성 모델 등 광범위하게 확대되었다.
앞으로의 전망으로는, Vision Transformer (ViT)와의 경쟁, Self-Supervised Learning과 CNN의 결합, 그리고Quantum Computer Vision 등 새로운Paradigm 연구가 활발히 진행될 것으로 기대된다.
결론적으로, CNN은 2D 공간 데이터(특히 이미지)에서 지역적 패턴을 효과적으로 추출하는强大한 도구이며, 그核心概念인 합성곱, 풀링, 가중치 공유는 현대 计算机비전의基石이다.
References
- LeCun, Y., et al. (1998). Gradient-Based Learning Applied to Document Recognition. IEEE.
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. NIPS.
- He, K., et al. (2016). Deep Residual Learning for Image Recognition. CVPR.
- Dosovitskiy, A., et al. (2020). An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. ICLR.