nevertheless
[논문 리뷰] ResNet 내용 정리 본문
Introduction
왜 ResNet이 등장했는가?
VGG를 통해서, 네트워크는 깊을수록 성능이 좋아진다는 것을 알게 되었다.
그래서 layer를 점점 더 쌓았으나, depth가 깊어질수록 문제가 발생하였음.
깊이가 증가하면 vanishing/exploding gradient 문제와 함께 학습이 어려워짐
초기화 기법과 배치 정규화(normalization)로 어느 정도 해결 가능
하지만 깊이가 깊어질수록 학습 정확도가 오히려 감소하는 degradation 문제 발생
Degradataion Problem
네트워크가 깊어질수록
- test error만 증가하는 것이 아니라,
- training error도 증가하는 문제!
이건 overfitting의 문제가 아님. training error도 같이 높아졌으므로
*** 이론적으로는 말이 안 됨!
얕은 모델이 있고, 거기에 레이어를 더 쌓은 깊은 모델을 만든다면,
추가된 레이어를 identity mapping으로 두면 깊은 모델은 얕은 모델과 같은 성능을 낼 수 있어야 함!
-> 즉, 깊은 모델의 training error는 절대 얕은 모델보다 나빠질 수 없음
>> 그렇지만 실제로는 더 나빠짐. 이게 바로 degradation problem
*** 따라서 본 논문에서는 degradation problem을 해결하기 위해 residual learning을 이용하였고, 이 모델이 ResNet이다.
해결 아이디어: Residual Learning
- 기존 CNN은 이렇게 학습함: $H(x)$
-> 입력 x를 어떤 출력 $H(x)$로 직접 변환하는 방법
- ResNet은 이렇게 바꿈:
$F(x) = H(x) - x$
즉, $H(x) = F(x) + x$
-> 전체 함수를 배우는 대신 입력 대비 변화량(residual)을 학습하는 방법
왜 residual이 더 쉬운가?
- identity가 최적일 경우
일반 CNN에서 identity를 만들려면:
$ W_2(\sigma(W_1 x)) = x $
이걸 여러 비선형 레이어로 구현해야 함.
-> 굉장히 어려움!
- ResNet에서는 $ H(x) = F(x) + x $
따라서 identity가 최적이면
$ F(x) = 0 $
즉, 그냥 residual을 0으로 만들면 됨. 그럼 즉시 $ y = x $ (항등 함수, identity function)이 구현됨
-> 엄청 쉬움!
최적 함수가 identity 근처에 있을 가능성이 높음
*** 즉, identity를 기준으로 두면 최적화가 훨씬 쉬워짐
이를 위해 입력 x를 뒤로 보내는 shortcut connection을 제안하였다.
구현: Shortcut Connection

shortcut connection이란 입력 x를 다음 층의 출력에 직접 더하는 연결이다.
위 그림처럼, identity mapping(x)을 다음 레이어에 더해주는 것을 뜻한다.
-> 즉, 입력 x를 두 개 conv 지나서 나온 F(x)에 더한다.
$ y = F(x) + x $ -> 이게 바로 shortcut
< shortcut connection 특징 >
1. 추가 파라미터 없음
2. 계산량 거의 증가 없음
3. 네트워크 내 여러 층을 건너뛰면서 신호를 직접 전달
4. SGD와 역전파(backpropagation)로 끝까지 학습 가능
Deep Residual Learning
1. Residual Learning
위에서 설명했듯이, Residual Learning은 $H(x) = F(x) + x$을 학습하게 된다.
그러면, $F(x) = H(x) - x$가 되고, 이를 residual(잔차)이라 한다.
생각해보면, x는 학습대상이 아니므로 위에서 나온 block은 결국 residual을 학습하게 된다.
따라서, 이를 residual learning이라 한다.
2. Identity Mapping by Shoutcuts
Residual Learning을 수식으로 적으면 다음과 같다.

여기서 $x$와 $y$는 각각 레이어의 입력과 출력이다.
$F$는 residual mapping에 해당하고, $x$는 identity mapping에 해당한다.
이 둘을 short connection으로 더해주는데 이는 element-wise addition이다.
따라서, $F$와 $x$의 feature map 크기와 Channel의 개수는 동일해야 한다.
- feature map의 크기를 맞추기 위해서 residual mapping 쪽 Conv 레이어에 Padding을 적용시킨다.
- channel의 개수를 맞추기 위해서 identity mapping에 linear projection을 적용시킨다.
3. Network Architecture

실험을 위해 VGG-19, VGG-style Plain Network, ResNet을 사용하였다고 한다.
ResNet은 위에 설명한대로 Residual block으로 구성되었고, channel의 개수가 증가하면, Identity mapping에 Zero-padding이나 1 x 1 Convolution을 적용해 channel의 개수를 늘렸다고 한다.
두가지 경우 모두 feature map size를 줄이기 위해서 stride=2를 적용하여 downsampling한다.
Experiments
Plain Network vs ResNet

- 그림에서 보이다시피, Plain Network는 degradation problem이 발생하는 반면, ResNet에서는 발생하지 않았다.
- ResNet-34의 top-1 error는 25.03%로써, Plain-34보다 3.5%가량 낮았다. 이는 Residual Learning의 효율성을 입증한다.
- 18개의 레이어에서는 두 모델 모두 잘 수렴하였지만, ResNet이 수렴속도가 더 빨랐다.
Identity vs Projection shortcuts
위에서 Channel의 개수가 늘어나면(=차원이 증가할 때)
zero-padding이나 1 x 1 Convolution으로 채널의 개수를 늘릴 수 있다고 하였다.
-> 이를 위해서 3가지의 모델을 실험하였다.
( A ) Channel의 개수를 늘릴 때만 zero-padding shortcut 사용 // 그 이외는 identity
( B ) Channel의 개수를 늘릴 때만 1 x 1 Conv shortcut 사용 // 그 이외는 identity
( C ) 모든 shortcut을 1 x 1 Conv로 사용

실험 결과, C가 성능이 가장 우수하였다.
*** 결론적으로, projection shortcut이 필수는 아니며, degradation 해결에는 identity shortcut만으로 충분함
Deeper Bottleneck Architecture
문제: 100층 이상 가려면 연산량이 폭증함
-> 더 깊은 네트워크를 만들되 연산량 문제를 해결하기 위해, 기존 블록을 bottleneck 구조로 변경함
각 레이어의 역할을 보자면,
- 첫 1×1 → 채널 수 줄임 (compression)
- 3×3 → 핵심 연산 수행
- 마지막 1×1 → 채널 수 복원
→ 즉, 비싼 3x3 연산을 작은 차원에서 수행

왼쪽 그림은 ResNet-34에 사용되는 Residual Block이고, 오른쪽은 ResNet-50, ResNet-101, ResNet-152에 사용되는 Residual Block이다.
*** identity shortcut이 중요한 이유:
bottleneck 구조에서는 입력과 출력의 차원이 크다.
그래서 만약 shortcut을 projection(1x1 conv)로 바꾸면 계산량이 증가하고, 모델 크기가 2배 가까이 증가한다.
-> 그래서 identity shortcut이 훨씬 효율적이다!

ResNet-50을 구성하기 위해 기존 2개의 레이어를 갖는 Residual Block을 3개의 레이어를 갖는 Residual Block으로 교체하였다고 한다. 이 때, Channel을 늘리기 위해서 옵션 B를 사용하였다고 한다.
ResNet-101, ResNet-152를 구성하기 위해 3개의 레이어를 갖는 Residual Block을 사용하였다.
레이어가 상당히 깊음에도 불구하고, VGGNet보다 파라미터 수가 적었다.
Result

위 그림은 Single Model로 평가하였을 때 top-1 error와 top-5 error를 보여준다.
아래 그림은 Ensemble Model의 결과이다. 주목할만한 점은 ResNet-152 Single Model의 error가 기존의 ensemble model들의 결과를 모두 제쳤다는 것이다.
Ensemble Model을 위해 6개의 다른 레이어 깊이를 갖는 모델들을 사용하였다고 한다.
CIFAR-10 and Analysis
ImageNet 뿐만 아니라 CIFAR-10 Dataset에 대해서도 실험을 진행하였다.
점점 layer를 추가하여 실험을 진행한 결과, layer가 깊어질수록 더 좋은 성능을 보였다.
하지만 문제가 하나 있었는데, 1202 layer의 모델이 110 layer 모델보다 성능이 좋지 않았다.
*이는 overfitting 때문이었다.
(+) ResNet 논문의 의의
1. 깊은 네트워크에서의 학습 문제를 해결했다
딥러닝에서 네트워크의 깊이는 모델의 성능에 큰 영향을 미치는데, 일반적으로 네트워크가 깊을수록 더 복잡한 특징을 학습할 수 있습니다. 그러나 너무 깊은 네트워크는 “그래디언트 소실(Vanishing Gradient)” 또는 “그래디언트 폭발(Exploding Gradient)” 같은 문제로 학습이 어려워집니다.
ResNet은 이러한 문제를 “Residual Block”이라는 구조를 통해 해결합니다. Residual Block 내에서 입력 데이터는 직접 출력에 더해지는데, 이를 “Skip Connection” 또는 “Shortcut Connection”이라고 합니다. 이 구조 덕분에 그래디언트가 더 쉽게 역전파되어 깊은 네트워크도 효과적으로 학습할 수 있습니다.
2. 블록 형태의 아키텍처를 제안했다
이는 딥러닝 모델 설계에 있어서 모듈화와 확장성을 크게 향상시킵니다.
전통적인 딥러닝 모델은 일련의 계층을 순차적으로 쌓는 형태였습니다. 이러한 방식은 모델의 구조를 변경하거나 확장하기 어렵게 만듭니다.
반면에 ResNet은 “Residual Block”이라는 기본 블록을 사용하여 모델을 구성합니다. 이 블록은 입력과 출력이 더해지는 형태로, 이러한 블록들을 여러 개 쌓아서 원하는 깊이와 복잡성의 모델을 쉽게 만들 수 있습니다. 이 “블록 형태의 아키텍처”는 딥러닝 모델을 더욱 유연하게 만들어 줍니다.
예를 들어, 같은 Residual Block을 사용하여 더 깊거나 얕은 모델을 쉽게 만들 수 있습니다. 또한, 이러한 블록 구조는 다른 연구자들이 새로운 형태의 블록을 설계하고 기존의 ResNet 아키텍처에 쉽게 적용할 수 있게 만듭니다. 따라서 ResNet의 이러한 “블록 형태의 아키텍처”는 딥러닝 모델의 설계와 확장성에 큰 영향을 미치며, 이는 ResNet이 널리 사용되는 또 다른 중요한 이유입니다.
참고
https://imlim0813.tistory.com/34
https://deep-math.tistory.com/18
https://cat-b0.tistory.com/116
https://ffighting.net/deep-learning-paper-review/vision-model/resnet/
'AI > 논문 리뷰' 카테고리의 다른 글
| Block 연산량 비교: VGGNet, ResNet, MobileNetV2 (0) | 2026.04.04 |
|---|---|
| [논문 리뷰] MobileNetV2 Implementation (0) | 2026.03.29 |
| [논문 리뷰] ResNet Implementation (0) | 2026.03.29 |
| [논문 리뷰] VGGNet 내용 정리 (0) | 2026.03.29 |
| [논문 리뷰] MobileNetV2 내용 정리 (2) | 2026.03.16 |