[DL] Deep Residual Learning for Image Recognition

suzu·2025년 11월 9일

Paper Review

목록 보기
3/13

Deep Residual Learning for Image Recognition 논문 리뷰
https://arxiv.org/abs/1512.03385

0. Abstract

  • 신경망이 깊어질수록 train하기 어려워지는 문제 → 본 논문에서는 이전 신경망들보다 더 깊은 네트워크를 쉽게 train할 수 있는 residual learning framework를 제시함
  • Unreferenced functions를 학습하는 것 대신에, 레이어 input을 참조하는 잔차 함수(residual functions)를 학습함으로써 레이어 재구성
  • Residual networks가 optimization하기 쉽고, 깊이가 깊어져도 높은 accuacy를 보일 수 있다는 경험적인 증거를 제시함

  • ImageNet 데이터셋에서, 최대 152개 레이어의 residual networks를 사용해 3.57%의 error
    • VGGNet보다 8배 깊지만 complexity는 더 낮음
    • ILSVRC 2015 classification task에서 1등
  • 레이어 100개, 1000개를 가지고 CIFAR-10 데이터를 분석한 것도 제시함
  • COCO 2015에서도 좋은 성과를 거둠

1. Introduction

  • 신경망이 깊어질수록 고수준의 features를 얻을 수 있으므로 까다로운 데이터셋에서 매우 깊은 모델들을 활용해 좋은 성능을 얻음
  • 이러한 depth의 중요성에 따라오는 질문: Is learning better networks as easy as stacking more layers? (더 나은 네트워크를 학습하는 것이 더 많은 레이어를 쌓는 것만큼 쉬울까?)


    i.e. 레이어를 무작정 많이 쌓는다고 해서 성능이 비례해서 증가하는가? ⇒ ❌
    1. Vanishing/exploding gradients problem

      : 이 문제는 normalization으로 해결 가능

    2. Degration problem

      : Deeper networks가 수렴을 시작할 수 있게 되면 네트워크 깊이가 증가함에 따라 정확도가 포화 상태가 되고(accuracy gets saturated), 급격히 성능이 저하되는 문제가 발생함

      이는 과적합(overfitting)으로 인한 것이 아님. 이미 적절히 깊은 모델에 더 많은 레이어를 추가하면 test error 뿐만 아니라 training error부터가 더 커짐

      더 깊은 모델은 기존의 얕은 모델을 확장한 구조이기 때문에 이론적으로는 얕은 모델보다 더 좋은 솔루션을 찾을 수 있어야 함. (There exists a solution by construction to the deeper model.)

      하지만 실제 실험에서는 현재 우리가 사용하는 최적화 알고리즘들(current solvers)이 그 "constructed solution"만큼 좋은 해답을 찾지 못하거나, 찾는 데에 너무 많은 시간이 걸린다는 문제가 있음

  • Deep residual learning framework를 이용해 degradation problem을 다룸
    • 원하는 목표 함수 자체를 학습하게 하는 대신, 레이어들이 기존 입력과 목표 출력 간의 residual을 학습하게 만드는 접근 방식
    • 원하는 함수(desired underlying mapping) H(x)\mathcal{H}(\mathrm{x})를 나타내기 위해, 쌓여 있는 비선형 레이어들이 다른 함수 F(x):=H(x)x\mathcal{F}(\mathrm{x}):=\mathcal{H}(\mathrm{x})−\mathrm{x}를 학습하도록 함 💡 $\mathcal{H}(\mathrm{x})−\mathrm{x}$ Residual(잔차), 목표 함수와 입력값 간의 차이 → 원래의 목표 함수 $\mathcal{H}(\mathrm{x})$는 **$\mathcal{F}(\mathrm{x})+\mathrm{x}$**로 표현
    • Residual mapping을 최적화하는 것이 원래 함수 자체를 최적화하는 것보다 더 쉽다고 가정함 (예를 들어, 만약 우리가 원하는 함수가 항등 함수(입력과 출력이 같은 함수, H(x)=x\mathcal{H}(\mathrm{x}) = \mathrm{x})라면, 레이어들이 항등 함수를 학습하도록 직접 최적화하는 것보다 잔차가 0이 되도록 학습시키는 것이 더 수월함. F(x)=0\mathcal{F}(\mathrm{x})=0)
    • F(x)+x\mathcal{F}(\mathrm{x})+\mathrm{x} : Feedforward neural networks with “shortcut connections”으로 구현 가능
      • Shortcut connections : 하나 이상의 레이어를 건너뛰는 연결 (i.e. 일부 레이어를 건너뛰면서 바로 이전의 출력값을 후속 레이어에 전달하는 구조)
        • 여기서는 단순히 항등 매핑(identity mapping, +x+\mathrm{x})을 수행하며, 그 output이 기존 output에 더해짐

        • 추가적인 parameter나 계산 복잡도를 더하지 않음

        • 전체 네트워크는 여전히 SGD와 backpropagation를 통해 끝까지 학습 가능

        • 일반적인 라이브러리를 사용해 solver를 수정하지 않고도 쉽게 구현 가능

  • 단순히 레이어를 쌓은 plain nets는 일정 깊이 이상 증가하면 training error가 커지는 문제가 있는 반면, extremely deep residual nets는 쉽게 최적화 가능 (Degradation degradation problem 해결)
  • ResNet은 레이어 깊이가 크게 증가해도 성능이 계속 향상됨 (ImageNet과 CIFAR-10 데이터셋 실험에서 확인된 바와 같이, 이 방법은 특정 데이터셋에만 국한되지 않고 다양한 상황에서 유용함)
  • Residual Learning 원리는 다른 비전 영역 및 비시각 문제에서도 적용 가능할 것이라고 기대함

2. Related Work

— 관련된 기존 연구들에 대해

  1. Residual Representations

    • VLAD, Fisher Vector : 이미지 데이터를 사전(dictionary) 또는 확률적인(probabilistic) 방식으로 residual vector로 표현해 powerful shallow representation을 제공함
    • Multigrid method, hierarchical basis preconditioning : 저수준 컴퓨터 그래픽에서 잔차를 활용하여 더 효율적인 최적화를 가능하게 함

    → Residual을 이용하는 것이 좋다는 아이디어

  2. Shortcut Connections

    • 오래전부터 연구된 shortcut connections — 주로 vanishing/exploding gradients 문제를 해결하는 데 사용
    • Highway networks : 데이터에 따라 가변적인 gating functions가 있지만, 깊은 네트워크에서 성능 향상은 보이지 않았음
    • ResNet의 identity shortcut은 파라미터가 없어 모든 정보를 잔차 형태로 계속 전달함

    → ResNet의 identity shortcut의 장점

3. Deep Residual Learning

3.1. Residual Learning

H(x)\mathcal{H}(\mathrm{x}) : 목표 함수 An underlying mapping to be fit by a few stacked layers (not necessarily the entire net)

x\mathrm{x} : input

  • 입력과 출력의 차원이 같을 때, 비선형 레이어 여러 개를 쌓으면 복잡한 함수를 근사할 수 있듯이 목표 함수와 input의 차이인 residual function H(x)x\mathcal{H}(\mathrm{x})−\mathrm{x} 역시 근사 가능

F(x):=H(x)x\mathcal{F}(\mathrm{x}) := \mathcal{H}(\mathrm{x})−\mathrm{x}

H(x)=F(x)+x\mathcal{H}(\mathrm{x})= \mathcal{F}(\mathrm{x}) + \mathrm{x}

  • 직접적으로 H(x)\mathcal{H}(x) 전체를 맞추려 하지 않고, xx에 어떤 변화를 더해야 하는지를 나타내는 F(x)\mathcal{F}(\mathrm{x})만 학습
이를 통해 복잡한 목표 함수 $\mathcal{H}(\mathrm{x})$를 학습하는 데 있어 어려움이 줄어들 수 있다는 가정

  • 레이어를 깊게 쌓을수록 training error가 커지는 degradation 문제 = 여러 개의 비선형 레이어들이 identity mapping를 근사하는 데 어려움을 겪을 수 있음
    • 그러나 residual learning으로 문제를 재구성: 만약 identity mapping이 최적이라면, solver는 여러 비선형 레이어의 가중치를 단순히 0에 가깝게 설정하여 identity mapping에 접근할 수 있게 됨
  • 실제 상황에서는 identity mapping이 최적일 가능성은 낮지만, 이러한 재구성(reformulation)이 문제를 미리 조건화(precondition)하는 데 도움이 될 수 있음
  • 만약 optimal function이 zero mapping보다는 identity mapping에 더 가깝다면, solver가 identity mapping를 기준으로 약간의 변동만 찾는 것이, 완전히 새로운 함수를 학습하는 것보다 더 쉬울 것
  • 실험을 통해 residual function이 작은 값을 가지는 경향을 보임 → identity mapping이 reasonable한 preconditioning을 제공한다는 것을 시사
    • i.e. H(x)=F(x)+x에서 F(x)가 0에 가깝다는 것은 H(x)가 x와 크게 다르지 않다(=항등함수와 크게 다르지 않다)는 것을 의미함
    • 네트워크가 입력 x에 대해 아주 작은 변화만을 학습하면 되므로 좋음

3.2. Identity Mapping by Shortcuts

We adopt residual learning to every few stacked layers.

y=F(x,{Wi})+x\mathrm{y} = \mathcal{F}(\mathrm{x}, \{W_i\}) + \mathrm{x}

⬆️ A building block

x,y\mathrm{x}, \mathrm{y} : input and output vector

F(x,{Wi})\mathcal{F}(\mathrm{x}, \{W_i\}) : residual mapping to be learned

⬆️ F=W2σ(W1x)\mathcal{F} = W_2 \sigma (W_1 \mathrm{x})

  • weight layer 통과 : W1xW_1 \mathrm{x}
  • ReLU 함수 : σ(W1x)\sigma(W_1 \mathrm{x})
  • weight layer 통과 : W2σ(W1x)W_2 \sigma (W_1 \mathrm{x})
  • (bias 생략)
  • shortcut connection & element-wise addition : F(x)+x\mathcal{F}(\mathrm{x}) + \mathrm{x}
  • Shortcut connection에서 추가적인 parameter가 필요하지 않으며 computation complexity가 증가하지 않는다는 사실이 중요함
  • x\mathrm{x}F\mathcal{F}의 차원이 동일해야 함

차원 맞추기 위해 WsW_s 수행하기도 함

➡️ y=F(x,{Wi})+Wsx\mathrm{y} = \mathcal{F}(\mathrm{x}, \{W_i\}) + W_s \mathrm{x}

3.3. Network Architectures

  1. Plain Network

    : VGGNet에서 영감을 받았음 — conv filter의 사이즈가 3 x 3이고, 다음 2가지 규칙에 기반하여 설계됨

    1. Output feature map의 size가 같은 layer들은 모두 같은 수의 conv filter를 사용
    2. Output feature map의 size가 반으로 줄어들면 time complexity를 동일하게 유지하기 위해 필터 수를 2배로 늘림. Downsampling 수행 시 pooling을 사용하는 것이 아니라 stride가 2인 conv filter 사용. 모델 마지막 부분에 global average pooling, 사이즈가 1,000인 FC layer와 Softmax를 사용. 결과적으로 전체 layer 수는 34.

    이는 VGGNet보다 적은 필터와 복잡성을 가진다. (c.f. VGGNet은 4,096 사이즈 FC layer가 2개 추가됨)

    ResNet은 VGGNet과 비교하여 다음과 같은 방식으로 복잡성을 줄였습니다.

    • 잔차 블록 디자인: ResNet의 기본적인 잔차 블록은 VGGNet의 블록보다 효율적으로 설계되었습니다. 특히, 더 깊은 ResNet 모델(예: ResNet-50 이상)에서는 병목(bottleneck) 아키텍처를 사용하여 1×1 컨볼루션 레이어로 채널 수를 줄였다가 다시 늘림으로써 계산량과 파라미터 수를 효율적으로 감소시킵니다.
    • 적은 필터 수 (상대적으로): 초기 레이어에서는 VGGNet만큼 많은 필터를 사용하지 않거나, VGGNet의 매우 넓은 레이어에 비해 효율적인 필터 구성을 가집니다.
    • 전역 평균 풀링 (Global Average Pooling, GAP): ResNet은 대부분의 경우 VGGNet처럼 거대한 FC 레이어들을 사용하는 대신, 마지막 컨볼루션 레이어 다음에 전역 평균 풀링(Global Average Pooling)을 사용하여 특징 맵을 단일 벡터로 압축합니다. 이 벡터는 곧바로 최종 FC 레이어(클래스 개수만큼의 노드를 가진)에 연결됩니다. GAP는 FC 레이어에 비해 파라미터 수가 거의 없다시피 하여, 모델의 전체 파라미터 수를 극적으로 줄이는 데 기여합니다.
  2. Residual Network

    : 위의 plain net에 기반함

    • Input과 output의 차원이 동일할 때 identity shortcut 바로 사용 가능함
    • 차원이 증가했을 때, 두 가지 옵션 고려
      1. Shortcut이 여전히 identity mapping을 수행하되, 차원을 증가시키기 위해 zero padding. (i.e.입력과 출력 차원이 다를 경우, 부족한 차원만큼 0을 채워서 차원을 맞춘다.) 이 방법은 추가적인 파라미터 도입 X.

      2. 차원을 맞추기 위해 projection shortcut을 사용한다. (Wsx)W_s \mathrm{x}) 이 경우 1 x 1 conv 사용

        두 옵션에서 모두 shortcut이 feature map을 2 size씩 건너뛰므로 stride를 2로 설정

3.4. Implementation

ImageNet을 위한 구현

— 전처리 및 하이퍼파라미터 설정

4. Experiments

4.1. ImageNet Classification

  1. Plain Networks

    : 18-layer & 34-layer plain net

    (얇은 선 - training error, 두꺼운 선 - validation error)

    ➡️ 더 깊은 모델(34 layers)이 더 높은 training error를 보이며 18-layer plain net의 solution space가 34-layer one의 subspace임 : degradation prob.

  2. Residual Networks

    : 18-layer & 34-layer residual nets (ResNets)

    ➡️ 더 깊은 모델(34 layers)이 더 좋은 성능 (더 낮은 error)

    ➡️ Plain net에 비해 training error 줄임

0개의 댓글