2 분 소요

image

“Deep Residual Learning for Image Recognition” 논문을 개인 공부 및 리뷰를 위해 쓴 글입니다.
논문 링크 : https://arxiv.org/abs/1512.03385



1. Introduction

  • 네트워크 깊이는 ImageNet 데이터셋의 결과에 미칠만큼 매우 중요한 요소이다.
  • 깊이가 중요해지면서, 한 가지 질문이 떠오른다.

    Is learning better networks as easy as stacking more layers?

  • 이 질문에 답하기 위해서는 vashing gradients 문제를 해결해야 한다.
  • 또한 deeper network가 수렴(convergence)를 시작할 때, 성능 저하(degradation) 문제가 발생할 수 있다.
    • 네트워크 깊이가 증가함에 따라 정확도가 saturated 나서 빠르게 저하되는 현상
    • 이러한 성능 저하는 과적합(overfitting)이 원인이 아니고, 더 많은 층을 추가하면 높은 학습 에러(training error)가 발생한다. (Fig. 1)


  • 이 논문에서는, 성능 저하 문제를 deep residual learning framework를 도입하여 해결하려고 한다.
  • 각 층이 직접 매핑되기를 바라기 보다는, 이런 층들이 잔차(residual) 매핑에 맞게 허용한다.
  • $x$ : 기존 input
  • $\mathcal{H}(x)$ : 원하는 기본 매핑
  • $\mathcal{F}(x) := \mathcal{H}(x) - x$ : 쌓인 비선형 층이 다른 매핑에 적합하도록 한다.
    • 즉, weight layer-> relu -> weight layer
  • $\mathcal{F}(x) + x$ : 원본 매핑
    • 즉, weight layer -> relu -> weight layer -> relu
  • 즉, 예측하려는 $y$가 $x$와 같다고 보고 $y-\mathcal{H}(x)$를 학습하기 보다는 $x-\mathcal{H}(x)$를 학습하는 게 더 쉽고 빠르다. 1


  • $\mathcal{F}(x) + x$는 숏컷 연결(shortcut connection)(=skipping one)을 가진 피드포워드(feedforward) 네트워크로 실현된다.
    • 피드포워드(feedforward) : 입력 층(input layer)에 온 데이터가 1개 이상으로 구성된 은닉 층(hidden layer)을 거쳐 마지막에 있는 출력 층(output layer)으로 출력 값을 내보내는 과정 2
  • shortcut connection은 단순히 identity 매핑을 수행하고, 그 출력은 쌓아올린 층의 output에 추가된다. (Fig. 2)
    • 이 연결선은 추가 매개 변수나 계산 복잡성을 추가하지 않는다.
    • 즉, 일정 층들을 건너뛰어 출력에 더할 수 있게 해준다.
    • 이 연결때문에 입력 신호가 전체 네트워크에 손쉽게 영향을 미치게 된다. 3
  • 요약 : 숏컷 연결을 추가해 어떤 층에 주입되는 신호가 상위 층의 출력에도 더해져 $\mathcal{F}(x)$ 만 학습 수행!


  • 이 논문은 2가지를 보여주려고 한다.

    1. deep residual net은 최적화하기 쉽다
      • 반면, plain net은 깊이가 증가하면 더 높은 학습 오류를 보인다.
    2. deep residual net은 크게 증가한 깊이(depth)에서 정확도 향상을 보여준다.



Residual Representations

  • VLAD : dictionary와 관련하여 residual vector로 인코딩되는 표현
  • Fisher Vector : VLAD의 확률(probabilistic) 버전


Shortcut Connections

  • gated shortcut이 닫힐(approaching zero)때, highway network의 층들은 non-residual 함수를 나타낸다.
  • 하지만, 여기에 나오는 공식은 항상 residual 함수를 학습한다.
  • identity shortcut은 결코 닫히지 않으며, 모든 정보는 항상 통과된다.



3. Deep Residual Learning

3.1 Residual Learning

  • residual 함수 $\mathcal{H}(x) - x$가 여러 비선형 층(non-linearity layers)이 복잡한 함수에 점근적으로 근사(approximate)할 수 있다고 본다.
  • 따라서, residual 함수 $\mathcal{F}(x) := \mathcal{H}(x) - x$에 근접하도록 명시적으로 허용한다.
  • 따라서, 원래 함수는 $\mathcal{F}(x) + x$가 된다.

기존 신경망이 H(x) - x = 0을 만들려 했다면 ResNet은 H(x) - x = F(x) 로 두어 F(x)를 최소화 시키려고 합니다. 즉 F(x) = 0 이라는 목표를 두고 학습을 진행합니다. 이렇게 학습을 진행하면 F(x) = 0이라는 목표값이 주어지기 때문에 학습이 더 쉬워집니다. 결국 H(x) = F(x) + x 가 되는데 이때 입력값인 x를 사용하기 위해 쓰는 것이 Skip Connection입니다. 즉 Skip Connection은 입력 값이 일정 층들을 건너뛰어 출력에 더할 수 있게 하는 역할을 합니다. 4


  • 비교 및 정리

image

  • 기존 CNN 구조는 x -> weight layer -> relu -> weight layer -> relu -> H(x)
    • 그 후 최적의 H(x)를 찾기 위해 weight 파라미터 값을 수정해나간다.
  • 하지만 오른쪽 그림처럼, F(x)를 최적화하려고 한다면 최적의 H(x)(=출력)-x(=입력) 값의 최소화를 찾도록 학습한다.
    • 즉, 다시 말해 H(x)=F(x)+x 라 할 때, F(x)가 거의 0에 도달하는 방향으로 학습시켜 입력(x)의 작은 움직임을 쉽게 검출할 수 있다. 5


3.2 Identity Mapping by Shortcuts

image
이미지출처 6


  • $y=\mathcal{F}(x,{W_i})+x$ : building block
    • $\mathcal{F}$와 $x$의 차원은 반드시 같을 때
  • $y=\mathcal{F}(x,{W_i})$ : 학습할 잔차 매핑
  • $\sigma$ : relu
  • $\mathcal{F}+x$는 shortcut connection과 요소별 덧셈에 의해 수행된다.
  • $y=\mathcal{F}(x,{W_i})+W_ix$
    • $\mathcal{F}$와 $x$의 차원이 같지 않을 때
    • $W_i$ : linear projection


3.3 Network Architectures

resnet


3.4 Implementation

  • Dataset : ImageNet
  • Resize : 224 x 224
  • batch normalization (BN) 적용 (conv와 activation 사이)
  • 256 미니 배치 크기의 SGD 사용
  • learning rate : 0.1
  • 모델은 $60 \times 10^4$ 까지 훈련한다.
  • weight decay : 0.0001
  • momentum : 0.9
  • dropout X



4. Experiments

image


Deeper Bottleneck Architectures

  • 할애할 수 있는 훈련 시간을 고려해야 되기 때문에, building block을 bottleneck 구조로 수정했다. (Fig. 5)
    • 1x1 conv 층 2개를 사용하기 때문에 연속 2번인 3x3 conv층보다 연산량 줄어듦.
    • bottleneck 구조를 이용하여 더 깊은 층을 쌓을 수 있게 되었음.
    • 코드로 알고 싶으신 분은 ResNet_scratch_pytorch 여기를 참조!!





References

댓글남기기