He et al. · Microsoft Research · CVPR 2016 · arXiv:1512.03385

Deep Residual Learning ResNet

한 줄 요약: 레이어가 깊을수록 성능이 오히려 떨어지는 문제를 skip connection 하나로 해결 — 152층도 안정적으로 학습된다.

배경 — 왜 더 깊은 네트워크가 필요한가

딥러닝에서 레이어를 쌓으면 더 복잡한 표현을 학습할 수 있다는 것은 이론적으로 명확하다. 실제로 VGG(2014)는 16~19층으로 AlexNet(8층)을 크게 앞질렀다. 그렇다면 56층은 20층보다 더 좋아야 하지 않을까?

Degradation 문제 — 왜 깊으면 나쁜가

에포크 훈련 오류 high low 56층 (plain) 20층 (plain) 56층 (ResNet) ← 오히려 나쁨!

56층 plain 네트워크가 20층보다 훈련 오류가 더 높다. 과적합이 아니다 — 학습 자체가 안 된다.

직관적으로 생각하면 이는 말이 안 된다. 56층 네트워크는 최소한 "처음 20층만 실제로 학습하고 나머지 36층은 항등함수(f(x)=x)로 동작"하는 해를 찾을 수 있어야 하기 때문이다. 그러나 현실에서는 그렇게 되지 않는다. 레이어들이 항등함수를 학습하기 어렵기 때문이다 — 정확히 0이 되어야 할 가중치들을 찾는 것이 어렵다.

Residual Block — 구조 비교

Plain Block

x Conv + BN ReLU Conv + BN ReLU → H(x)

Residual Block

x Conv + BN ReLU Conv + BN → F(x) skip (x) + ReLU → H(x)=F(x)+x

왼쪽(Plain)은 블록이 직접 $\mathcal{H}(x)$를 학습한다. 오른쪽(ResNet)은 블록이 잔차 $\mathcal{F}(x) = \mathcal{H}(x) - x$를 학습하고, skip connection이 원본 x를 더해준다. 노란 점선이 skip connection으로, 신호가 레이어를 "건너뛰어" 직접 전달된다는 점에 주목하라.

핵심 수식

$$\mathcal{H}(x) = \mathcal{F}(x) + x$$
항등 함수를 배우기 쉬워지는 이유:
Plain: $\mathcal{H}(x) = x$ 가 되려면 모든 가중치 → 0 (어려움)
ResNet: $\mathcal{F}(x) = 0$ 이 되면 자동으로 $\mathcal{H}(x) = x$ (쉬움)

그래디언트 고속도로: 역전파 시 그래디언트 공식은 다음과 같다: $$\frac{\partial \mathcal{H}}{\partial x} = \frac{\partial \mathcal{F}}{\partial x} + 1$$ 두 번째 항 +1 덕분에 $\frac{\partial \mathcal{F}}{\partial x}$가 매우 작아져도 전체 그래디언트는 최소 1 이상 흐른다. 이것이 수십~수백 층을 쌓아도 초기 레이어까지 그래디언트가 전달되는 이유다.

Batch Normalization의 역할

ResNet의 각 Conv 뒤에는 Batch Normalization(BN)이 붙는다. BN은 미니배치 내에서 각 채널의 평균을 0, 분산을 1로 맞춘다. 이를 통해:

BN과 skip connection의 조합이 ResNet의 놀라운 안정성의 핵심이다.

깊이별 성능

VGG-16 28.5% ResNet-34 26.7% ResNet-50 24.7% ResNet-152 23.0% 인간 ~5% Top-1 Error ↓

Bottleneck 블록 (ResNet-50/101/152)

ResNet-50 이상에서는 3개의 Conv를 사용하는 Bottleneck 구조를 쓴다: 1×1 Conv로 채널을 줄이고 → 3×3 Conv로 실제 학습 → 1×1 Conv로 다시 늘린다. 예를 들어 256채널 → 64채널 → 64채널 → 256채널. 이렇게 하면 3×3 Conv의 계산량을 1/4로 줄이면서도 표현력을 유지할 수 있어, 더 깊은 네트워크를 효율적으로 만들 수 있다.

ResNeXt, DenseNet, EfficientNet, ViT 등 이후 모든 vision backbone이 skip connection을 채택. Transformer의 Add & LayerNorm도 동일 원리다. "더 깊게 쌓을 수 있다"는 ResNet의 증명이 대형 언어 모델(수십~수백 층)의 가능성을 열었다.