본문 바로가기

4. Paper/논문 리뷰

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

날렵한 곰의 논문 리뷰 시리즈 입니다.
* 논문 읽는 연습을 하는 단계에서 쓴 글입니다.

- 논문 링크 : 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

Abstract

문제점

- neural network는 깊게 쌓을수록 학습하기가 어렵다.

해결점

- 이전의 모델들보다 더 깊은 모델을 학습하기 위한 residual learning framework (잔차 학습 프레임워크)를 제안한다.

- 해당 모델은 레이어의 입력을 참조하여 레이어를 잔차 학습 함수로 재구성한다.

- 해당 논문은 residual network가 쉽게 optimize가 되며, 상당히 깊은 모델에서 정확도를 얻는 경험적인 증거를 제공한다.

내용

- ImageNet dataset에서 VGG net보다 5배 더 깊지만 여전히 복잡도가 낮은 최대 152 레이어 깊이의 residual network를 평가했다.

- 해당 논문은 CIFAR-10을 100개와 1000개 레이어로 분석한 내용을 담았다.

결과

- test set에서 3.57%의 에러율로 ILSVRC 2015 분류 대회에서 1위를 달성했다.

- 이외 COCO와 ImageNet에서 좋은 성과를 거두었다.


Summary

최근 연구결과들에서 convolutional neural network는 deep 하게 쌓을수록 결과가 좋아서 이미지 분류에서 많이 사용되고 있으며 모델의 깊이가 매우 중요함을 시사한다.

Is learning better networks as easy as stacking more layers?

"그렇다면 레이어를 많이 쌓을수록 더 괜찮은 모델을 학습할 수 있을까?"라는 의문을 가질 수 있다.

해당 질문에 대하여 대답하는 데에는 Vanishing gradients, Exploding gradients 때문이라고 생각할 수 도 있었지만,

해당 문제들은 Normalized Initialization와 Intermediate Normalization Layers에 의하여 해결되었다.

(Intermediate Normalization Layers는 Batch Normalization같은 것을 말하는 것)

 

깊은 게 쌓은 모델은 수렴을 시작할 때 성능 저하(degradation problem)를 보였고 모델 깊이가 증가할수록 정확도는 빠르게 떨어졌다.

기대와 다르게 이러한 성능저하는 Overfitting으로 야기된 것이 아니었다. 

 

위의 실험으로 이를 증명했다. Figure 1을 보면 레이어를 56개 쌓은 모델과 20개를 쌓은 모델로 CIFAR10을 학습한다.

56개 쌓은 모델은 train set과 test set에서 모두 20개 쌓은 모델보다 낮은 성능을 보였다.

(Overfitting이 문제였다면 적어도 training set에서는 낮은 에러를 보여야 하지만 그렇지 않다.)

 

 

이러한 학습정확도의 저하(degradation)는 모든 시스템을 비슷하게 최적화 하기가 어려움을 보여준다.

 

깊은 모델을 구성하는 해결책으로는 identity를 매핑하는 레이어를 추가하고 이외의 레이어는 학습된 하위 모델을 복사하는 방법이 있었다.

하지만 해당방법이 실험을 통해 좋은 성능을 내진 못했으며, 해당 방법보다 더 동등하거나 더 좋은 방법을 찾지 못했다.

 

그렇기에 해당 논문에서 deep residual learning 이라는 방법을 도입했다.

 

각 쌓여진 레이어들이 기본 매핑으로 fit 되길 바라는 것이 아닌 잔차매핑에 fit 되도록 했다.

기본매핑을 H(x)로 표시할 때, 우리는 비선형 매핑인 F(x) = H(x) - x를 제시한다. 그리고 이를 전개하면 H(x) = F(x) + x가 된다.

이는 참조되지 않은 기본매핑을 fit 시키는 것보다 잔차 매핑(residual mapping)을 fit 시키기가 더 쉽다는 가정을 기반으로 한다.

To the extreme, if an identity mapping were optimal, it would be easier to push the residual to zero than to fit an identity mapping by a stack of nonlinear layers.

극단적으로 identity mapping이 optimal 하면 잔차를 0으로 만드는 것이 비선형 레이어로 identity mapping을 fit 하는 것보다 쉬울 것이다.

즉 F(x) = 0 이 되도록 학습하는 것이 더 최적화하기에 쉬운 방법이라는 것이다.

 

F(x) + x는 "shortcut connectons"로 실현 가능하다. shortcut connectons는 한 개 이상의 레이어를 skip 하는 것이다.

위의 경우 간단한 identity mapping을 수행하며 이것의 출력과 쌓인 레이어의 출력이 더해진다.

 

Identity shortcut connections 은 추가적인 파라미터와 복잡한 계산이 필요하지 않으며, 위 모델은 여전히 end-to-end로 SGD를 이용한 backpropagation이 가능하며 기본 라이브러리로 쉽게 구현할 수 있다.

 

 

위 논문에서 2가지를 보여주려고 한다.

1) deep residual net은 쉽게 optimize 되지만 plain은 deep 해질수록 높은 에러를 보이는 것

2) deep residual net은 쉽고 즐겁게(?) 레이어가 깊어질수록 이전 모델들에 비하여 높은 정확도를 얻어내는 것 

 

Residual Learning

위와 마찬가지로 H(x)를 근사 시키는 것보다 이항 하여 F(x)를 근사 시키는 것이 학습에 있어 더 유리하다는 내용이다.

 

Identity Mapping by shortcut

식은 대강 이런식으로 생겼다

Fig.2에서의 모델로 재구성하면 F = W2σ(W1x) 이런 모양이 된다. 여기서는 표기를 위해 bias를 생략했다고 하니 F = W2+b2σ(W1x+b1)라고 생각하면 될 것 같다. 또한 위 식을 구현하기 위해서는 F와 x를 같은 차원으로 맞춰주어야 한다.

 

만약 F에서 output size가 x size와 달라졌다면 linear projection으로 차원을 맞춰 줄 수 있다.

 

Network Architectures

plain net과 residual net을 테스트한다.

 

Plain Network

plain baseline은 주로 VGG net에 영감을 얻어 만들어졌다. 합성곱 레이어는 3x3 필터와 2개의 규칙으로 설계되었다.

i) 같은 output feature map size와 같은 크기의 필터

Ii) 만약 feature map size가 절반으로 줄어들면 필터 크기가 2배로 늘어나 시간 복잡도를 보존한다.

 

합성곱 레이어에서 stride 2로 downsampling을 하고,

모델의 마지막엔 global average pooling layer, 1000-way의 fully-connected layer, softmax를 사용했다.

34개의 레이어로 되어있으며, 이 모델은 VGG net보다 필터가 많고 복잡도가 낮다. (VGG-19의 18% 정도의 연산량)

 

Residual Network

Plain Network를 기반으로 하며 shortcut connection이 추가되었다.

Residual Network는 input과 output을 같은 크기로 맞추어 주어야 한다. 그렇게 하기 위해 2가지를 고려해 볼 수 있다.

(A) zero padding을 추가하여 사이즈를 맞춘다. 해당 방법은 파라미터가 추가로 발생하지 않음.

(B) projection을 이용하여 사이즈를 맞추어 준다.

 

Implementation

구현 방법과 파라미터 설정에 대하여 설명한다.

- 224x224 size의 데이터를 사용한다.

- batch normalization을 이용한다. (conv net과 activate 사이에)

- Initialize Weights

- SGD

- mini-batch 256개

- learning rate 0.1

- iteration 60 x 10^4

- weight decay 0.0001

- momentum 0.9

- dropout은 사용 안 함

 

 

Experiments

ImageNet Classification

Plain Network.

plain net의 경우 이전의 결과에서 실험 결과에서 34-layer가 18-layer보다 더 성능이 안 좋은걸 확인했었는데 이는 Batch normailization을 사용한 결과이기에 vanishing gradient 때문이라고 보기 어렵다.

아래 결과를 보면 plain은 34-layer가 더 낮은 성능을 보이는 반면 ResNet은 34-layer가 더 높은 성능을 내며 degration문제가 어느 정도 해결된 것이 관측 가능하다.

ResNet.

resnet의 모든 shortcuts에 identity mapping을 이용하고 사이즈를 맞추기 위해 zero padding을 사용한다.

그렇기에 다른 추가 파라미터가 없다. 위에서 말한 (A) 방법을 사용함.

 

1. 34-layer resnet이 18-layer resnet 보다 더 높은 성능으로 degration문제를 잘 잡았다.

2. plain과 비교했을 때 34-layer는 성공적으로 training error를 줄였다.

3. 18-layer의 두모델은 정확도는 비슷하지만 더 빠르게 수렴한다. SGD를 이용하여 수렴할 때 Plain보다 ResNet이 더 좋은 성능을 낸다.

 

Identity vs. Projection Shortcuts.

Identity 방식으로 해봤으니 이번엔 projection shortcuts방식으로 해본다.

 

아래 표에서 ResNet-34의 A, B, C 방법을 비교한 것을 보자

(A) 현재까지 봤던 zero padding으로 차원을 증가시킨 방법이다. 이 방법은 추가적인 파라미터가 필요 없다

(B) projection shortcuts를 이용하여 차원을 증가시킨 방법이다. 다른 shortcut은 identity

(C) 모든 shortcut이 projection

위의 표를 보면 C > B > A 순의 성능을 확인할 수 있다.

A는 zero padding에 대하여는 잔차 학습이 이루어지지 않기에 B보다 성능이 약간 낮고

C가 B보다 projection shortcuts에 extra parameters가 많이 들어가기 때문에 성능이 더 높다.

 

= degradation problem의 문제의 해결에 projection shortcuts이 필수적이지 않다는 것을 말하려고 한다.

그래서 해당 논문에서는 C 모델을 사용하지 않는다.

 

Deeper Bottleneck Architectures.

아래는 deep 한 net을 설명한다.

위 모델에서는 학습시간을 고려하여 Bottleneck 구조를 사용한다.

각각의 잔차 함수는 2개 대신 3겹으로 쌓는다. 모양은 오른쪽 그림과 같은 구조로 이루어져 있다.

1x1은 차원을 감소시키고 복원하는 역할을 하여 3x3이 더 적은 입력과 출력을 갖게 한다.

이를 통해 기존과 비슷한 복잡성을 유지할 수 있다.

 

50-layer ResNet.

2-block인 34-layer를 -> 3-block으로 바꾸어 50-layer로 만들었다.

(B) 모델을 이용했다.

해당 모델은 3.8 billion FLOPs

 

*플롭스(FLOPS, FLoating point Operations Per Second)는 컴퓨터의 성능을 수치로 나타낼 때 주로 사용되는 단위이다.

 

101-layer and 152-layer ResNets.

3-layer를 더 쌓아봤다.

해당 모델은 11.3 billion FLOPs

여전히 VGG모델들보다 복잡성이 낮다

* VGG-16/19 nets (15.3/19.6 billion FLOPs)

이렇게 만든 ResNet은 34-layer 보다 확실하게 높은 성능을 보인다.

 

Comparisons with State-of-the-art Methods.

6개의 각기 다른 깊이의 모델을 앙상블 하여 test set에서 3.57%의 top-5 error를 보였다.

해당 모델로 ILSVRC 2015 1등 했다.

 

-끝-