통계 실험실 차트
넘스탯 로고

넘스탯

DATA ANALYTICS & INSIGHTS

확률에서 LLM까지 – 데이터 사이언스 전문 교육 플랫폼

도움말

CNN 실습실 — 합성곱 신경망

"공간 정보를 보존하며 학습한다" — LeNet(1998)부터 ResNet(2016)까지의 핵심 연산

원하는 개념·랩·가이드를 검색해보세요

Ctrl K
🧮 Convolution = 슬라이딩 + Element-wise 곱·합

합성곱 연산은 작은 커널(filter)이 입력 위를 슬라이딩하며 각 위치에서 element-wise 곱 후 합을 계산합니다. 딥러닝에서는 엄밀히는 cross-correlation을 사용하지만 관례상 convolution이라 부릅니다 (Goodfellow Ch.9.1).

합성곱: 7×7 입력 ⊛ 3×3 Sobel-X 커널 → 5×5 출력합성곱: 7×7 입력 ⊛ 3×3 Sobel-X 커널 → 5×5 출력
🎨 같은 입력, 다른 커널 → 다른 특징

CNN의 핵심은 "어떤 커널을 사용하느냐"입니다. 학습 전에는 무작위지만, 역전파를 통해 데이터로부터 의미 있는 특징을 추출하는 커널로 자동으로 진화합니다 (Krizhevsky et al. 2012).

같은 얼굴 패턴에 4가지 커널 적용 → 완전히 다른 특징같은 얼굴 패턴에 4가지 커널 적용 → 완전히 다른 특징
🧪 CNN 인터랙티브 — Convolution + Pooling 시각화

입력 이미지에 다양한 커널을 적용하고 stride·padding·pooling을 조절하며 출력 변화를 실시간으로 관찰하세요.

입력 패턴
커널 (필터)
Stride = 1
Padding = 0
Pooling (2×2, stride=2)
입력 (24×24)
커널 (3×3)
-1.00.01.0-2.00.02.0-1.00.01.0
Sobel-X (수직 에지)
Conv 출력 (22×22)
풀링 없음 (22×22)
출력 공식: O = ⌊(I + 2P − K) / S⌋ + 1
(24 + 2·0 − 3) / 1 + 1 = 22
🔧 Stride · Padding · Dilation — 출력 크기 제어

Stride(슬라이드 간격), Padding(외곽 0-채움), Dilation(커널 간격)이 출력 크기와 받음야(receptive field)를 결정합니다. 표준 출력 공식: O = ⌊(I + 2P − D(K−1) − 1) / S⌋ + 1

Stride / Padding / Dilation의 시각적 비교Stride / Padding / Dilation의 시각적 비교
🗜️ Pooling — 공간 해상도 축소 + 불변성

Pooling은 인접한 픽셀들의 통계량(최댓값/평균)으로 압축합니다. Max pooling은 강한 특징을 유지하고 약한 평행 이동에 불변성을 제공합니다. CNN에서는 일반적으로 2×2 max pooling이 표준입니다.

Max vs Average Pooling — 같은 입력의 다른 압축Max vs Average Pooling — 같은 입력의 다른 압축
🏗️ CNN 전체 아키텍처 — LeNet-5

CNN은 (Conv → Pool)을 반복해 점진적으로 추상화된 특징을 추출한 뒤, 마지막에 Fully Connected 층으로 분류합니다. LeCun et al. (1998)의 LeNet-5가 이 패턴의 원형이며, 현대 ResNet/EfficientNet도 큰 그림에서는 이 구조의 확장입니다.

LeNet-5 스타일 CNN 아키텍처 — 특징 추출 + 분류LeNet-5 스타일 CNN 아키텍처 — 특징 추출 + 분류
🏆 주요 CNN 아키텍처 마일스톤
LeNet-5 (1998)

LeCun. 손글씨 숫자 인식. CNN의 원조 — Conv+Pool+FC 패턴 정립.

AlexNet (2012)

Krizhevsky et al. ImageNet 우승. ReLU + Dropout + GPU 학습. 딥러닝 시대 개막.

VGG (2014)

Simonyan & Zisserman. 3×3 작은 커널을 깊이 쌓는 단순한 전략 → 16/19층.

ResNet (2016)

He et al. Skip Connection으로 152층 학습 가능. 현재 CV 백본의 표준.

🔬 직접 해보기 — 실습 과제
  1. Sobel-X vs Sobel-Y: 십자 입력에 두 커널을 번갈아 적용. 수직선과 수평선이 각각 강조됨
  2. Edge 검출: 원/사각형 입력에 Edge 커널 → 윤곽선만 추출. 이것이 CNN 첫 층이 자동으로 학습하는 패턴
  3. Stride=2: 같은 입력+커널에 stride를 1→2로 변경. 출력 크기가 절반, 정보 손실
  4. Padding으로 크기 유지: 3×3 커널 + padding=1 + stride=1 → 출력 = 입력 크기 (ResNet 스타일)
  5. Pooling 비교: 합성곱 출력에 Max와 Avg 풀링을 적용해 어떤 정보가 살아남는지 비교
📖 더 깊이 학습하기
  • Goodfellow et al., Deep Learning (MIT Press 2016) — Ch.9: CNN 종합 이론
  • LeCun et al., Gradient-based learning applied to document recognition (1998): LeNet-5 원논문
  • Krizhevsky et al., ImageNet Classification with Deep CNN (NIPS 2012): AlexNet
  • He et al., Deep Residual Learning (CVPR 2016): ResNet
  • Stanford CS231n: Convolutional Neural Networks for Visual Recognition