논문 리뷰/CV

[논문 리뷰] Deep Residual Learning for Image Recognition (ResNet)

taewan-study-record 2025. 3. 23. 02:02

Abstract

깊은 neural network는 훈련하기 어렵다. 우리는 훨씬 더 깊은 netrworks의 훈련을 쉽게 하기 위해 Residual Learning(잔차 학습)을 제안한다.

 

우리는 참조되지 않은 함수를 학습하는 대신 레이어 입력을 참조하여 학습 잔차 함수로 레이어를 명시적으로 재구성한다.

=> 기존의 함수로 학습하기 보다 전의 입력값을 참조하여 학습에 활용하는것으로 대신한다.

 

결과 : ImageNet dataset에서 VGGNet 보다 8배 깊은 152개의 layer를 쌓을 수 있었고 더 적은 복잡도를 가진다.


1. Introduction

Deep convolutional neural network가 image classification에서 획기적인 성과를 이루었고, layer 가 증가할 수록 feature의 level이 더 풍부해질 수 있다.

=> 하지만, Figure 1에서 볼 수 있듯이 깊이가 깊어질수록 training err 와 test err 또한 높아짐을 알 수 있다.

vanishing/ exploding gradients(기울기 소실/폭주) 가 원인이다.

이러한 문제는 normalized initialization, intermediate normalization layers 에 의해 대체로 해결되었고 이를 통해 수십 개의 layer가 있는 network가 역전파를 사용하여 SGD를 위해 수렴을 시작할 수 있다.

 

하지만 networks가 깊어지면서 정확도가 포화하거나 급속도로 저하하는 문제가 발생하였고 이러한 문제점을 해결하기 위해서 residual learning(잔차학습) framework 를 도입하였다.

 

기존 매핑을 H(x) 라고하면 stacked nonlinear layers가 F(x) = H(x) - x 의 다른 매핑에 맞도록 한다.

원래 매핑은 H(x) = F(x) + x 로 다시 캐스팅 된다.

 

=> H(x) = F(x) + x 를 하게되면 F'(x) 가 0으로 수렴하더라도 x의 미분값인 1이 더해지기 때문에 기울기 소실과 정확도를 잡을 수 있다?

 

F(x) + x공식은 shortcut(skip) connections을 가진 feedforward neural network로 구현할수 있다.

 

이러한 실험의 결론은 아래와 같다

1. 엄청 깊은 networks는 최적화하기 쉽지만, residual learning을 활용하지 않고 단순히 layer를 쌓기만한 일반 netwokrs는 깊이가

   증가할수록 더 많은 error를 보인다.

 

2. 본 논문의 residual learning network는 크게 증가한 깊이에서도 정확도 향상을 쉽게 얻을수 있고, 결과도 크게 개선되었다.


2. Related work

Residual Representation

  • vector quantization에서 residual vector를 인코딩하는 것이 original vector를 인코딩하는 것보다 효과적임
  • good reformulation이나 preconditioning은 optimization을 간소화할 수 있음

 

Shortcut Connection

  • "highway network"가 gating function과 함께 shortcut connection을 다룸
  • highway network의 gate는 data-dependent하고 parameter가 있음
    • 이와 다르게 parameter free
  • gated shortcut이 닫히면(zero에 가까워지면) layer들은 non-residual function이 됨
    • 이와 다르게 항상 residual하며, shortcut이 닫히는 일 없음

Inception layer

  • shortcut branch와 몇 개의 deeper branch로 구성

3. Deep Residual Learning

3.1 Residual Learning

H(x)를 few stacked layer의 underlying mapping이라고 하면 F(x) = H(x) - x를 H(x) = F(x) + x라 생각해보면 학습하기가 더 쉽다.

residual learning reformulation으로, identity mapping이 optimal하다면, solver는 weight를 얻기가 더 쉬울 것

-> 실제로 identity mapping이 optimal할 것 같진 않지만, 우리의 reformulation은 problem을 precondition하는 데 도움이 됨

 

3.2 Identity Mapping by Shortcuts

모든 few stacked layers에 residual mapping을 적용한다.

Fig2에서 building lock을 보여준다.

 

Equation(1)

F(x,{W_i}) 는 학습될 residual mapping을 의미하고, F = W_2σ(W_1 x) 에서 σ는 ReLu를 의미한다

F + x 가 shortcut connection을 의미하고 element-wise addition 이다.

x와 F의 차원은 같고 parameter도 없고 계산 복잡도도 없다.

 

Equation(2)

F와 X의 차원이 같지 않을 경우 차원을 맞추기 위해, shortcut connection에 linear projection W_s를 적용할 수 있다.

 

3.3 Network Architectures

plain / residual network 모두 실험을 진행하였다.

 

Plain Networks

VGG net 에 영감을 받았다.

 

Residual Network

plain network 에 shorcut connection을 삽입함

 

위에서 말한것과 같이 input 과 output 차원이 같을땐 Eq(1)을 사용한다

output dimension이 증가한 경우 2가지 방법이 있다.

1. zero padding을 적용하여 shortcut은 identity mapping을 수행한다.

2. 차원을 맞추기 위해 Eq(2)의 projection shortcut을 사용한다.

VGG/ Plain / Residual

 

3.4 Implementation

image는 더 짧은 쪽의 길이로 resize가 되고 224 x 224 크기로 random 하게 sample 된다.

standard color augmentation이 사용된다.

각 conv 이후와 activation 전에 Batch normalization 을 적용한다.

256사이즈의 mini-batch로 SGD를 사용하고 learning rate 는 0.1로 시작하여 error가 안정되면 10으로 나눠준다.

iter는 60만번, 0.0001의 weight decay와 0.9의 momentum 사용, dropout은 사용하지 않았다.

 

테스트에서 비교 연구를 위해 standard 10-crop testing을 적용하였고

가장 좋은 결과를 위해 fully-convolutional form을 채택하였고 multiple scale에서 score를 평균 낸다.


4. Experiments

4.1 ImageNet Classification

 

ResNet의 성능이 더 좋았고, ResNet 중에서도 깊이가 깊은 Network가 더 좋은 성능을 보였다.

 

Plain Networks

34-layer plain net이 가장 높은 train err 를 보였다.

-> BN을 적용했기때문에, vanishing gradient에서의 optimization difficulty는 아니고 깊은 plain ent이 exponentially low convergence rate를 가질거라고 추측한다.

 

Residual Networks

모든 shortcut에 identity mapping을 사용하고, 증가한 차원에 대해서는 zero-padding을 적용하였다.

-> 따라서 plain net와 비교했을 때 extra parameter가 없음

 

18-layer 보다 34-layer ResNet이 성능이 더 좋았다.

가장 중요하게, 34-layer ResNet은 training error도 더 낮았다.

-> 이는 degradation problem이 잘 다뤄졌다는 것을 의미한다.

-> extreme deep system에서 Residual Learning의 효과를 알 수 있음

 

18-layer도 accuracy는 꽤 좋지만, 18-layer ResNet이 더 빠르게 수렴하였다.

network가 너무 깊지 않으면 (여기선 18 layer), SGD가 여전히 plain net에서 잘 동작한다는걸 볼 수 있다.

-> 이 경우, ResNet 은 초기 단계에서 convergence를 더 빠르게 해서 optimization을 더 쉽게 한다.

 

 

Identity vs Projection Shortcuts

 

paramter free 와 identity shortcut이 training 을 돕는 것은 이미 앞에서 보았다.

다음으로 Projection Shortcut 에 대해서 알아보겠다. (Eq(2) 를 말함.)

 

세 가지 옵션을 비교하였다.

 

(A) 증가하는 차원에 대해 zero-padding shortcut, 모든 shortcut은 parameter free

(B) 증가하는 차원에 대해 Projection shortcut 적용, 그렇지 않으면 identity shortcut 적용

(C) 모든 경우에 Projection shortcut 적용

 

 

C > B > A 의 결과가 나왔다.

 

Deep Bottleneck Architectures

training 하는 시간을 줄이기 위해서 building block을 bottleneck 구조로 변경하였다.

 

residual function에서 3개의 layer stack을 사용한다.

3개는 각각 1x1, 3x3, 1,1 conv 이다.

1 x 1  conv : 차원을 줄이고 늘리는 역할

3 x 3 conv : input / output 차원의 bottleneck

 

그림의 두 구조는 시간 복잡도가 유사하다. parameter-free identity shortcut은 bottleneck 구조에서 중요하게 작용한다.

-> 만약 projection shortcut이면, shortcut이 두 고차원에 연결되어 있기 때문에, 시간 복잡도와 모델 사이즈가 두 배가 됨

 

실험 결과 152 layer 까지도 34 layer보다 더 정확한걸 볼 수 있었다.

 

이후 4.2, 4.3 장 에서는 CIFAR-10, MS COCO 에서 다른 network들 간의 비교를 보여준다.

뒤에서 또한 ResNet의 성능이 더 뛰어나다는 것을 보인다.


학교 인공지능 시간에도 다뤘던 내용인데 논문리딩을 통해서 다시 ResNet에 대해서 복습을 해보았다.

앞으로 4-1 캡스톤2에서 ResNet을 활용한 Classification을 직접 경험 해 볼 예정이다.

다음에는 ResNet 코드로 글을 적을 예정이다.