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

이영락·2024년 7월 31일

CV & NLP 논문 리뷰

목록 보기
2/14

🏖️ 00 | 요약 & 자료 정리

📢 Deep Residual Learning for Image Recognition

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun

참고자료

1) 논문 베이스 세부 설명

https://phil-baek.tistory.com/entry/ResNet-Deep-Residual-Learning-for-Image-Recognition-논문-리뷰

2) 요약이 잘 되어있는 블로그

https://wandukong.tistory.com/18

3)

https://tobigs.gitbook.io/tobigs/deep-learning/computer-vision/resnet-deep-residual-learning-for-image-recognition


01 & 02 | abstract & introduction

Abstract

📢 P : Deeper neural networks = difficult to train → S : Residual learning framework

  • how ? : reforming the layers as learning residual functions with layer inputs
    (레이어 입력에 대한 잔여 함수를 학습하도록 레이어를 재구성하는 것)
  • advantage of Residual functions

    1. easier to optimize
    2. can gain accuracy from increased depth
  • VGG 네트워크보다 8배 더 깊고 복잡도가 낮으며 성능이 더 뛰어남

    • ImageNet 테스트 세트에서 3.57%의 error rate을 기록하여 ILSVRC 2015 분류 작업에서 1위를 차지
    • CIFAR-10 데이터셋, COCO, ILSVRC 등등…

Introduction

Background

  • Deep Convolutional neural networks → image classification
    • Integrate Low/mid/high level features
    • Level = enrich by Depth(the number of stacked layers)

🔥 Layer를 깊이 쌓을수록 더 쉽게 학습할까?(learning better networks as easy as stacking more layers?)
2가지 장애물이 있음!

🤔 Convegence Problem

  • vanishing / exploding gradients 에서 발생
  • hamper Convergence(convergence를 방해!)
  • 해결방법은?
    1. normalized initialization
    2. intermediate normalization layer
      SGD로 수십장 layer convergence 가능!

🤔  Degradation Problem

  • depth increasing → accuracy saturation(포화) & 그 이후 급격한 하강(overfitting이 문제가 아님!)
  • layer 추가 = Training error가 높아짐
  • not easy to optimize를 시사함!
  • 해결방법?
    • 추가된 layer들은 identity mapping이고, 다른 layer들은 얕은 모델을 복사한 것
    • 그러나? 깊은 모델은 얕은 모델모다 training error가 높지 않아야 하는데, 그렇지 않았음(이부분 해석이 애매?)
    • In this paper, Deep residual learning framework로 해결!

🤔 Identify mapping(ID mapping) & Underlying mapping?

Identify Mapping

Identify Mapping(항등 매핑)은 입력을 그대로 출력으로 전달하는 함수.

수학적으로는 f(x)=xf(x) = x 로 표현되며, 입력값이 변하지 않고 그대로 출력으로 전달.

Underlying Mapping

Underlying Mapping(기저 매핑)은 신경망이 학습해야 하는 실제 함수 또는 매핑을 의미.

예를 들어, 이미지에서 고양이와 개를 분류하는 신경망이 있다면, 이 신경망의 기저 매핑은 입력 이미지에서 고양이와 개를 구분하는 함수가 됨.

잔여 네트워크에서는 기저 매핑을 직접 학습하기보다는, 기저 매핑과 입력값 간의 차이(잔여)를 학습하도록 설계됩니다.

Nonlinear Mapping

Nonlinear Mapping(비선형 매핑)은 입력과 출력 간의 관계가 선형이 아닌 함수.

즉, 직선이 아닌 곡선 형태의 관계를 가지며, 복잡한 데이터 패턴을 학습하고 표현하는데 필수.

신경망에서는 활성화 함수(ReLU, Sigmoid, Tanh 등)를 사용하여 비선형성을 도입합니다.

비선형 매핑을 통해 신경망은 단순한 선형 변환으로는 표현할 수 없는 복잡한 패턴과 구조를 학습할 수 있습니다.

이러한 매핑들은 신경망의 구조와 학습 과정에서 중요한 역할을 하며, 각각의 개념을 이해하는 것이 딥러닝 모델의 설계와 최적화에 큰 도움이 됩니다.

Deep Residual Learning Framework

: underlying mapping 을 H(x) 라하면, nonlinear mapping을 F(x) = H(x) + x 에 맞추는 것

 ResNet의 Residual Learning은 H(x)가 아닌 출력과 입력의 차인 **H(x) - x**를 얻도록 목표를 수정한다. 따라서 Residual Function인 F(x) = H(x) - x를 최소화시켜야 한다. 
즉, 출력과 입력의 차을 줄인다는 의미가 된다. 
여기서 x의 값은 도중에 바꾸지 못하는 입력 값이므로 F(x)가 0이 되는 것이 최적의 해다.
결국, 0 = H(x) - x로 H(x) = x가 된다. 즉,H(x)를 x로 mapping 하는 것이 학습의 목표가 된다.

잔여 학습의 개념

즉, 기저 매핑 ( H(x)H(x)를 학습하는 대신, 잔여 함수 f(x)=H(x)xf(x) = H(x) - x 를 학습합니다. 이 접근 방식은 네트워크가 입력값 x 에 잔여를 더하여 최종 출력 H(x)를 생성합니다. 즉, H(x) = f(x) + x 입니다.

f(x) = 0 의 의미

잔여 함수 f(x) = 0 이 최적의 해라는 것은 네트워크가 추가적인 학습 없이도 이미 최적의 상태에 도달했다는 것을 의미합니다. 즉, 네트워크가 학습해야 할 잔여가 없다는 뜻입니다.

이전에는 Unreferenced mapping인 H(x)를 학습시켜야 한다는 점 때문에 어려움이 있었는데 (알지 못하는 최적의 값으로 H(x)를 근사 시켜야 하므로), 이제는 H(x) = x라는 최적의 목표값이 사전에 pre-conditioning으로 제공되기에 Identity mapping이 Identity mapping인 F(x)가 학습이 더 쉬워지는 것이다.
결과적으로 H(x) = F(x) + x 이므로 네트워크 구조 또한 크게 변경할 필요가 없는데, 단순히 입력에서 출력으로 바로 연결되는 shortcut만 추가하면 되기 때문이다. 
또한, 입력과 같은 x가 그대로 출력에 연결되기에 파라미터 수에 영향이 없으며, 덧셈이 늘어나는 것을 제외하면 shortcut 연결을 통한 연산량 증가는 없다.
무엇보다도 곱셈 연산에서 덧셈 연산으로 변형되어 몇 개의 layer를 건너뛰는 효과가 있었는데, 이 덕에 forward와 backward path가 단순해지는 효과가 있었으며, gradient의 소멸 문제를 해결할 수 있었다고 한다.

degradation problem을 보이고 제안한 방법을 평가 → ImageNet으로 실험함

1) extremely deep residual net은 optimize하기 쉽지만, residual이 없이 단순히 깊게 쌓기만한 plain net은 더 높은 training error를 보임

2) deep residual net은 깊이에 의한 accuracy gain이 있고, 다른 이전 network들 보다 성능이 좋음


ResNet 모델의 대표적인 2가지 개념인 Residual RepresentationsShortcut Connections이 다른 모델에 적용된 사례에 대해 간략히 설명

Residual Representations

  • VLAD와 Fisher Vector: 이미지 인식에서 VLAD는 사전에 대한 Residual 벡터를 인코딩하며, Fisher Vector는 VLAD의 확률적 버전. 두 방법 모두 이미지 검색 및 분류를 위한 강력한 얕은 표현(shallow representation)이다. → vector quantization에서 residual vector를 인코딩하는 것이 original vector를 인코딩하는 것보다 효과적임
  • 멀티그리드 방법: 부분 미분 방정식(PDE)을 해결하기 위해 사용됨
    • 시스템을 여러 규모의 하위 문제로 재구성하고, 각 하위 문제는 더 거친 규모와 더 세밀한 규모 사이의 Residual 해결책을 담당.
  • 계층적 기저 전처리(계층 기반 pre-conditioning): 멀티그리드의 대안으로, 두 규모 사이의 Residual 벡터를 나타내는 변수를 사용. 표준 솔버보다 더 빠르게 수렴하며, 잔여 재구성의 이점이 최적화를 단순화하는 데 도움이 됨을 보여줍니다.
    • 해의 residual 특성에 대해 다루지 않는 기존 방식보다 훨씬 빨리 수렴하는 특징이 있다.

      → 즉, 합리적인 문제 재구성과 전제 조건(pre-conditioning)은 최적화를 더 간단하게 수행해준다는 것을 의미한다.

Shortcut Representations

  • 역사적 관행: 쇼트컷 연결은 오랜 시간 동안 연구되었습니다. 초기 관행에서는 다층 퍼셉트론(MLP)에서 네트워크 입력에서 출력으로 선형 레이어를 추가하여 소실/폭발 기울기 문제를 해결했습니다.
  • 중간 레이어 및 보조 분류기: 중간 레이어를 보조 분류기에 직접 연결하여 기울기 문제를 해결합니다.
  • 레이어 응답 중심화: 레이어 응답, 기울기 및 전파된 오류를 중심화하는 방법이 쇼트컷 연결로 구현됩니다.
  • 하이웨이 네트워크: 하이웨이 네트워크의 동시 작업은 데이터 종속적이고 매개변수를 가진 게이트 기능이 있는 쇼트컷 연결을 도입합니다. 이는 잔여 네트워크의 매개변수가 없는 ID 쇼트컷과 대조적.

위의 다른 방식과 다르게 parameter가 전혀 추가되지 않고, 0으로 수렴되지 않기 때문에 절대 닫힐 일 없이 모든 정보가 통과된다. 따라서 지속적으로 residual function을 학습하는 것이 가능하다!


🏖️ 03 | Deep Residual Learning

3.1 Residual Learning

개념: 잔여 학습은 원하는 기저 매핑 H(x)을 잔여 매핑 F(x) := H(x) - x으로 재구성하여 학습하는 방법.

이 접근 방식은 잔여 매핑을 최적화하는 것이 원래 매핑을 직접 최적화하는 것보다 더 쉽다는 가설을 세움.

Residual Learning Framework는 레이어가 Residual Function을 근사하도록 하여 최적의 경우 ID 매핑을 더 쉽게 학습할 수 있게 함.

구현: 잔여 함수는 ID 매핑을 수행하는 쇼트컷 연결을 사용하여 피드포워드 신경망을 통해 실현되며, 쌓인 레이어의 출력을 추가합니다. 추가 매개변수나 계산 복잡성이 없으므로 표준 확률적 경사 하강법(SGD)과 역전파를 사용하여 종단 간 훈련이 가능합니다.

introduction과 동일 내용!

pre-conditioning으로 인해 Optimal function이 zero mapping보다 identity mapping에 더 가깝다

→ solver가 identity mapping을 참조하여 작은 변화를 학습하는 것 >>>>>새로운 function을 학습 (쉬움)

3.2 Identify Mapping by Shortcuts

: 모든 few stacked layer마다 residual mapping을 적용함

: Shortcut connection은 파라미터나 연산 복잡성을 추가하지 않음!

building block 정의

 y=F(x,Wi)+xy = F(x, {W_i}) + x

  • F(x, {W_i}) 는 학습될 residual mapping을 의미
  • F=W2σ(W1x)F = W_2σ(W_1 x) 에서 σ는 ReLu를 의미
  • F + x 연산이 shortcut connection을 의미( element-wise addition)
  • parameter도 없고 계산 복잡도도 없음

y=F(x,Wi)+Wsxy = F(x, {W_i}) + W_s x

  • y=F(x,Wi)+xy = F(x, {W_i}) + x 수식은 x와 F의 차원이 같을 것
  • 그렇지 않은 경우에 차원을 맞추기 위해, Shortcut connection에 linear projection W_s를 적용

3.3 Network Architectures

Plain network

  • VGG net의 영향을 받음. (conv filter = 3X3)
    1. Output feature map의 size가 같은 layer들은모두 같은 수의 conv filter를 사용한다.
    2. Output feature map의 size가 반으로 줄어들면 time complexity를 동일하게 유지하기 위해필터 수를 2배로 늘려준다.
    • downsampling → stride 2인 conv filter 사용
  • 결과? → 평면 네트워크 vs 잔여 네트워크: 평면 네트워크와 잔여 네트워크의 다양한 아키텍처를 테스트한 결과, 잔여 네트워크가 일관되게 낮은 훈련 오류와 더 나은 일반화 성능을 보임.

Residual Network

: plain network에서 shorcut conenction을 삽입

  • input과 output 차원이 같을 땐 y=F(x,Wi)+xy = F(x, {W_i}) + x을 사용(Shortcut connection)(그림에서 실선!)
  • output dimension이 증가
    • (A) : zero padding을 적용해 shortcut은 여전히 identity mapping을 수행
    • (B) : 차원을 맞추기 위해 y=F(x,Wi)+Wsxy = F(x, {W_i}) + W_s x의 projection shortcut을 사용

3.4 Implementation

  • Image는 더 짧은 쪽의 길이로 resize (짧은쪽인 [258,480])
  • horizontal flip 부분 적용
  • 224 x 224 크기로 random하게 crop
  • standard color augmentation 사용
  • 각 convolution 이후와 activiation 전에 Batch Normalization을 적용함
  • 256 사이즈의 mini-batch로 SGD를 사용함
  • learning rate는 0.1에서 시작해 error가 안정되면 10으로 나눔
  • iter는 60만 번까지
  • 0.0001의 weight decay와 0.9의 momentum을 사용
  • dropout은 사용하지 않았음

🏖️ 04 | Experiments

4.1 Imagenet Classification

Plain Networks

  1. 34-layer plain net이 전체적으로 가장 높은 training error를 보임

    (더 깊은 plain모델에서 높은 Validation errorr 나타남)

    → optimization difficulty는 vanishing gradient에 의해 발생하는 게 아닐 수도 있음!

  2. forward propagated signal이 zero가 되지 않도록 보장하는 Batch Normalization을 사용 → forward, backward signal vanish의 문제가 아님

    deep plain net이 exponentially low convergence rate를 가질 것으로 추측 → training error에 영향을 줌

Residual Networks

18-layer Residual VS 34-layer Residual nets

(option A) 모든 shortcut에 identity mapping을 사용, 증가한 차원에 대해서는 zero-padding을 적용

→ extra parameter가 없음(plain net 대비)

🤔 Result?

1. 18-layer보다 34-layer Resnet이 2.8% 더 우수한 성능!

  • 34-layer resnet이 낮은 Training Error & generalizable to Validation >data → degradation 해결(depth가 증가해도 좋은 정확도를 얻을 수 있음!)

2. 34-layer Resnet Reduces the top-1 error by 3.5%

  • 34-layer Resnet의 top-1 error가 3.5% 감소 → extreme deep system에서 매우 좋음!

3. 18-layer Resnet VS plain net

  • 18-layer Resnet이 더 빨리 수렴함(accurate은 비슷) → 모델이 과도하게 깊지 않다면, Resnet이 더 빨리 수렴함

Identity vs Projection Shortcuts

Projection Shortcut y=F(x,Wi)+Wsxy = F(x, {W_i}) + W_s x 세 가지 옵션을 비교함

  • (A) 증가하는 차원에 대해 zero-padding shortcut, 모든 shortcut은 parameter free
  • (B) 증가하는 차원에 대해 Projection shortcut 적용, 그렇지 않으면 identity shortcut 적용
  • (C) 모든 경우에 Projection shortcut 적용

🤔 Result?

1. 3가지 옵션 모두 plain model 보다 성능이 좋았음(A<B<C)

  • 세가지 옵션 성능차가 크지는 않음.

    → projection shortcut이 필수적이지는 않다는 것을 확인!

2. A<B

  • zero-padded 차원이 residual learning을 수행안하기 때문
  • (zero-padded는 residual learning이 아니기 때문)

3. B<C

  • projection shortcut으로 인해 파라미터가 추가되었기 때문!

Deeper Bottleneck Architectures

📢 training time → building block을 bottleneck구조로 수정

  • 각 residual function F가 3개 layer stack 구조로 수정됨(1x1, 3x3, 1x1 convolution)
  • 1x1 layer: 차원을 줄이고 늘리는(복구하는) 역할
  • 3x3 layer: 더 작은 input/output 차원을 줄이는 bottleneck
profile
AI Engineer / 의료인공지능

0개의 댓글