아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.
이 논문은 ResNet에 대한 설명을 담고있다.
1. Introduction
이전 논문들에서 깊이를 키우는 것이 복잡한 특징 추출을 더 잘해서 성능을 높이는데 큰 도움이 되었다고 얘기를 했다.
깊은 모델의 문제인 vanishing gradient같은 문제는 여러가지 방법을 통해 개선이 되었다.
하지만 추가적인 문제가 있었다.
Degradation라고 부르는 더 깊은 모델이 에러율이 더 높게 나오는 현상이 발생했다.
저자들은 "20층짜리 모델이 풀 수 있는 문제는 55층짜리 모델도 당연히 풀어야 하는 것 아닌가?"라고 생각했지만 실험결과는 그렇지 않았다.

여기서 20층 이후의 층들은 단순히 들어오는 입력만 그대로 출력해줘도 성능이 더 나빠지지 않는데 그렇게 학습시키기가 어렵다는 것이다.
여기서 이 논문의 핵심 아이디어 Residual Learning가 등장한다.
즉 입력에 적용할 변화량을 학습하자는 것이다.
예를 들면 150이라는 숫자를 입력 받아 150이라는 값을 다시 게산하게끔 하지말고,
150이라는 입력에 0을 더해서 출력하는 방식을 사용해 0만 학습 시키면 되는 아이디어라고 생각할 수 있다.
조금 수학적으로 써보면
기존 방식은 $x$라는 입력을 받아서 직접적으로 최적의 결과 $H(x)$를 계산하는 방식이라면,
ResNet의 방식은 $F(x) = H(x)-x$를 학습하도록 하는 것이다.
즉 정답과 입력사이의 차이만 학습하는 것이다.
출력할 때는 입력에 이 차이만 더하면 된다.

여기서 이 방법이 더 쉽다고 주장하는 이유는 아래와 같다.
이 방법이 효과적인 핵심 이유는 깊은 네트워크에서 발생하는 최적화 문제를 완화하기 때문이다.
단순히 항등 함수(identity mapping)를 학습해야 하는 상황에서도, 기존 구조에서는 이를 직접 표현하기 어려워 성능 저하가 발생할 수 있다.
반면 Residual Learning에서는 최적의 해가 입력과 거의 같다면 잔차를 0에 가깝게 만드는 것만으로 충분하므로 학습이 훨씬 쉬워진다.
구현도 어렵지 않다.
기존 구조에 shortcut connection만 추가하면 된다.
shortcut은 가중치도 없고 연산도 없다. 그냥 입력만 그대로 전달하는 것이다.
2. Related Work
복잡한 문제를 풀 때, 단순히 생으로 학습하는 것보다 '기준점(Reference)'과의 차이를 학습하는 것이 수치적으로 훨씬 안정적이라는 과거의 연구와,
Shortcut Connection과 유사하게 입력을 뒤로 전달하는 통로가 사용되었던 모델들에서 더 발전 시켰다.
3. Deep Residual Learning
3.1. Residual Learning
처음 인트로 부분에서 설명했던 개념이다.
기존 모델의 $H(x)$와 이 모델의 $F(X)$에 대해 설명한다.
만약 실제 해결하는 문제가 항등 레이어가 답이 아닐지라도 이를 기준점으로 삼는 것 자체가 학습을 더 쉽게 만든다고 주장한다.
3.2. Identity Mapping by Shortcuts
식은 아래와 같다.
x는 입력 y는 출력이다.
$y = F(x, \{W_i\}) + x$
여기서 하나의 문제는 입력과 출력의 차원이 다를 수 있다는 것이다.
구체적으로는 가로 세로는 줄고 채널 수는 늘어나는 경우가 많다.
이를 해결하는 방법은 두 가지이다.
<방법1>
채널에는 뒤에 0을 붙여서 차원을 맞춰주고,
가로세로는 stride를 사용해 값을 줄인다.
<방법2>
shortcut에 1x1 convolution를 사용하는 것이다.
2. $y = F(x, \{W_i\}) + W_sx$
ResNet의 기본철학은 shortcut에 최대한 연산을 안하는 것인데, 이 방법은 shortcut에 연산이 들어가기 때문에 방법 1보다는 이 원칙에수 멀다고 할 수 있다.
이 ResNet의 구조는 어떤 특정 레이어 구조를 의미하는게 아니고 x를 더한다는 구조를 얘기하는 것이다.
따라서 F를 구성하는 레이어는 몇층이어도 된다.
다만 1층짜리면 그냥 하나의 선형 레이어가 되기때문에 2층이상이어야 한다.
3.3. Network Architectures
먼저 연구자들은 평범한 네트워크를 하나 만들었다.
아래 사진의 가운데의 네트워크이다. 전에 알아본 VGG의 변형이라고 생각해도 된다.
- 설계 원칙 1: 출력 feature map(W,H) 크기가 같으면, 레이어 내 채널 수도 동일하게 유지
- 설계 원칙 2: feature map 크기가 절반으로 줄어들면($W, H$ 축소), 레이어당 시간 복잡도를 일정하게 유지하기 위해 채널을 2배로 늘림
- 특징: $3 \times 3$ 컨볼루션을 주로 사용하며, 마지막에 Global Average Pooling을 써서 파라미터 수를 크게 줄였다.
그리고 가장 오른쪽 구조가 ResNet이다.
위의 Plain Network에 Shortcut Connection을 추가한 구조이다.
- 실선 Shortcut : 입력과 출력의 차원이 같을 때 사용하며, 단순히 $F(x) + x$를 의미한다.
- 점선 Shortcut : 차원이 변할 때 사용한다. 아까 위에서 얘기한 두 가지 방법을 사용한다.
- 방법 A (Zero-padding): stride2를 적용해 H,W를 줄이고 추가되는 채널만큼 0으로 채운다.
- 방법 B (Projection): $1 \times 1$ 컨볼루션으로 차원을 맞춤.

3.4. Implementation
이전 GoogLeNet이나 VGG에서 사용하던 학습 설정을 거의 그대로 가져왔다.
따라서 논문에서 얘기하려는 것은 '이전 모델들과 같은 설정을 사용했는데도 ResNet이 더 성능이 좋게 나온 이유는 shortcut구조 때문이다'는 점을 강조하기 위해서라고 생각해볼 수 있다.
4. Experiments
결과를 분석하는 부분이다.
4.1. ImageNet Classification
Plain-18 VS Plain-34 VS ResNet-18 VS ResNet-34
위 4개의 모델에 대해 비교를 한다.
먼저 Plain 모델 끼리의 비교이다.
ResNet 구조가 들어있지 않은 plain을 보면 우려한 대로 Plain-34구조가 더 높은 에러가 나온 것(degradation)을 볼 수 있다.

실제로 역전파 때 gradient를 살펴보면 vanishing gradient문제는 아니라는 것을 알 수 있다.
저자들은
깊은 plain network는 해는 존재하지만 너무 느리게 개선되어서 현실적인 학습 동안 얕은 네트워크가 하는 만큼의 학습이 안된다고 가설을 세웠다.
다음으로 ResNet들의 비교이다.
Plain모델들과 같은 구조에 shortcut만 추가되었다.
여기서는 위의 zero-padding방법이 사용되었는데 이 방법은 파라미터가 추가되지 않기 때문에 성능 향상의 원인이 추가된 파라미터 때문이라는 반박을 막을 수 있기 때문이다.
결과는 예상대로 깊은 모델의 성능이 더 좋게 나왔다.

이 4개의 모델에 대한 에러율은 아래와 같다.

이 표를 보면 18층 정도의 깊이에서는 두 방식의 성능이 비슷한 것을 알 수 있다.
하지만 ResNet이 학습이 더 빠르게 된다는 장점이 있다.
학습 난이도가 쉽다고 할 수 있다.
결론적으로 ResNet은 학습속도를 빠르게 해주고 모델이 깊어질수록 이 차이가 가능/불가능의 차이까지로 커지게 된다.
이번에는 shortcut 방법의 차이에 대해 알아보자.
이미 0으로 채우는 방법(방법A)과 convolution을 사용해 채널 수를 조절하는 방법(방법B)을 알아봤었다.
차원이 바뀌지 않는 shortcut일 때도 convolution을 항상 붙이는 방법(방법C)도 있다.
각 방법을 A,B,C라고 이름짓고 이들을 비교해보자.
아래 표를 보면 정리가 쉽게 될 것이다.
| 방법 | 차원변화 | shortcut 방식 | 파라미터 증가 여부 |
| A | X | Identity | x |
| A | O | Downsample + Zero-padding | x |
| B | X | Identity | x |
| B | O | 1×1 Conv (projection) | O |
| C | X | 1×1 Conv (projection) | O |
| C | O | 1×1 Conv (projection) | O |
A vs B
A에서 0으로 채워지는 부분들은 shortcut으로는 아무 정보도 전달되지 않았기 때문에 학습이 조금 더 걸린다.
B가 약간 더 좋다.
B vs C
C가 조금 더 좋은데 구조의 차이때문이 아니고 그냥 파라미터 개수가 늘어나서 그렇다.
세 방법 중 어떤걸 쓰든 안 쓰는 것보단 좋고, B와 C 대신 A만 써도 degradation은 해결된다.
C방법은 아주 약간의 성능 상승이 있지만 비용이 너무 늘어나서 안쓴다.
이번에는 bottleneck 구조에 대해 알아보자.
그냥 무작정 깊게 만들면 연산이 많아진다.
그래서 계산을 줄이기 위해 특정 층(예:3x3) 앞뒤로 1x1짜리 층을 하나씩 넣는 것이다.
앞의 1x1 층은 채널 수를 줄인다.
3x3에서 줄어든 채널로 계산을 하고
뒤의 1x1에서 다시 채널 수를 늘린다.
이 방법이 연산을 줄이기 위해 하는 방법이기 때문에 shortcut에서도 최대한 identity를 사용하고, 차원변경이 있을 때만 projection을 사용한다.
34-layer모델의 3x3 레이어 두 개를 3층의 bottleneck구조로 바꿔 50-layer모델을 만들었다.
차원을 늘릴 때는 방법B를 사용했다.
각 모델들의 세부 층 구성은 아래 표에서 볼 수 있다.

152-layer 모델이어도 VGG-16/19 nets 보다 더 낮은 복잡도를 가진다.
아래의 표를 보면 깊이가 깊어지면 degradation없이 성능이 늘어나는 걸 볼 수 있다.


위의 오른쪽 표는 single model들을 비교한 것이다.
4.49의 에러율로 가장 좋은 성적을 냈다.
심지어 더 대단한 것은 이 ResNet single model의 4.49라는 값이 앙상블 기법을 사용한 다른 모델들보다 더 좋았다는 것이다.
아래 표에서 확인할 수 있다.
싱글모델도 이렇게 좋은데 앙상블까지 적용해주면 3.57라는 수치까지 나오게 된다.

4.2. CIFAR-10 and Analysis
여태까지 테스트에 쓰던 ImageNet데이터 셋은 너무 컸다.
그래서 32x32이미지를 입력으로 사용하는 CIFAR-10이라는 상대적으로 작은 데이터셋을 사용했다.
층이 깊기 때문에 연산 부담을 줄이기 위해 사용한 것이다.
한 stage에 있는 residual block의 개수 n에 대해 6n 층의 모델을 만들었다.
맨앞의 conv 층과 마지막의 FC층까지해서 총 6n+2층이된다.
예를 들어 n=18이라면 110층 모델이 된다.
이 결과 평가 부분에서는 20,32,44,56,110층의 모델을 비교한다.

아래 그림에서 점선은 훈련 오차, 실선은 테스트 오차를 얘기한다.
가장 왼쪽의 그림을 보면 층이 깊어질수록 에러율이 올라가는 것을 볼 수 있다.
중앙 그림을 보면 반대로 층이 깊어질수록 에러율이 줄어드는 것을 볼 수 있다.
오른쪽 그림을 보면 이 똘끼있는 연구자들이 1202층까지 모델을 쌓아본 것을 볼 수 있다.
훈련 오차는 거의 0에 가깝지만 테스트 오차는 110모델보다 크다.
이는 32x32크기의 이미지 입력에 비해 너무 모델이 커서 과적합이 발생한 것이다.

아래 그림은 각 레이어의 출력의 표준편차를 나타낸 것이다.
보면 plain(점선)보다 ResNet(실선)의 값들이 전반적으로 낮은 것을 볼 수 있다.
따라서 입력에 더해지는 오차$F(x)$만 잘 학습하고 있다고 생각할 수 있고, 이 표준편차가 작기 때문에 모델을 안정적으로 유지하기가 쉽다.

<요약>
딥러닝의 고질적인 문제였던 '깊어질수록 학습이 안 되는 문제(Degradation)'를 단순한 더하기 하나로 해결하며, 인공지능을 100층 너머의 세계로 들어갈 수 있게 해준 논문
핵심 포인트
1. 문제 : Degradation Problem
단순히 층을 깊게 쌓는다고 성능이 좋아지지 않는다.
이는 과적합(Overfitting) 때문이 아니라, 네트워크가 깊어질수록 항등레이어도 학습하지 못할 정도로 최적화 난이도가 급격히 높아지기 때문이다.
2. 해결 아이디어 : Residual Learning
기존 방법 ($H(x)$) 대신, "입력값과의 차이만 수정하는 방식($F(x) = H(x) - x$)"을 제안.
이미 알고 있는 정보($x$)를 숏컷(Shortcut)으로 전달하고, 레이어는 '미세한 변화(Residual)'만 학습하게 하여 난이도를 획기적으로 낮춤
3. 해결 구조 : Shortcut Connection
추가적인 파라미터나 연산량 증가 없이 단순히 입력값을 뒤로 더해주는 구조.
역전파 시 Gradient가 소실되지 않고 입력층까지 전달되는 고속도로 역할.
4. 효율적 구조 : Bottleneck Design
50층 이상의 깊은 모델에서는 $1 \times 1$ 컨볼루션을 활용해 채널을 압축했다가 다시 늘리는 '병목 구조'를 사용하여, 층은 훨씬 깊어지면서도 연산량(FLOPs)은 오히려 VGG 같은 이전 모델보다 낮게 유지.
5. 성능
ImageNet 대회(ILSVRC 2015)에서 152층 모델로 우승.
이후 이 구조는 컴퓨터 비전을 넘어 NLP 등 딥러닝 전 분야의 표준(Backbone)이 되었다.
'AI > 컴퓨터비전(CV)' 카테고리의 다른 글
| [CV 논문] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (1) | 2026.01.07 |
|---|---|
| [CV 논문] Squeeze-and-Excitation Networks (1) | 2026.01.03 |
| [CV 논문] Going Deeper with Convolutions (2) | 2025.12.30 |
| [CV 논문] Very Deep Convolutional Networks for Large-Scale Image Recognition (4) | 2025.12.28 |
| [CV 논문] ImageNet Classification with Deep ConvolutionalNeural Networks (0) | 2025.12.26 |