[AI] CNN (합성곱 신경망)
개요
- 이미지·공간 데이터에 특화된 딥러닝 신경망 아키텍처
- 합성곱(Convolution) 연산으로 지역 패턴(엣지, 텍스처, 형태)을 계층적으로 학습
- 2012년 AlexNet이 ImageNet 대회에서 압도적 성능으로 딥러닝 르네상스를 촉발
- 심층 학습의 한 분야로, 이미지·공간 데이터에 특화된 신경망 아키텍처
구조
- 입력층 (Input Layer): 픽셀 값 행렬 (높이 × 너비 × 채널)을 입력으로 받음
- 합성곱층 (Convolutional Layer): 필터(커널)가 슬라이딩하며 특징 맵(Feature Map) 생성
- 활성화 함수 (ReLU): 비선형성 추가 (
max(0, x)) - 풀링층 (Pooling Layer): 특징 맵 공간 크기 축소, 연산량 및 과적합 감소
- 완전연결층 (FC Layer): 고차원 특징 벡터를 분류 레이블로 변환
-
출력층 (Softmax): 클래스별 확률 출력
입력 이미지 → [Conv → ReLU] × N → Pooling → [Conv → ReLU] × N → Pooling → Flatten → Fully Connected → Softmax
핵심 연산
Convolution (합성곱)
- 작은 필터(커널)가 입력 위를 슬라이딩하며 내적 연산을 수행해 특징 맵 생성
- 각 필터는 특정 패턴(엣지·색상·텍스처 등)을 감지하도록 학습
- 커널 크기: 주로 3×3 사용 (소형 필터의 중첩이 대형 필터보다 효율적)
- Stride: 필터 이동 칸 수 (크면 출력 크기 감소)
- Padding: 경계 처리 (Same Padding으로 입출력 크기 유지)
- 출력 크기 =
(입력 크기 - 커널 크기 + 2 × Padding) / Stride + 1
Pooling (풀링)
- 특징 맵의 공간 크기를 줄여 연산량 감소 및 위치 불변성 확보
- Max Pooling: 지역 내 최댓값 선택 (가장 많이 사용)
- Average Pooling: 지역 내 평균값
- Global Average Pooling (GAP): 전체 특징 맵의 평균 → FC 레이어 없이 분류 가능
주요 모델
| 모델 | 연도 | 특징 |
|---|---|---|
| LeNet-5 | 1998 | 최초의 CNN, 손글씨 인식 |
| AlexNet | 2012 | ImageNet 우승, 딥러닝 부흥 |
| VGGNet | 2014 | 3×3 필터 중첩, 깊은 구조 |
| GoogLeNet (Inception) | 2014 | Inception 모듈, 다양한 커널 병렬 처리 |
| ResNet | 2015 | Skip Connection으로 잔차 학습, 수백 층 훈련 가능 |
| EfficientNet | 2019 | 복합 스케일링(너비/깊이/해상도), 효율적 성능 |
| ConvNeXt | 2022 | Transformer 아이디어를 CNN에 적용 |
활용
- 이미지 분류: 사물 인식, 의료 영상 진단 (X-ray, MRI, 병리 슬라이드)
- 객체 탐지 (Object Detection): YOLO, Faster R-CNN — 위치 + 클래스 동시 예측
- 시맨틱 분할 (Semantic Segmentation): U-Net (의료), DeepLab (자율주행)
- 얼굴 인식: FaceNet, ArcFace
- 자율주행: 주행 환경 인식, 차선·신호등·보행자 감지