Foundations · CVPR 2016
Deep Residual Learning — ResNet
Skip Connection으로 초심층 네트워크의 저하 문제를 푼 현대 CNN의 표준.
1. 핵심 요약
ImageNet 2015·COCO를 석권했고, 이후 거의 모든 딥러닝 아키텍처에 잔차 연결이 표준이 됩니다. Transformer의 Add & Norm도 같은 아이디어의 직계입니다.
2. 배경 및 문제 제기
직관적으로 층이 많을수록 더 복잡한 패턴을 배워야 합니다. 그런데 실험에서는 56층이 20층보다 나빴고, 테스트뿐 아니라 훈련 오류도 더 높았습니다. 단순 과적합이 아니라 최적화 실패입니다.
저하 문제 vs 잔차
경향만 보세요 — 논문 CIFAR 표의 정확한 수치가 아닌 설명용 곡선입니다. Plain↑ / Residual↓.
Plain ≈ 12.4% · Residual ≈ 6.8% · Δ 5.6pt
핵심: 깊은 Plain은 훈련조차 어려워지고, Skip이 그 최적화를 풀어 줍니다.
이론적 하한: 깊은 넷은 얕은 넷의 해를 포함해야 합니다(추가 층을 항등함수로 두면 됨). 그런데 SGD는 그 해를 잘 못 찾습니다.
기울기 소실: 층을 거칠수록 곱이 쌓여 앞쪽 기울기가 지수적으로 작아질 수 있습니다.
기울기 고속도로: ∂F/∂x + 1
역전파에서 Skip이 있으면 국소 곱에 +1이 붙습니다. 숫자를 바꿔 보세요.
1.000.30 + 1 = 1.301.30식: ∂L/∂x = ∂L/∂H · (∂F/∂x + 1). ‘+1’이 고속도로입니다.
∂L/∂x = 1.00 × (0.30 + 1) = 1.303. 핵심 아이디어: 잔차 학습
기존: 목표 매핑 H(x)를 직접 학습.
ResNet: 잔차 F(x)=H(x)−x 만 학습하고, 출력은 H(x)=F(x)+x.
- 항등이 최적이면 F(x)→0 이면 됨 (가중치를 0으로)
- H(x)=x를 직접 맞추는 것보다 훨씬 쉬움
- 기울기에 +1 항이 생겨 고속도로가 생김
BasicBlock + Skip Connection
Skip을 끄면 Plain 네트워크, 켜면 ResNet 블록입니다.
블록으로 들어오는 특징. Skip이 이 값을 끝까지 들고 갑니다.
H(x) = F(x) + x4. 아키텍처 변형
ResNet 전체 스테이지
이미지를 stem → layer1…4 → 분류기 순으로 통과합니다. 스테이지를 클릭하세요.
×4 Bottle · /2 · 출력 채널 512
블록 타입: Bottleneck. layer2부터는 보통 stride 2로 해상도 절반 + Projection shortcut.
BasicBlock (ResNet-18/34)
3×3 Conv → BN → ReLU → 3×3 Conv → BN → + Skip → ReLU
Bottleneck (ResNet-50/101/152)
1×1(축소) → 3×3 → 1×1(복원) → + Skip. 채널을 줄였다가 되돌려 연산량↓·깊이↑.
Projection Shortcut
차원이 안 맞으면 Skip에 1×1 Conv를 넣어 맞춥니다.
BasicBlock vs Bottleneck
Bottleneck은 1×1로 채널을 줄였다가 되돌려, 깊은 넷을 싸게 만듭니다.
입·출력 차원이 같을 때. 파라미터 0.
ResNet-50/101/152. 3×3은 좁은 채널에서만 돌아 연산량이 줄어듭니다.
5. 실험 결과
| Model | Top-1 Err | Top-5 Err | Params |
|---|---|---|---|
| VGG-16 | 28.07% | 9.33% | 138M |
| GoogLeNet | — | 6.67% | 6.8M |
| ResNet-34 | 25.03% | 7.76% | 21.8M |
| ResNet-152 | 21.43% | 5.71% | 60.2M |
| Ensemble | — | 3.57% | — |
- ILSVRC 2015 분류 1위
- COCO 탐지/분할 1위
- ImageNet Detection·Localization 1위
6. 의의 및 영향
직접적 영향
- 150층+ 초심층 학습이 현실화
- BN + Residual 조합이 표준화
파생
- WideResNet, DenseNet, SENet, EfficientNet, U-Net skip 등
Transformer
- Add & Norm = LayerNorm(x + Sublayer(x)) — ResNet 잔차의 직계
7. 한계와 발전
- 학습 시 활성화 저장으로 메모리 부담 → Gradient Checkpointing
- 고정 깊이 → 동적 깊이 연구
- Pre-Activation ResNet: BN→ReLU→Conv 순서로 성능 향상
Post-Activation vs Pre-Activation
원 논문은 Post(덧셈 후 ReLU). 이후 Pre-Activation은 BN→ReLU→Conv 순으로 바꿔 학습을 더 안정화합니다.
CVPR’16 기본 블록. 구현이 단순하지만, 덧셈 결과가 ReLU에 잘립니다.