← All papers

Deep Residual Learning for Image Recognition

He, Zhang, Ren, Sun · 2015 · CVPR 2016

ArchitectureRead on arXiv

Introduced skip connections (residual learning), solving the degradation problem that prevented training of very deep networks. ResNet enabled 152-layer networks and won ImageNet 2015 with a 3.57% error rate.

Key Idea

As networks get deeper, they paradoxically become harder to train, not because of overfitting, but because of the degradation problem where adding more layers actually increases training error. ResNet solves this by introducing skip connections (shortcut connections) that let layers learn residual functions F(x) = H(x) - x instead of the full mapping H(x).

The Residual Block

  • Instead of learning H(x) directly, each block learns F(x) = H(x) - x, then adds the input back: output = F(x) + x
  • If the optimal mapping is close to identity, learning F(x) ≈ 0 is much easier than learning H(x) ≈ x
  • Skip connections require no extra parameters and add negligible compute
  • Enables gradient flow through the identity shortcut, mitigating vanishing gradients

Architecture

  • ResNet-18/34: use basic blocks with two 3×3 conv layers
  • ResNet-50/101/152: use bottleneck blocks (1×1 → 3×3 → 1×1 convolutions) for efficiency
  • Batch normalization after each convolution, ReLU activations
  • Global average pooling → fully connected classifier at the end

Why It Matters

  • Solved deep training: enabled networks with 100+ layers where previously ~20 was the practical limit
  • Won ImageNet 2015 (image classification, detection, localization) by a large margin
  • Skip connections became a universal design principle, used in Transformers, U-Nets, DenseNets, and virtually every modern architecture
  • One of the most cited papers in deep learning history (100K+ citations)

Key Takeaways for Interviews

  • The degradation problem is NOT overfitting, deeper plain networks have higher training AND test error
  • Skip connections let the network learn identity mappings easily (F(x) = 0 is trivial to learn)
  • Residual connections appear everywhere: Transformer blocks, U-Net, DenseNet, modern CNNs
  • BatchNorm + skip connections together are what make very deep training stable