TL;DR

📋 핵심 발견

  • 152층 깊이의 ResNet으로 ImageNet 분류 top-5 에러율 3.57% 달성 — 인간 수준(약 5%)을 크게 뛰어넘고 ILSVRC 2015 우승

  • 20층 → 56층으로 깊어질 때 오히려 학습 에러가 증가하는 'degradation 문제'를 실험적으로 입증하고, 잔차 학습(residual learning)으로 이를 해결

  • COCO 2015 detection과 segmentation에서도 1위를 차지하며, 잔차 학습이 이미지 분류를 넘어 범용적으로 유효함을 증명

  • Bottleneck 설계로 152층 ResNet의 연산량을 VGG-16/19보다 낮게 유지하면서도 훨씬 높은 정확도를 달성

Deep Residual Learning for Image Recognition
arXiv: 1512.03385

💡이 논문이 등장한 배경

2015년, 딥러닝 커뮤니티는 한 가지 직관을 가지고 있었습니다. '네트워크를 더 깊게 만들면 더 복잡한 패턴을 배울 수 있을 것이다.' 실제로 VGGNet(19층)이 AlexNet(8층)보다 훨씬 좋은 성능을 보여주면서, 깊이를 늘리는 것이 곧 성능 향상이라는 공식이 자리 잡고 있었습니다.

그런데 이상한 일이 벌어집니다. 20층짜리 네트워크보다 56층짜리 네트워크가 학습 데이터에서조차 더 높은 에러를 보인 것입니다. 이것은 과적합(overfitting) 문제가 아닙니다 — 테스트 데이터가 아니라 학습 데이터에서도 성능이 나빴으니까요. 마치 건물을 높이 지을수록 오히려 약해지는 것과 같은 상황이었습니다. 이론적으로, 56층 네트워크는 적어도 20층 네트워크만큼은 해야 합니다. 나머지 36개 층이 '아무것도 하지 않는 항등 함수(identity function)'만 배우면 되니까요. 하지만 실제로는 그렇게 학습되지 않았습니다.

이것이 바로 이 논문이 해결하려 한 'degradation problem(성능 저하 문제)'입니다. 깊이가 성능의 적이 되어버리는 이 역설을, 어떻게 하면 깊이가 다시 성능의 동맹이 되게 만들 수 있을까?

🔍 핵심 아이디어

ResNet의 핵심 아이디어는 놀라울 정도로 단순합니다. 비유를 들어 설명해보겠습니다. 여러분이 원본 사진을 보정하는 작업을 한다고 생각해보세요. 방법 A는 '최종 결과물을 처음부터 새로 그리는 것'이고, 방법 B는 '원본에서 바꿔야 할 부분만 찾아서 수정하는 것'입니다. 방법 B가 훨씬 쉽겠죠? ResNet은 바로 이 '방법 B'를 신경망에 적용한 것입니다.

일반적인 신경망 층이 학습하려는 매핑 H(x)와 ResNet의 잔차 블록이 학습하는 잔차 매핑 F(x) = H(x) - x의 개념을 비교하여 설명하는 다이어그램을 생성합니다. H(x)를 직접 학습하는 것보다 F(x)를 학습하여 0에 가깝게 만드는 것이 최적화에 더 유리하다는 직관을 시각적으로 표현합니다.

기존 네트워크의 각 층은 입력 x를 받아서 원하는 출력 H(x)를 직접 학습합니다. ResNet은 이 구조를 바꿔서, 각 층이 H(x) 전체가 아니라 잔차(residual) F(x) = H(x) - x만 학습하게 합니다. 최종 출력은 F(x) + x, 즉 '학습한 변화량 + 원래 입력'이 됩니다. 만약 어떤 층에서 입력을 그대로 통과시키는 것이 최적이라면, F(x)를 0으로 만들기만 하면 됩니다. 이것은 임의의 복잡한 함수 H(x)를 학습하는 것보다 훨씬 쉬운 일입니다.

스킵 커넥션이 없는 'Plain' 네트워크의 일반적인 두 개 층 스택 블록과, 입력 x가 두 개 층의 출력 F(x)에 직접 더해지는 스킵 커넥션을 포함하는 ResNet의 기본 잔차 블록(Figure 2 참조)의 구조를 나란히 비교하여 보여주는 다이어그램을 생성합니다.

이것을 구현하는 방법이 바로 skip connection(스킵 커넥션), 또는 shortcut connection입니다. 입력 x가 2~3개의 가중치 층을 '건너뛰어서' 출력에 직접 더해지는 경로를 만드는 것입니다. 이 연결은 추가 파라미터도, 추가 연산도 필요 없습니다. 단순히 '더하기' 하나면 됩니다. 그런데 이 단순한 더하기가 깊은 네트워크의 학습을 근본적으로 바꿔놓습니다. 역전파(backpropagation) 시에 gradient가 skip connection을 통해 직접 흘러갈 수 있어서, 수십, 수백 개의 층을 거치면서 gradient가 사라지는 문제를 해결하기 때문입니다.

Plain 네트워크에서 깊이가 증가할수록 발생하는 학습 오류 증가(성능 저하) 문제를 보여주고, ResNet의 잔차 연결이 이 문제를 어떻게 완화하고 더 깊은 네트워크에서도 효과적인 학습과 성능 향상을 가능하게 하는지 개념적인 흐름으로 시각화하는 다이어그램을 생성합니다. (원문 Figure 1, 4의 결과에 대한 개념적 설명)

결과는 극적이었습니다. Skip connection이 없는 plain 네트워크에서는 34층이 18층보다 학습/테스트 에러 모두 높았지만, ResNet에서는 34층이 18층보다 확실히 낮은 에러를 보였습니다. 깊이가 다시 장점이 된 것입니다. 논문은 여기서 멈추지 않고, 이 원리를 극한까지 밀어붙여 152층짜리 네트워크를 성공적으로 학습시켰으며, 심지어 1,202층짜리 네트워크도 학습이 가능함을 보여주었습니다.

🤔 어떻게 작동하는가

Step 1: 문제 재정의 — H(x) 대신 F(x)를 학습하라

기존 네트워크는 입력 x에서 목표 출력 H(x)를 직접 매핑하려 합니다. ResNet은 발상을 전환하여, 층들이 '입력 대비 변화량' F(x) = H(x) - x만 학습하게 합니다. 최적해가 항등 함수에 가까운 경우, F(x)를 0에 가깝게 만드는 것이 H(x) 전체를 항등 함수로 학습시키는 것보다 최적화가 훨씬 쉽습니다. 이것이 'residual learning'의 핵심 직관입니다.

일반적인 신경망 층이 학습하려는 매핑 H(x)와 ResNet의 잔차 블록이 학습하는 잔차 매핑 F(x) = H(x) - x의 개념을 비교하여 설명하는 다이어그램을 생성합니다. H(x)를 직접 학습하는 것보다 F(x)를 학습하여 0에 가깝게 만드는 것이 최적화에 더 유리하다는 직관을 시각적으로 표현합니다.

Step 2: Skip Connection — 입력이 출력에 직접 합류

구현은 간단합니다. 2~3개의 convolution 층을 하나의 '잔차 블록'으로 묶고, 블록의 입력 x를 출력 F(x)에 element-wise로 더합니다. y = F(x, {Wi}) + x 입니다. 이 shortcut은 파라미터가 전혀 없으며, 추가 연산 비용도 무시할 수 있는 수준입니다. 입력과 출력의 차원이 같을 때는 그대로 더하고(identity shortcut), 차원이 다를 때는 1×1 convolution으로 차원을 맞추는 projection shortcut을 사용합니다.

스킵 커넥션이 없는 'Plain' 네트워크의 일반적인 두 개 층 스택 블록과, 입력 x가 두 개 층의 출력 F(x)에 직접 더해지는 스킵 커넥션을 포함하는 ResNet의 기본 잔차 블록(Figure 2 참조)의 구조를 나란히 비교하여 보여주는 다이어그램을 생성합니다.

Step 3: 기본 잔차 블록 — 얕은 ResNet의 빌딩 블록

ResNet-18과 ResNet-34에서는 '기본(basic) 블록'을 사용합니다. 3×3 conv → Batch Normalization → ReLU → 3×3 conv → Batch Normalization의 구조이며, 여기에 입력 x를 더한 뒤 ReLU를 적용합니다. 이 블록을 층마다 반복 적용하여 네트워크를 구성합니다.

Step 4: Bottleneck 블록 — 깊은 ResNet의 효율적 설계

ResNet-50 이상에서는 연산 효율을 위해 'bottleneck' 구조를 도입합니다. 마치 모래시계처럼, 1×1 conv로 채널 수를 줄이고(예: 256 → 64), 3×3 conv로 핵심 연산을 수행한 뒤, 다시 1×1 conv로 채널 수를 복원합니다(64 → 256). 이 설계 덕분에 152층 ResNet의 연산량(11.3B FLOPs)이 VGG-16(15.3B FLOPs)보다 오히려 적습니다.

매우 깊은 모델의 계산 효율성을 위해 설계된 'Bottleneck' 구조를 보여줍니다. 3x3 합성곱 층 앞뒤로 1x1 합성곱을 배치하여, 첫 번째 1x1 층은 차원을 줄이고(bottleneck 생성), 마지막 1x1 층은 차원을 다시 늘리는 역할을 합니다. 이 설계를 통해 ResNet-101이나 152와 같은 모델은 VGG-16보다 훨씬 깊음에도 불구하고 더 낮은 복잡도를 유지할 수 있습니다.

Step 5: 전체 아키텍처 — 스테이지별 구성

ResNet 전체는 초기 7×7 convolution과 max pooling 이후, 4개의 스테이지(conv2_x ~ conv5_x)로 구성됩니다. 각 스테이지는 동일한 잔차 블록의 반복이며, 스테이지가 넘어갈 때마다 feature map 크기는 절반으로, 필터 수는 두 배로 증가합니다. 마지막에 global average pooling과 1000-way fully connected layer를 거쳐 분류 결과를 출력합니다.

ResNet-50 또는 ResNet-101과 같은 전체 ResNet 모델이 여러 스테이지(예: conv2_x, conv3_x 등)로 구성되며, 각 스테이지 내에서 동일한 잔차 블록들이 반복되고 스테이지 간에는 Feature map 크기 변화 및 필터 수 증가가 어떻게 이루어지는지 상위 수준의 흐름을 보여주는 다이어그램을 생성합니다.

Step 6: 학습 전략

학습은 SGD with momentum(0.9)을 사용하며, 초기 learning rate 0.1에서 에러가 정체(plateau)될 때마다 10으로 나눕니다. Weight decay는 0.0001이고, Batch Normalization을 모든 convolution 뒤에 적용합니다. Dropout은 사용하지 않습니다 — Batch Normalization이 그 역할을 충분히 대체하기 때문입니다.

🛠️ 실험이 말해주는 것

논문의 실험은 두 가지 핵심 질문에 답합니다. 첫째, '잔차 학습이 정말 degradation 문제를 해결하는가?' Plain 네트워크에서 34층은 18층보다 학습 에러가 높았습니다. 같은 구조에 skip connection만 추가한 ResNet-34는 ResNet-18보다 명확하게 낮은 에러를 보였습니다. 깊이가 다시 장점이 된 것입니다. ImageNet validation에서 ResNet-34는 plain-34 대비 top-1 에러를 3.5%p나 줄였습니다.

둘째, '이 방법으로 얼마나 깊이 갈 수 있는가?' ResNet-152는 ImageNet top-5 에러율 3.57%를 기록하여 ILSVRC 2015에서 우승했으며, 이는 2위와의 격차가 상당했습니다. 앙상블 모델은 3.57%를 달성했습니다. 논문은 심지어 1,202층 네트워크도 학습이 가능함을 보여주었는데, 다만 이 경우 110층 대비 성능이 약간 떨어졌으며 저자들은 과적합의 가능성을 지적했습니다.

CIFAR-10에서의 실험도 주목할 만합니다. 110층 ResNet이 6.43%의 에러를 기록하며, 당시 state-of-the-art를 달성했습니다. 또한 PASCAL VOC과 COCO 데이터셋에서 detection과 segmentation 태스크에 ResNet feature를 적용한 결과, 기존 대비 큰 폭의 성능 향상을 보여주며 잔차 학습의 범용성을 입증했습니다.

⚡️ 현실 세계의 임팩트

  • ResNet의 skip connection은 Transformer 아키텍처(GPT, BERT, T5 등)의 핵심 구성요소가 되었습니다. GPT-3의 96개 층, PaLM의 118개 층은 residual connection 없이는 학습 자체가 불가능합니다. 즉 ChatGPT, Google 번역, GitHub Copilot 모두 ResNet의 아이디어 위에 서 있습니다.

  • Google DeepMind의 AlphaFold(단백질 구조 예측)와 AlphaGo Zero도 residual connection을 핵심 설계로 채택했습니다. 생물학에서 바둑까지, ResNet의 영향력은 컴퓨터 비전을 넘어 AI 전체로 확장되었습니다.

  • 의료 영상(X-ray 판독, 병리 진단), 자율주행(Tesla, Waymo의 물체 인식), 제조업 품질 검사 등에서 ResNet-50은 여전히 가장 널리 사용되는 backbone 모델 중 하나입니다. PyTorch, TensorFlow, Hugging Face 등 모든 주요 프레임워크에서 사전학습 모델이 기본 제공됩니다.

  • Semantic Scholar 기준 약 250,000회 이상 인용되어, 21세기 가장 많이 인용된 논문 중 하나입니다. Nature가 선정한 고인용 논문 목록에서도 상위권에 위치합니다.

☝️ 연구의 계보

ResNet은 LeNet(1998) → AlexNet(2012) → VGGNet(2014) → GoogLeNet/Inception(2014)으로 이어지는 'CNN을 더 깊게' 흐름의 정점에 있습니다. Highway Networks(2015)가 gating mechanism으로 비슷한 문제를 먼저 다뤘지만, ResNet의 parameter-free identity shortcut이 더 단순하고 효과적이었습니다. 이후 DenseNet(2017)은 skip connection을 더 밀도 있게 연결하는 방향으로, EfficientNet(2019)은 깊이·너비·해상도의 균형 스케일링으로 발전했습니다. 그리고 ResNet의 residual connection은 Vision Transformer(ViT), Swin Transformer 등 현대 아키텍처에도 그대로 계승되어, 사실상 '깊은 네트워크를 만드는 표준 문법'이 되었습니다.

🫸 강점과 한계

  • [강점] 극도로 단순한 아이디어(element-wise addition 하나)로 깊은 네트워크의 근본적 한계를 해결했으며, 추가 파라미터나 연산 비용이 거의 없음

  • [강점] ImageNet 분류뿐 아니라 detection, segmentation, CIFAR-10 등 다양한 태스크와 데이터셋에서 일관되게 효과를 입증한 탄탄한 실험 구성

  • [강점] Bottleneck 설계로 152층 네트워크의 연산량을 VGG-16보다 낮게 유지하면서도 훨씬 높은 성능을 달성 — 실용성과 성능을 동시에 확보

  • [한계] 잔차 학습이 '왜' 최적화를 쉽게 만드는지에 대한 이론적 분석이 충분하지 않음 — 직관과 실험적 증거에 주로 의존하며, 수학적 증명은 이후 연구들이 보완

  • [한계] 1,202층 네트워크에서 110층 대비 성능이 떨어지는 현상에 대해 과적합 가능성만 언급하고 깊이 이상의 regularization 전략은 다루지 않음

  • [시사점] '문제를 더 쉽게 재정의하라'는 ResNet의 철학은 이후 모든 딥러닝 아키텍처 설계의 기본 원칙이 됨 — 단순함이 곧 보편성

  1. ImageNet top-5 에러 3.57% — Table 4, Section 4.2 — single-model 결과 기준

  2. Plain-34 > Plain-18 학습 에러 — Figure 1, Section 3 — degradation problem의 실험적 증거

  3. ResNet-34 vs Plain-34: top-1 에러 3.5%p 개선 — Table 2, Section 4.2

  4. ResNet-152 FLOPs: 11.3B vs VGG-16: 15.3B — Table 1, Section 4.1

  5. CIFAR-10에서 110층 ResNet 에러 6.43% — Section 4.3

  6. COCO detection/segmentation 1위 — Section 4.4, ILSVRC & COCO 2015 competitions

  7. 1,202층 학습 가능하나 110층 대비 성능 하락 — Section 4.3, Figure 6

안녕하세요 제이슨입니다!🤗 오늘 다이제스트 어땠나요?
코멘트가 있으시면 저에게 LinkedIn DM으로 알려주세요.
피드백은 향후 양질의 뉴스래터 컨텐츠 퀄리티 향상에 큰 도움이 됩니다! 🙌

Author; LinkedIn

최신 논문을 씹고 뜯고 소화하는 PaperGOAT — 🗞️🐐
Greatest of All Time — It’s You🫵
AI 엔지니어 3,000명이 아침마다 여는 논문 브리핑⚡️
유료급 퀄리티, 하지만 무료❗️
최신 AI 논문 요약 뉴스래터를 매일 받아보세요📩

Keep Reading