← Back to Blog

[Paper Review] Deep Residual Learning for Image Recognition

paper review > deep learning

2026-07-093 min read

#paper-review #deep-learning #computer-vision #cnn #resnet

논문 링크: Deep Residual Learning for Image Recognition

논문 정보

항목내용
VenueCVPR
출판 시점2016년
저자Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
주제Residual learning, very deep CNN

핵심 아이디어

ResNet은 layer를 깊게 쌓을수록 training error가 오히려 나빠지는 degradation 문제를 residual connection으로 해결한다.

일반적인 block이 원하는 mapping H(x)H(x)를 직접 학습한다면, ResNet block은 다음 residual을 학습한다.

F(x)=H(x)xF(x) = H(x) - x

출력은 다음과 같다.

y=F(x)+xy = F(x) + x

ResNet의 핵심은 layer가 전체 변환을 새로 학습하는 대신, 입력에서 얼마나 바뀌어야 하는지를 residual로 학습하게 만든 것이다.

왜 중요한가

Residual connection은 매우 깊은 network를 안정적으로 학습할 수 있게 만들었다. 이후 CNN뿐 아니라 Transformer, diffusion model, modern architecture 전반에서 skip connection은 기본 설계가 되었다.

수식으로 보는 핵심

Plain network는 어떤 block이 원하는 mapping H(x)H(x)를 직접 학습한다고 본다. ResNet은 이를 residual function F(x)F(x)로 다시 parameterize한다.

H(x)=F(x)+xH(x) = F(x) + x

따라서 block 출력은 다음과 같다.

y=F(x,W)+xy = F(x, W) + x

여기서 F(x,W)F(x,W)는 보통 convolution, BatchNorm, ReLU로 구성된 residual branch다. 중요한 점은 H(x)H(x)가 identity에 가까운 경우, plain network는 H(x)=xH(x)=x를 직접 학습해야 하지만 ResNet은 F(x)=0F(x)=0을 학습하면 된다는 것이다.

Gradient도 shortcut을 통해 직접 흐른다.

Lx=Ly(F(x,W)x+I)\frac{\partial \mathcal{L}}{\partial x} = \frac{\partial \mathcal{L}}{\partial y}\left(\frac{\partial F(x,W)}{\partial x} + I\right)

ResNet의 수식적 핵심은 gradient에 identity term II가 더해져, residual branch가 불안정해도 신호가 직접 전달되는 경로가 생긴다는 점이다.

Dimension이 바뀌는 block에서는 shortcut도 projection을 쓴다.

y=F(x,W)+Wsxy = F(x, W) + W_s x

따라서 ResNet은 단순히 layer를 더 깊게 쌓은 모델이 아니라, 깊은 network의 함수 공간을 residual 형태로 다시 parameterize한 architecture다.

문제 배경

일반적으로 network를 깊게 만들면 표현력이 좋아질 것처럼 보인다. 하지만 plain CNN을 단순히 더 깊게 쌓으면 training error 자체가 올라가는 현상이 나타난다. 이것은 test error만 나빠지는 overfitting과 다르다. 학습 데이터조차 잘 맞추지 못한다는 뜻이므로 optimization 문제가 핵심이다.

ResNet은 깊은 모델이 최소한 얕은 모델만큼은 동작할 수 있어야 한다는 관찰에서 출발한다. 추가된 layer들이 아무것도 하지 않는 identity mapping을 배울 수 있다면, 깊어진 모델은 얕은 모델보다 나빠질 이유가 없다.

Residual Learning

Residual block은 원하는 mapping H(x)H(x)를 직접 학습하지 않고, F(x)=H(x)xF(x) = H(x) - x를 학습한다. 그 다음 입력 xx를 다시 더해 H(x)=F(x)+xH(x) = F(x) + x를 만든다.

이 구조에서는 block이 필요 없을 때 F(x)F(x)를 0에 가깝게 만들면 된다. 즉 layer가 반드시 새로운 표현을 완전히 만들어야 하는 부담이 줄어든다.

Residual connection은 깊은 network가 identity에 가까운 함수를 쉽게 표현하게 만들어 optimization을 안정화한다.

Bottleneck Block

ResNet-50 이상에서는 1x1, 3x3, 1x1 convolution으로 이루어진 bottleneck block을 사용한다. 첫 번째 1x1 convolution은 channel 수를 줄이고, 3x3 convolution은 공간 정보를 처리하며, 마지막 1x1 convolution은 channel 수를 다시 늘린다.

이 설계는 계산량을 줄이면서 깊이를 늘릴 수 있게 한다. 매우 깊은 모델을 현실적인 비용으로 학습하려면 residual connection뿐 아니라 block 내부의 계산 효율도 중요하다.

실험 결과의 의미

논문은 34-layer plain network보다 34-layer ResNet이 training error와 validation error 모두에서 더 낫다는 점을 보여준다. 또 ImageNet에서 152-layer ResNet까지 안정적으로 학습시키며, 깊이를 키우는 전략이 실제로 통한다는 것을 증명했다.

한계

ResNet은 optimization을 크게 개선했지만, 모든 문제를 해결하지는 않는다. 매우 깊은 network에서는 normalization, initialization, learning rate schedule이 여전히 중요하다. 또 residual branch가 너무 강해지거나 shortcut의 shape가 자주 바뀌면 identity path의 장점이 약해질 수 있다.

읽을 포인트

정리

ResNet은 deep network 설계의 기본 문법을 바꿨다. 오늘날 Transformer, diffusion model, segmentation model에서도 skip connection이 기본으로 쓰이는 이유는 같다. 깊은 모델은 매 layer마다 완전히 새로 계산하기보다, 이전 표현을 보존하면서 필요한 변화만 더하는 쪽이 학습하기 쉽다.