https://arxiv.org/abs/1512.03385
Deep Residual Learning for Image Recognition
Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual functions with
arxiv.org
오늘은 CV 분야의 큰 획을 그었던 ResNet 논문을 리뷰할 것이다.
ResNet은 잔여학습이라는 레이어에게 잔여학습을 학습시키는 개념을 이용하며 확연히 개선된 성능을 입증하였다.
현재 CV 분야 많은 모델의 백본 모델로서 활약하고 있는 ResNet의 큰 장점으로는 아이디가 simple하면서도, 성능이 확연히 향상됐다는 점이 있다. 실제로 이미지넷 대회 상으로 이전 단계였던 VGG 모델보다 8배 가량 깊지만, 복잡성은 오히려 낮은 네트워크 구조를 가진다.
1. Introduction
1. 기존의 방법론
복잡한 데이터셋에서 네트워크가 깊을 수록 성능이 잘 나오는 경향이 있었다.
따라서 VGG와 같은 모델 처럼 네트워크를 무작정 많이 쌓기에는 기울기 소실 혹은 폭발 같은 문제가 일어날 우려가 있다.
이러한 문제는 내부 공변량 변화(매 레이어 마다 입력값 분포가 달라지는 현상)에 의한 경우가 많아 이를 해결하기 위해 *정규화된 초기화*, *중간 정규화 레이어* 등의 방법으로 확연히 개선되었으나, 여전히 미해결 과제로 남아있다.
너무 깊어질 때 외려 정확도가 떨어지는 현상은 과적합이라고 단정지을 수는 없다.
> 얕은 네트워크로 학습을 시킨 후 "항등함수" 레이어로 많이 추가하면 출력이 동일하고, 학습 오류도 차이가 나면 안됨
> 그러나, 학습 오류가 점점 커지기도 함
> 아하, 현재의 최적화 기법(확률적 경사하강법)은 깊은 곳에서 적절하지 않구나!
2. 핵심 아이디어
Deep Residual Learning 프레임워크
: 레이어가 목표함수가 아닌 잔여 함수를 학습
잔여 함수: $F(x) := H(x) - x$
$H(x)=F(x)+x$ 에서 기존에는 H(x)를 학습했다면,
ResNet에서는 F(x)를 학습하고, X는 지름길 연결을 통해 넘겨주는 것
지름길 연결은 x를 슉 넘겨주는 방식임 (하이패스 개꿀)
최적의 레이어가 항등 매핑인 경우, x는 지름길 타고 알아서 가고
학습해야하는 F(x)는 0이니까 학습하기 짱 쉬움!
3. 성과 및 의의
포괄적으로 실험해본 결과
- 일반 네트워크는 깊으면 학습 오류가 증가하지만, 잔여 네트워크는 깊어도 최적화 용이
- 잔여 네트워크는 깊어질 수록 정확도 향상, 성능도 개굿
= 우리 꺼 개쩖
2. 관련 동작
잔여 표현
VLAD (Vector of Locally Aggregated Descriptors) 는 잔여 벡터를 인코딩하는 방식,
Fisher Vector는 VLAD의 확률적버전이었는데,
이미지 인식에서 이 둘이 높은 성능을 보여줬고, ‘잔여’의 개념이 얼마나 효과적인지 보여줌
지름길 연결
- 기존에 지름길 연결이 어떻게 활용됐는지!
- MLP에서의 활용: 입력에서 출력까지 직접 연결된 선형 계층으로 학습을 보조하려 했었음
- 보조 분류기: 기울기 소실을 해결하기 위해 중간 레이어에 보조 분류기를 연결했었음
- 인셉션 네트워크: 여러 경로를 병렬로 두고 통합하는 과정에서 지름길 연결 사용
- 하이웨이 네트워크와의 비교
- 추가적인 매개변수가 필요하다
- 잔여함수가 0에 수렴해 게이트가 닫히면 더이상 해당 레이어는 잔여함수를 학습하지 않음
3. 잔여 학습 기법
1. 잔여 학습
비선형 레이어가 개많이 쌓이면 오류가 증가
레이어들이 목표함수가 아닌 잔여 함수를 학습하는 거임
잔여 함수: $F(x) := H(x) - x$
$H(x)=F(x)+x$ 에서 기존에는 H(x)를 학습했다면,
ResNet에서는 F(x)를 학습하고, X는 지름길 연결을 통해 넘겨주는 것
2. 지름길 연결을 통한 항등 매핑

잔여 학습
$y = F(x, \{W_i\}) + x$
- $x$: 입력 벡터 (이전 레이어의 출력).
- $y$: 출력 벡터 (현재 레이어의 출력).
- $F(x, \{W_i\})$: 잔여 함수(residual function), 학습해야 할 매핑(mapping)을 나타냄.
- $F(x, \{W_i\}) = W_2 \sigma(W_1 x)$
- : 예제에서는 두 개의 선형 변환 $W_1,W_2$와 ReLU 활성화 함수 $\sigma$로 정의됨
- 이건 두 개의 레이어를 묶은 거임
- 입출력 차원 다를 때 말고는 이렇게 죄다 묶어서 토끼굴 지나가듯 펄쩍 넘어가면 됨
- 컨볼루션 레이어가 3개일땐? - $F(x) = W_3\sigma(W_2\sigma(W_1x))$
작동방식
- x는 y로 바로 전달되고 레이어가 잔여함수를 학습한다
- 두 신호가 원소별 덧셈으로 합쳐져, 최종 y를 만든다
- 비선형 활성화함수 (ReLU)가 적용돼, 비선형성을 추가한다.
지름길 연결의 장점
- 매개변수 및 계산 복잡도 X
- 잔여 네트워크와 일반 네트워크는 동일한 매개변수 수, 깊이, 너비로 공정한 비교 가능
입력과 출력 차원이 다를 때
선형 투영(Linear Projection)
$x$의 차원을 $F(x, \{W_i\})$의 차원으로 변환하는 선형 투영 $W_s$를 사용한다
웬만하면 항등함수 이용하는 게 나음… 차원이 다를 때만!
$y=F(x)+W_sx$
- Identity Shortcut(기본) – 실성입력의 변경 없이 그대로 출력에 더함
- 입출력 차원이 같을 때
- Projection Shortcut(선형 투영) – 점선입력을 선형변환하여(ex. 1 x 1 conv) 출력의 차원과 일치시킨 후 출력에 더함
- 입출력 차원이 같지 않을 때

3. 네트워크 아키텍쳐
일반 네트워크와 잔여 네트워크의 차이!!
일반 네트워크
필터는 보통 3 x 3, 피처맵 크기가 줄어들 수록 개수 증가 등등의 특징이 있음
문제점
- 깊어지면 학습에 문제
- 기울기 소실 문제
ResNet
“잔여함수”만 학습하면됨
→ 기울기소실 꽤 해결~!~!
“지름길 연결” 방법은 차원이 변할 때 각별한 주의 필요행
- 차원이 유지될 때
- 지름길 타고 온 애랑 F(x)랑 걍 원소별 덧셈 해주면 됨
- 차원이 변할 때 (다운샘플링 되는 시점 등)$y=F(x)+W_sx$
- 지름길 타고 온 애를 필터 씌워주고(차원 바꾸는 역할) 더함
4. Experiments
ResNet을 다양한 데이터셋에서 실험한 결과, 다음과 같은 장점이 확인됨.
- 다양한 데이터셋에서도 잘 동작
- ImageNet, CIFAR-10, PASCAL, MS COCO 등 여러 데이터셋에서 검증
- 특정한 데이터에만 성능이 좋은 것이 아니라 일반적으로 강력한 모델임.
- 구조가 간단하고 이해하기 쉬움
- 기존 모델보다 더 깊지만, 지름길 연결(Shortcut Connection) 덕분에 학습이 쉬움.
- 잔여 학습(Residual Learning) 개념이 직관적이라 모델 구조를 이해하기 쉬움.
- 연산 비용이 적음
- VGG-19보다 연산량(FLOPs)이 훨씬 적음 (VGG-19의 18% 수준!).
- 하지만 성능은 VGG보다 훨씬 뛰어남 → 더 적은 연산량으로 더 높은 성능 달성!
- 네트워크를 깊게 만들수록 성능이 계속 향상됨
- 기존 네트워크는 너무 깊어지면 성능 저하(Degradation Problem)가 발생했지만,ResNet은 100층 이상에서도 성능이 계속 올라감.
- 152층까지 쌓아도 학습이 잘 되며, ImageNet에서 역대 최고 성능을 기록.
- 우리 모델 짱이다! (State-of-the-Art 성능 달성)
- ILSVRC 2015 대회 1위 기록 (ImageNet classification에서 최고 성능).
- COCO 객체 탐지, 분할(Segmentation)에서도 최고 성능 달성.
- 즉, 이미지 분류뿐만 아니라 다양한 비전 문제에서도 강력한 모델임