250x250
Link
나의 GitHub Contribution 그래프
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

Deep Residual Learning for Image Recognition (ResNet) 논문 리뷰 및 정리 본문

📜 논문 review

Deep Residual Learning for Image Recognition (ResNet) 논문 리뷰 및 정리

ㅅ ㅜ ㅔ ㅇ 2023. 4. 30. 23:37
728x90

0.Abstract

  • 역대 ILSVRC 대회 결과를 보면 depth가 모델의 성능에 큰 영향을 준다는 것을 알 수 있음
  • depth 증가 시 발생하는 문제 점 : overfitting, gradient 소실, 연산량 증가
  • residual learning framework를 통해 문제 해결 → 오차를 3.75%까지 줄임
  • residual learning framework : 이전 layer의 결과를 다시 이용함

 

 

1. Introduction

  • 모델의 layer수가 증가할 수록 학습할 수 있는 Feature가 달라짐 → 깊이는 중요한 요소
  • “Layer를 깊게 쌓을 수록 항상 좋은 성능을 보이는가?”
  • 두 가지 문제점 존재
    • Convergence Problem
      • vanishing/exploding gradients 로부터 발생
      • 학습 초기부터 convergence 방해
      • 이 문제점은 normalized initialization과 intermediate nromalization layer로 해결
      • Back Propagation과 함께 SGD로 수십개의 layer를 convergence 할 수 있게 됨
    • Degradation Problem
      • Convergence가 가능해지고 나니 발생한 문제점
      • network 깊이가 증가할 수록 accuracy가 포화되고 그 이후로 빠르게 하락함
      • overfitting에 의해 발생하는 문제점이 아닌 layer를 추가하면 training error가 높아짐

 

  • Deep Residual Learning framework를 통해 해결하고자 함
  • Shortcut connection : Residual Mapping을 사용해 원래의 Underlying Mapping(H(x))에 nonlinear mapping인 x를 더함 → F(x) = H(x) + x

  • shortcut connection은 두 개의 Layer를 건너뜀 (계산을 늘리거나 parameter 수를 증가시키지 않음)
    • Deep Residual Networks는 Optimize하기 쉬움
    • Depth가 증가하며 정확도의 증가를 얻음
    • 전체 네트워크는 여전히 SGD with backpropagation으로 end-to-end 학습되며 쉽게 구현 가능
  • Optimize가 잘 되는 것을 보이기 위해 100개가 넘는 layer에 대해 학습 성공
  • ImageNet Dataset에 대해서 3.57%의 Top-5 Error를 달성하면서 ILSVRC에서 1등을 차지함

 

 

 

 

2. Related Work

  1. Residual Representation (잔차 표현)
    • 벡터 양자화에 있어 residual vector를 인코딩하는 것이 original vector보다 훨씬 효과적임
    • 벡터 양자화 : 벡터 x를 클래스 벡터 y로 mapping하는 것을 의미함
    • Multigrid Method → pre-conditioning 방식 사용하여 훨씬 빠르게 수렴함 (두 scale간의 residual 벡터를 가리키는 변수에 의존하는 방식)
  2. Shortcut Connection
    • 다른 방식과는 달리 parameter가 전혀 추가 되지 않으며, 0으로 절대 수렴하지 않음
    • gate는 항상 열어놓음 (모든 정보가 통과됨)
    • 지속적인 residual function 학습 가능

 

 

 

3. Deep Residual Learning

3.1 Residual Learning

  • 실제로는 Identity mapping이 최적일 가능성이 낮음
  • 그러나 Resnet에서 제안하는 재구성 방식은 pre-conditioning을 추가하는데에 도움이 됨
  • pre-conditioning으로 인해 optimal function이 zero mapping보다 identity mapping에 가깝다면 identity mapping을 참조하여 작은 변화를 학습하는 것이 작은 변화에 더 쉽게 반응할 것임

 

3.2 Identity Mapping by Shortcuts

  • Residual Block의 정의는 다음과 같음 (x : input, y : output)

  • F + x : Element-wise addition을 사용해 각각의 element끼리 더한 뒤, Nonlinear function을 거침
  • 이러한 shortcut connection은 parameter 수와 계산 복잡도를 증가시키지 않음
  • Linear Projection을 추가해 x의 Dimension과 F의 Dimension이 다른 경우에도 계산할 수 있도록 함

  • Ws는 차원을 매칭 시켜줄 때에만 사용함
  • F는 여러개의 layer가 될 수 있지만, 한 개의 layer인 경우에는 이러한 장점을 얻기 어려움

 

3.3 Network Architectures

1) Plain Network

  • VGG에서 영감을 받은 34개의 layer를 가진 모델
  • 대부분 3x3 필터로 이루어져 있으며 Filter Dimension이 두배가 되면 Feature Map Size가 절반이 됨 (layer당 복잡도 유지를 위함)
  • 2 stride를 가진 convolution을 이용해 downsampling을 진행함

2) Residual Network

  • plain network에 shortcut connection 추가
  • input과 output이 같을 때는 Eqn 1 사용 (실선)
  • output dimension이 증가한 경우에는 두가지 방법
  • zero padding을 적용해 shortcut은 여전히 identity mapping 수행
  • 차원을 맞추기 위해 Eqn 2의 projection shortcut 사용

3.4 Implementation

  1. Image는 더 짧은 쪽의 길이로 resize
  2. horizontal flip 부분적용 및 per-pixel 평균을 빼줌
  3. 224 x 224 크기로 random crop
  4. standard color augmentation 사용
  5. 각 conv 이후와 activation 전에 batch normalization 적용
  6. 256 사이즈의 mini-batch로 SGD 사용
  7. learning rate는 0.1에서 시작해 error가 안정되면 10으로 나눔
  8. iter는 최대 60만 번
  9. 0.0001의 weight decay와 0.9 momentum 사용
  10. dropout은 사용하지 않음

이후, 테스트 단계에서는 10-cross validation 방식을 적용하고 multiple scale을 적용해 짧은 쪽이 {224, 256, 384, 480, 640} 중 하나가 되도록 resize 한 후, 평균 score을 산출

 

 

 

4. Experiments

4.1 ImageNet Classification

1000개의 class로 이루어진 2012 Imagenet classification dataset으로 실험 진행

Plain Networks

  • 34-layer가 18-layer에 비해 높은 Train/Validation Error를 보임
  • Vanishihg Gradients로 인한 현상은 아닐 것이라고 추측 → Batch Normalization이 적용되어 순전파 과정에서 모든 신호의 variance는 0이 아니며, 역전파 과정에서의 기울기도 healty norm을 보였기 때문
  • 더 깊은 Plain Network가 아주 작은 Convergence Rates를 가지기 때문에 Training error가 줄어드는 것이 약하다고 추측함

 

Residual Networks

  • 모든 shortcut은 identity mapping을 사용하고, 차원 증가를 위해 zero padding을 사용했기 때문에 파라미터 수는 증가하지 않음
  • residual learning으로 34-layer이 18-layer보다 2.8% 우수한 성능을 보임 (낮은 training error, validation 성능이 높아짐) → degradation 문제 해결을 의미 (depth가 증가하더라도 높은 정확도를 얻을 수 있음)
  • 34-layer의 top1 error는 3.5% 감소하였으며 residual learning이 extremely deep system에서 매우 효과적임을 의미함
  • 18-layer ResNet과 Plain Net의 성능은 거의 유사했지만 18-layer ResNet이 더 빨리 수렴함

 

Identity vs Projection Shortcuts

Dimension 증가를 위해 Projection 사용 → 3가지 옵션

  • A : Zero Padding을 통해 Dimension 증가
  • B : Projection을 통해 Dimension 증가
  • C : 모든 Shortcut을 Projection

 

  • 모든 경우 Plain Network보다는 성능이 좋음
  • B가 A보다 살짝 성능이 더 좋음 → A가 Residual Learning을 하지 않았기 때문
  • C가 B보다 성능이 좋음 → Extra Parameter가 Projection Shortcut에 생겼기 때문
  • 이 세 가지 모두 성능 악화 문제와는 큰 상관이 없음 → 속도와 모델 복잡도가 큰 C를 굳이 사용하지 않고 Identity Shortcut만을 사용

 

Deeper Bottleneck Architectures

  • 모델을 더 깊게 만드려면 학습 시간이 오래 걸리기 때문에 Bottleneck 구조를 제안함
  • 각 Residual Function마다 2개의 layer대신 3개의 layer를 사용함 (1x1, 3x3, 1x1 Conv로 이루어짐)
  • 1x1 : Dimension을 줄였다가 키우는 역할 → 3x3 layer의 input과 output dimension을 작게 만들기 위함
  • layer가 한개 더 많음에도 불구하고 time complexity는 비슷함
  • parameter-free identity shortcut은 bottleneck 구조에서 중요 → 만약 projection shortcut이면 shortcut이 두 고차원에 연결되어 있기 때문에 시간 복잡도와 모델 사이즈가 두 배가 됨
  • 실험 결과 152-layer까지는 34-layer보다 더 정확함

 

50-layer ResNet

  • 34-layer ResNet의 2-layer block을 3-layer bottleneck block으로 대체
  • Dimension Matching을 위해 옵션 B를 채택함

101-layer ResNet and 152-layer ResNet

  • 더 많은 3-layer block을 사용해 구성
  • depth가 증가함에도 불구하고 VGG16, 19모델보다 더 낮은 복잡성을 가졌으며, degradation 문제 없이 높은 정확도를 보임
  • ResNet이 더 좋은 성능을 보임을 알 수 있음
  • Ensemble Learning을 이용해 더 낮은 Error를 달성
728x90
Comments