오늘은 ResNet 논문을 리뷰해 보고자 한다.
일단, 처음 받아서 읽은 논문인 만큼, 처음부터 다 이해할 수 있을 거란 생각은 안 했고... 이해할 수 있는 만큼 하고자 노력했다.
아직 완벽히 이해한 건 아니지만, 그래도 정리해보는 게 좋을 것 같아 기록을 남긴다.
Abstract
- 신경망이 깊어질수록 학습에 어려움이 발생한다.
- 이러한 문제를 해결하고자 residual learning framwork를 제안함. (이를 활용하면, 이전의 모델들보다 더 깊이 학습할 수 있음)
- VGG보다 8배 더 깊은 152개의 레이어로 이미지넷 데이터셋을 평가했을 때, VGG보다 여전히 복잡성이 더 낮았고, 3.57%의 오류율을 달성함.
** background
층이 깊어지면 텍스처, 사물과 같은 복잡한 것들을 추출해낼 수 있기 때문에 층을 깊게 하는 것이 성능 향상에 중요하다는 건 알고 있었으나, ResNet 이전까지의 모델들은 레이어가 깊어진다고 무조건 성능이 좋아지는 게 아니었음.
1. Introduction
깊이의 중요성
- CNN을 깊게 쌓는 것은 Image Classification 분야에서 일련의 돌파구의 역할을 함.
- 깊은 신경망은 자연스럽게 low/mid/high level feature로 통합됨.
- feature의 levels는 레이어의 깊이에 따라 풍부해질 수 있음.
- 최근 연구에선 네트워크 깊이가 매우 중요하고, 이미지넷 데이터셋에 도전한 주요 결과들도 16~30 사이의 매우 깊은 모델을 사용함.
- 다른 비자명한 visual recognition tasks에서도 매우 깊은 모델들로 큰 이익을 얻음.
단순히 레이어를 깊게 쌓는다면 더 좋은 네트워크를 학습할 수 있는가?
- vanishing/exploding gradient과 같은 문제들이 처음부터 수렴을 방해할 수 있음.
-> 다만, 이것들은 정규화된 초기값, 중간 정규화 레이어에 의해 해결 가능함.
- 레이어가 깊어지면, 수렴을 시작할 때 degradation problem이 발생할 수 있음.
- degradation problem : 레이어가 깊다고 무조건 정확도가 증가하는 것이 아니라, 어느 정도 이상 깊으면 오히려 정확도가 떨어지는 문제
- 이것은 단순히 overfitting으로 인해 발생하는 문제가 아님.
- 아래의 사진처럼 training error가 높아져서(학습이 잘 안 돼서) 발생한 문제임.
- 이는 모든 시스템이 유사하게 최적화되진 않음을 보여줌.
- 얕은 아키텍처 위에 더 많은 층을 추가하는 깊은 아키텍처를 생각해 보자.
- 다른 층들은 모두 얕은 아키텍처에서 복사되고, 추가된 층들은 모두 identity mapping
- 이론적으로, 이러한 구조에서 깊은 모델이 얕은 모델보다 높은 training error를 발생시켜선 안됨. (identity mapping이 성능을 저하시킬 이유가 없으니까) 오히려 깊은 아키텍처가 더 나은 성능을 내야 함. -> 그러나 성능이 오히려 저하됨.

-
논문에선 이러한 degradation problem을 해결하기 위해 deep residual learning framework을 제안
- 기존에 의도했던 매핑을 바로 학습하기보단, 명시적으로 residual mapping을 통해 학습을 시키겠다는 것임.
- H(x) : underlying mapping (원래 의도한 매핑)
- F(x) := H(x) - x (사용할 매핑) -> 이걸로 학습 (원래 매핑 - 입력 데이터 간 잔차를 구해서 입력 x에 대해 얼마나 변화를 줘야 하는지를 찾아냄)
- 원래의 매핑은 다시 F(x)+x로 캐스팅 (output)
-
극단적인 예시를 살펴보면, identity mapping이 최적의 해일 때(H(x) = x)인 경우), 신경망의 여러 비선형층을 조정해 identity mapping을 맞추는 것보다 residual이 0이 되도록 하는(F(x)가 0이 되도록 하는) 형태로 학습을 진행하는 게 더 쉽다.
-
F(x)+x는 "shortcut connection"에 의해 실현됨.
- shortcut connection은 하나 이상의 레이어를 건너뛰는 연결
- 단순히 identity mapping 수행
- 그저, 기존의 output에 이 연결의 output을 더해주는 형태
- 추가 매개변수나 계산 복잡성을 추가하지 않음
- 여전히 다양한 공통 라이브러리를 통해 쉽게 구현할 수 있고, 여전히 SGD와 역전파를 통한 학습이 가능함.

이 논문에선 무엇을 보여주고자 하는가?
- deep residual nets은 최적화가 쉽지만, 단순히 층을 쌓는 plain nets은 깊이가 증가할 때 높은 training error를 보임.
- deep residual nets은 깊이가 크게 증가함에 따라 정확도 향상을 쉽게 누릴 수 있어 이전 네트워크보다 훨씬 더 나은 결과를 얻음.
- CIFAR-10 데이터셋을 통해서도 100개 이상의 레이어/1000개 이상의 레이어를 가진 모델을 성공적으로 학습함. -> 이는 residual learning이 특정 데이터셋에 국한되지 않은 방법이라는 것을 의미함.
- ImageNet 분류 데이터셋에서도 top-5-error가 3.57%에 달함. -> 우수한 성능
- residual learning은 다른 인식 작업에서도 뛰어난 일반화 성능을 보임.
여기서는 기존에 있던 관련 연구들에 대해 소개한다.
Residual Representation
- 벡터 양자화에서 residual vector를 인코딩하는 것이 original vector를 인코딩하는 것보다 더 효과적임.
- low-level 비전이나, 컴퓨터 그래픽은 편미분 방정식 해결을 위해 Multigrid 방법을 사용해 여러 스케일의 하위 문제로 재구성하고, 하위 문제는 더 거칠고 미세한 스케일 사이의 잔차 해를 얻도록 함. (쉽게 말해서, 여러 스케일의 하위 문제로 재구성하고, 각 스케일에서 해결된 해의 잔차를 계산해 정확도를 판단 -> 문제 개선의 방향성 제시)
- Multigrid의 대안 : hierarchical basis preconditioning
- 두 스케일 사이 잔차 벡터를 대표하는 변수에 의존해 이 변수를 사용하여 문제를 효과적으로 해결 (쉽게 말해, 잔차 벡터를 활용해서 해를 구하는 방식)
- 해의 잔여 성질을 알지 못하는 표준 해결책보다 더 빠르게 수렴
-> good reformulation, preconditioning은 최적화를 간단하게 만듦.
다시 말해 이러한 residual 방식들은 이 논문 말고도 다른 곳에서도 꾸준히 사용되던 방식이고, 이걸 학습에 적용 시키면 최적화를 좀 더 간단히 할 수 있다는 것
Shortcut connection
- shortcut connections는 오랫동안 연구되어 온 방법으로, 특정 층을 건너뛰어 연결하는 방식임. -> vanishing/exploding gradient 해결에 도움을 줌.
- 다층 퍼셉트론(MLPs)의 초기 연구에선 입력에서 출력으로 직접 연결되는 선형 계층을 추가하는 것이 일반적
- 중간층에서 보조 분류기(auxiliary classifiers)를 직접 연결하는 방법(학습 보조)도 vanishing/exploding gradient 해결
- shortcut connection을 통해 구현된 layer responses, gradient, propagated error를 위한 방법
- highway networks도 gating function과의 shortcut connection을 제시함.
- 이러한 게이트는 데이터에 의존적이고 매개변수를 지님.
- 게이트의 shortcut이 0에 가까울 때(close), highway network의 layer는 non-residual function을 나타냄. (입력에 대한 변화를 거의 주지 않고, 입력을 그대로 전달한다는 의미)
- 네트워크 깊이가 극도로 증가함에 따라 정확도 향상을 입증하지 못함 (ex) 100개 이상의 레이어
-> 이에 반해, residual learning은 항상 residual function을 학습하며, shortcut이 close될 일이 없음. 모든 정보는 항상 전달되며, 추가적인 잔여 함수도 학습함.
- 게이트의 shortcut이 0에 가까울 때(close), highway network의 layer는 non-residual function을 나타냄.
이 부분을 제대로 이해하기 어려워서 다시 찾아봤는데, highway network는 다음과 같이 표현되는데, 이때 게이트 T가 0에 가까워질 수록 입력 x에 의존하고, H(x)의 영향은 거의 없어져 y의 값이 x에 근사하는 경향을 지닌다. 이땐 H(x)가 사실상 무시되는 수준이므로, non-residual function으로 작용한다는 것
y=H(x)⋅T+x⋅(1−T) (이때, y는 출력, T는 게이트 값, x는 input, H(x)는 매핑함수)
3. Deep Residual Learning
3.1. Residual Learning
- H(x) : 몇몇 적층된 층에 맞추기 위한 underlying mapping(반드시 전체 net은 아님)
- x : 첫 번째 입력
- 여러 비선형 층이 복잡한 함수를 점근적으로 근사할 수 있다고 가정하면, 이는 residual function인 H(x)-x를 점근적으로 근사할 수 있다고 가정하는 것과 같음.
- 층들이 H(x)를 직접 근사하기 보단, F(x):=H(x)-x를 명시적으로 근사하도록 허용함.
- H(x), F(x) 모두 원하는 함수를 점근적으로 근사할 수 있지만 학습의 용이성은 다를 수 있음. (F(x)를 통해 학습 할 때의 난이도가 더 쉬움)
다시 말해, F(x)로도 학습할 수 있고, H(x)로도 학습이 가능한데 학습의 용이성이 F(X), 즉 residual function을 사용하는 게 더 낫기 때문에 이것을 사용하겠다는 것임.
- 이러한 재구성은 degradation problem에 대한 직관에 반하는 현상에 의해 영감을 받음.
- 서론에서 이야기한 것과 같이 추가된 레이어를 identity mapping으로 구성한다면, 더 깊어진 모델은 training error가 얕은 모델보다 크지 않아야 함.
- degradation problem은 일반적인 경우에 비선형 레이어를 통해 identity mapping에 근사하는 데 어려움을 겪을 수 있음을 시사함.
- residual learning 재구성을 통해 identity mapping이 최적이라면, H(x)는 여러 비선형층의 가중치를 0에 가깝게 조정해 identity mapping에 접근할 수 있음.
- 실제 경우에 identity mapping이 최적일 가능성은 낮지만, 이러한 재구성은 문제를 사전 조건화 하는 데 도움을 줌.
- 최적의 함수가 zero mapping보다 identity mapping에 가깝다면, residual function을 활용해 학습하는 것이 더 쉬움.
- 아래의 결과에서도 보듯 residual을 이용한 것이 일반적으로 더 작은 응답을 보여준다는 것을 확인할 수 있고, 이는 identity mapping이 합리적인 사전 조건을 제시함을 시사함.

3.2. Identity Mapping by Shortcuts
- 모든 few stacked layer마다 residual learning을 적용함.
- building block은 다음과 같이 정의함.
y=F(x,Wi)+x (이때, x는 input, y는 output, F(x,Wi)는 학습될 residual mapping)
- 예를 들어, Fig2 building block으로 예를 들면, F=W2σ(W1x) (σ는 ReLu)
- F(x) + x 연산은 shortcut connection을 의미하고, element-wise addtion임.
- 파라미터나 계산 복잡도 X
- 위의 식에서 x와 F의 차원은 같아야 하는데, 만약 같지 않으면 차원을 맞추기 위해 linear projection Ws를 적용함.
- y=F(x,Wi)+Wsx
- 함수 F의 층은 유연해서, 많은 층을 쌓을 수 있음. (이때엔 이점이 있음) 근데 단일층만 사용했을 때, 즉 위의 방정식과 유사한 형태로 사용했을 때의 이점은 관찰되지 않음.
- 위의 표기는 단순화를 위해 완전 연결 레이어에 관한 것을 나타낸 것이지만, 합성곱층에도 적용 가능해서 여러 합성곱 층을 나타낼 수도 있음.
3.3. Network Architectures
- plain network / residual network를 통한 실험 진행
Plain Network
- VGG 네트워크의 철학에서 영감을 받음
- 합성곱 계층은 대부분 3*3 필터를 사용하며, 두 가지 간단한 설계 규칙을 지님.
- 특징 맵 크기가 같을 때 각 레이어들은 같은 수의 필터를 지님.
- 특징 맵 크기가 절반으로 줄어들면, 필터 수는 두 배로 증가하여 각 층의 시간 복잡도를 유지함..
- stride가 2인 합성곱 레이어를 통해 직접 다운샘플링 수행
- 네트워크는 평균 풀링 레이어와 소프트맥스 함수가 있는 1000-way fully connected layer로 끝남. (출력 뉴런이 1000개)
- 총 가중치 층의 수는 34개
- VGG보다 필터 수가 적고, 복잡도가 낮음
- 36억 FLOPs를 지니며, 이는 VGG의 18%에 해당
VGG는 합성곱 계층과 풀링 계층으로 구성되는 기본적인 CNN으로, 비중이 있는 층(합성곱 계층, 완전 연결 계층)을 모두 16층(혹은 19층)으로 심화한 것이 특징임.
FLOPs : 초당 부동 소수점 연산 횟수
Residual Network
- Plain Network를 기반으로 shortcut connections을 삽입하여 residual version으로 변환
- 차원이 증가할 땐 두 가지 옵션을 고려
- (A) : shortcut은 여전히 identity mapping을 수행하며, zero padding을 적용해 차원 증가
- (B) : Eqn(2)의 projection shortcut을 사용해 차원 증가
- 두 옵션 모두 shortcut이 두 개의 크기를 가진 특징맵을 넘을 땐(서로 다른 크기의 특징맵을 연결할 땐) stride를 2로 설정. 즉, 다운샘플링을 통해 연결한다는 것임.

3.4. Implementation
- 이미지의 짧은 쪽을 [256, 480] 범위 내에서 랜덤하게 resize하여 scale augumentation을 수행함.
- 이후, 크기 조정된 이미지를 통해 224×224 크기로 랜덤하게 크롭과 수평 반전을 수행하고, 각 픽셀에서 학습 데이터 이미지의 픽셀값 평균을 빼줌.
- standard color argumentation 사용함.
- 각 합성곱 후, 활성화 함수 이전에 batch normalization 적용함.
- 미니 배치 크기는 256이며 학습은 SGD를 사용함.
- 가중치 초기화는 He 방법으로 초기화
- 학습율은 0.1로 시작해 오차가 정체되면 10으로 나눔.
- 모델은 최대 60∗104회 반복
- weight decay=0.0001, momentum=0.9
- 드랍아웃은 사용하지 않음
4. Experiments
4.1. ImageNet Classification
- 1000개 클래스를 구성하는 2012 ImageNet 분류 데이터셋을 통해 평가
- top-1과 top-5 오류율 평가
Plain Networks
- 18-layer와 34-layer plain nets 평가
- Table2에서 보듯이 18-layer보다 34-layer가 검증 오류가 더 높음
- 이유를 찾기 위해 Figure4에서 training/validation error를 비교했을 때, degradation 문제를 발견함. (이는 18-layer가 34-layer의 부분공간임에도 발생함 -> 더 나아지지 않고 오류율이 높아진다는 지금까지 맥락과 동일)


- 이러한 최적화의 어려움이 vanishing gradient로 인해 발생할 가능성이 낮다고 주장 -> plain network는 배치 정규화(BN)을 통해 학습되기 때문에 순전파/역전파 신호가 모두 사라지지 않고 정상적으로 전파되고 있음을 확인함 -> deep plain net이 지수적으로 낮은 수렴률을 가지고 있다고 추측하고 있음 -> 이와 관련해선 향후 연구될 것
Residual Networks
- 18-layer와 34-layer residual nets 평가
- 기본 아키텍처는 Fig3과 같이 3*3 필터쌍에 shortcut connection이 추가된 형태 (모든 shortcut에 대해 identity mapping 수행, 증가하는 차원에 대해선 zero padding 사용[옵션A])
- 추가적인 파라미터 없음
- 34-layer ResNet이 18-layer ResNet보다 2.8% 더 나은 성능을 보임
- degradation 문제도 해결 (34-layer에서 더 낮은 오류율)
- 결론 : 깊이가 증가함에 따라 정확도 향상을 얻을 수 있고, error도 줄어든 것을 확인할 수 있음. 또한, 18-layer에선 plain/residual 모두 비슷한 정확도를 보이는데, 수렴 속도는 아래의 그래프에서도 볼 수 있듯 residual nets이 더 빠른 수렴 속도를 보임. (따라서 최적화에 residual learning이 더 용이하다)

Identity vs. Projection Shortcuts
지금까진 파라미터가 없는 identity shortcuts이 학습에 도움이 된다는 걸 지금까지 보여줬기 때문에 이곳에선 식2(linear projection 적용해서 파라미터가 존재하는 경우)에 대해 조사한다. (표 3)
세 가지 옵션에 대한 비교 진행
- (A) zero padding shortcut을 사용해 차원을 증가시키고, 모든 shortcut은 파라미터가 없음
- (B) projection shortcut을 사용해 차원을 증사기키고, 다른 shortcut은 identity 방식
- (C) 모든 shortcut은 projection 방식
모든 옵션이 plain network보다 우수하지만, B가 A보다 약간 더 나은 성능을 보이는 이유는 zero padding 차원이 실제로 residual learning이 없기 때문이고(단순 padding만 붙여준 것이기 때문에 파라미터 차이가 없음), C가 B보다 더 나은 성능을 보이는 것은 projection으로 인해 추가된 파라미터 때문임.
하지만, 메모리와 시간 복잡도를 줄이기 위해서 본 연구에선 C는 사용하지 않는다. 다만, identity shortcut은 아래의 병목 아키텍처의 복잡성을 증가시키지 않기 위해 중요하기 때문에 이것을 사용한다.

Deeper Bottleneck Architectures
- 학습 시간에 대한 우려로 병목 설계로 building block 수정
- 1x1층은 차원을 줄였다가 다시 증가시키는 역할을, 3x3층은 더 작은 입력/출력 차원을 가진 병목 역할을 하도록 함
- 이전과 현재 설계 모두 유사한 시간 복잡성을 지니며, 파라미터가 없는 identity shortcuts은 병목 아키텍처에서 특히 중요함. (projection으로 대체되면 시간 복잡성과 모델 크기가 2배로 증가하기 때문)

병목 설계에 대한 자세한 내용은 이곳을 참고하자.
https://coding-yoon.tistory.com/116
50-layer ResNet
- 2-layer block을 3-layer 병목 구조로 대체하여 50-layer ResNet 설계
- 차원을 늘리기 위해 옵션 B 사용 (projection shortcut을 사용해 차원을 증가시키고, 다른 shortcut은 identity 방식)
- 38억 FLOPs
101-layer and 152-layerResNets
- 3-layer 병목 구조를 사용해 101-layer, 152-layer 구성
- 깊이가 크게 증가했고, 152-layer ResNet(113억 FLOPs)은 VGG-16/19(153억/196억 FLOPs)보다 여전히 낮은 복잡성을 지님.
- 50-layer/101-layer/152-layer는 34-layer ResNet보다 상당히 정확하고 degradation 문제도 관찰하지 못함.
- 결론 : 깊이가 증가함에 따라 상당한 정확도 향상을 누릴 수 있음.

Comparisons with State-of-the-art-Methods.
-
Table 4에서 보듯이, 이전의 최고 단일 모델 결과와 비교했을 때, 매우 경쟁력 있는 정확도 달성

-
152-layer ResNet의 단일 모델 top-5 validation error는 4.49%로, 이전 모델들의 모든 앙상블 결과를 능가함.
-
test set에서 3.57%의 top-5 오류를 발생시키며, 2015 ILSVRC에서 1위 차지

4.2. CIFAR-10 and Analysis
- 10개 클래스를 구성하는 CIFAR-10 데이터셋을 통해 평가
- 깊은 네트워크 동작을 확인하는 것이 목표이지 최고의 결과를 만들어내는 것이 목표는 아니므로 간단한 아키텍처 사용
- input : 32*32 이미지 (각 픽셀에서 학습 데이터 이미지의 픽셀값 평균을 빼줌)
- 크기가 {32, 16, 8}인 특징 맵이 있고, 각 특징맵에 대해 3*3 컨볼루션이 사용되며, 각 특징 맵 크기마다 2n개 레이어 사용됨. (전체 레이어 스택은 6n개)
- 서브샘플링은 stride 2의 컨볼루션을 통해 수행
- 네트워크의 끝은 평균 풀링, 10-way fully-connected layer와 softmax로 구성됨.

- 환경
- shortcut connections를 사용할 때, 3*3 layer 쌍에 연결되며(총 3n shortcut) 이 데이터셋에서는 모든 경우 identity shortcut(옵션 A - zero padding shortcut을 사용해 차원 증가)을 사용하므로 모델의 깊이, 너비, 파라미터 수는 plain과 정확히 동일
- weight decay=0.0001, momentum=0.9, BN을 통한 가중치 초기화, 드롭아웃은 사용하지 않음.
- 2개의 GPU에서 128의 미니배치 크기로 학습 진행
- 0.1의 학습률로 시작해 32k와 48k 반복에서 10으로 나누고 64k에서 훈련 종료
- data argumentation : 각 측면에 4개 픽셀을 패딩하고, 패딩된 이미지 또는 수평 플립에서 32x32 크롭을 무작위 샘플링하고, 테스트를 위해 원본 32x32 이미지의 단일 뷰만을 평가
- 결과
- 20, 32, 44, 56-layer 네트워크와 비교 -> plain net은 깊이가 증가할수록 높은 훈련 오류를 보임
- 110-layer에서는 학습률 0.1이 수렴하기엔 약간 커서 0.01을 사용해 training error가 80% 이하가 될 때까지 학습시킨 후, 다시 0.1로 학습률을 설정하고 계속 학습 진행 -> 잘 수렴하는 것을 확인할 수 있음

- 다른 네트워크와 비교했을 때도, 파라미터 수가 적은데도 불구하고 좋은 결과를 나타냄. (6.43%)

Analysis of Layer Responses
- 배치 정규화 후, 활성화 함수 이전 응답의 표준편차를 살펴보면, ResNet이 plain network보다 더 작은 응답을 보이는 것을 확인할 수 있음.
- 이는 residual이 non-residual보다 일반적으로 0에 더 가까울 수 있다는 것(수렴하기 쉽다는 것)에 대한 근거를 뒷받침함.
- ResNet에선 층이 깊어질수록 응답 크기가 더 작아지는 것도 확인할 수 있음

- 표준 편차 정의 : 분산의 제곱근 -> 표준 편차가 작을 수록 평균 값에서 데이터(변량)들의 거리가 가까움. 따라서 응답의 표준편차가 낮다는 것은 데이터를 일관성 있게 잘 학습하고 있다는 것.
Exploring Over 1000 layers
- 1000개 이상 layer를 지닌 깊은 모델을 테스트해 보면, 아래 그림에서도 볼 수 있듯 좋은 성능을 보임.
- 그러나, 문제는 Training Error는 비슷하지만, Testing Error는 더 깊은 모델인 1202-Layer의 성능이 더 떨어지는 현상이 발생하고, 이것이 overfitting에서 기인하는 문제라고 생각함. (작은 데이터셋에 비해 과도하게 많은 레이어를 사용하고 있기 때문)
- 이러한 overfitting 문제는 maxout/dropout을 통해 해결할 수 있고, 이는 앞으로 더 연구할 것.

4.3. Object Detection on PASCAL and MS COCO
- residual learning은 다른 인식 작업에서도 좋은 일반화 성능을 보이며, Table 7, Table 8은 PASCAL VOC 2007과 COCO에 대한 객체 탐지 기준 결과를 보여줌
- 탐지 방법 : Faster R-CNN 채택
- COCO 데이터셋에서 표준 메트릭인 mAP@[.5,.95]에서 6.0%의 상대적 향상을 얻었으며, 이는 이전 모델의 성능에 비해 28%의 상대적 향상을 이룬 것임.
- PASCAL VOC 2007 dataset

- COCO dataset

정리
정리해 보자면, 레이어가 깊어질수록 모델이 입력 데이터의 복잡한 패턴과 특징을 찾을 수 있고, 모델이 더 나은 일반화 성능을 보일 수 있기 때문에 레이어를 많이 쌓는 것(깊은 모델을 만드는 것)에 대한 중요성은 늘 인지하고 있었는데, 이를 막고 있던 것이 degradation 문제이다.
degradation 문제는 레이어가 깊다고 무조건 정확도가 증가하는 것이 아니라, 어느 정도 이상 깊으면 오히려 정확도가 떨어지는 문제로, 단순히 overfitting으로 인해 발생하는 문제가 아니고 레이어가 깊어질수록 모델의 학습이 잘 되지 않아 발생하는 문제였다.
ResNet 논문에선 이를 해결하기 위해 residual learning을 제안한다. 원래 의도한 매핑에 shortcut connection을 추가하여 residual learning을 진행하면, 추가적인 파라미터나 계산 복잡성을 추가하지 않은 채로 기존보다 효율적으로 학습을 진행할 수 있고, degradation 문제를 해결해 레이어가 깊어질수록 training error 또한 줄어드는 것을 확인할 수 있었다. 또한, 이전의 다른 모델들에 비해 성능도 뛰어나다는 것을 다양한 실험을 통해 확인할 수 있었다.
또한, 이러한 성능 향상은 ImageNet 데이터셋에만 국한되는 것이 아니라, CIFAR-10과 같은 다른 데이터셋에도 효과가 있고, 다른 인식 작업에서도 좋은 일반화 성능을 보이는 것을 확인할 수 있었다.