한 줄 요약: 레이어가 깊을수록 성능이 오히려 떨어지는 문제를 skip connection 하나로 해결 — 152층도 안정적으로 학습된다.
배경 — 왜 더 깊은 네트워크가 필요한가
딥러닝에서 레이어를 쌓으면 더 복잡한 표현을 학습할 수 있다는 것은 이론적으로 명확하다. 실제로 VGG(2014)는 16~19층으로 AlexNet(8층)을 크게 앞질렀다. 그렇다면 56층은 20층보다 더 좋아야 하지 않을까?
Degradation 문제 — 왜 깊으면 나쁜가
56층 plain 네트워크가 20층보다 훈련 오류가 더 높다. 과적합이 아니다 — 학습 자체가 안 된다.
직관적으로 생각하면 이는 말이 안 된다. 56층 네트워크는 최소한 "처음 20층만 실제로 학습하고 나머지 36층은 항등함수(f(x)=x)로 동작"하는 해를 찾을 수 있어야 하기 때문이다. 그러나 현실에서는 그렇게 되지 않는다. 레이어들이 항등함수를 학습하기 어렵기 때문이다 — 정확히 0이 되어야 할 가중치들을 찾는 것이 어렵다.
Residual Block — 구조 비교
Plain Block
Residual Block
왼쪽(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의 놀라운 안정성의 핵심이다.
깊이별 성능
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의 증명이 대형 언어 모델(수십~수백 층)의 가능성을 열었다.