[논문리뷰] ResNet(2015)

남두현·2024년 12월 2일

논문리뷰

목록 보기
6/14

Deep Residual Learning for Image Recognition

https://arxiv.org/pdf/1512.03385v1

Author:
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun [Microsoft Research]

  • 깊은 Neural net은 학습시키가 더 어렵다.
  • 잔차학습(residual learning network)를 이용해서 학습이 쉽게 이뤄질 수 있다고 제시한다.
  • ImageNet 데이터셋으로 VGG net보다 8배 깊은 152Layer를 사용했고, 좋은 성능 및 복잡성을 줄였다.
  • 3.57% error rate를 달성했고 ILSVRC Classification task에서 1등을 달성했다.

Introduction

CIFAR-10 데이터셋을 사용한 20층과 56층의 신경망에서 발생한 학습 오류와 테스트 오류

  • Layer를 깊게 쌓았지만 얕게 쌓은 network보다 더 성능이 좋지 않았다.

  • 본 논문에서는 네트워크가 깊어질수록 학습이 어려워지는 문제를 지적한다.

  • 이 문제는 주로 기울기 소실(Vanishing gradient)/폭발(Exploding gradient) 문제로 인해 발생하며, 이는 네트워크가 수렴하는것을 방해한다고 한다.

    기울기 소실/폭발 문제는 정규하된 초기화와 중간정규화 계층를 통해 해결할 수있다.
    그리고 기술들은 수십 개의 레이어를 가진 네트워크가 확률적 경사 하강법(SGD)과 역전파를 통해 수렴을 시작할 수 있게 한다.

  • 네트워크가 더 깊어질때 성능 저하 문제(degradation problem)가 노출이 되고 네트워크 깊이가 증가함에 따라 정확도가 포화되고 급격히 저하되는 현상이 발생한다.

  • 이 저하는 과적합(Overfitting)때문이 아니며, 적절히 깊은 모델에 층을 더 추가하면 학습 오류가 증가하는 현상이 관찰되었기 때문이라고 한다.

본 논문에서는 Residual learning framework를 제안

ResNet의 Residual Block(잔차 블록) 구조이며, 이 블록은 잔차 학습의 핵심 개념이다.

1. 입력 x

  • 입력값은 블록의 시작점

2. Weight Layer(가중치 레이어)

  • 입력 x는 두 개의 가중치 레이어를 통과하며, 각 가중치 레이어는 일반적으로 Convolutional Layer 이다.

3. ReLU 활성화 함수

  • 각 가중치 레이어 뒤에는 ReLU 활성화 함수가 적용되어 비선형성을 추가

4. 잔차 함수 F(x)

  • 이 두 개의 가중치 레이어를 거친 후의 출력은 잔차 함수F(x)이며, 이 함수는 원래의 입력 x에서 추가적으로 학습해야 할 변화 또는 차이를 의미한다.

5. Identity Shortcut(직접연결)

  • 입력값 x는 별도의 연산 없이 출력에 직접 더해진다
  • 즉 입력값 x는 그대로 유지되면서 F(x)에 더해지므로, 네트워크가 깊어져도 학습할 때 중요한 정보가 유지가 되고 층을 거칠 때마다 사라지지 않고 계속해서 유지되기 때문에, 깊은 네트워크에서도 입력값x가 보존되면서 학습이 이루어진다.

6. 결합 연산

Residual learning F(x)와 원래의 입력값 x는 합쳐지는데 이 연산은 덧셈으로 이루어지고 출력이 F(x) + x가 된다.

7. 최종 ReLU

마지막으로 합쳐진 결과에 다시 ReLU가 적용되어 다음 레이어로 전달된다.

잔차 표현(Residual Representations)

VLAD

  • 이미지의 로컬 특징과 사전(dictionary)에 있는 시각적 단어들 간의 잔차 벡터를 인코딩하는 방법을 의미한다.

  • 특징: 각 로컬 특징이 가장 가까운 시각적 단어와의 차이를 계산하여, 이러한 잔차들을 집계한 벡터로 이미지를 표현하는 특징.

Fisher Vector

  • 개념: Fisher Vector는 VLAD의 확률적 버전으로 볼 수 있다.
  • 특징: 가우시안 혼합 모델(GMM)을 기반으로 로컬 특징들이 모델 파라미터에 얼마나 기여하는지를 잔차 형태로 인코딩 한다.

효과: VLAD, Fisher Vector 모두 이미지 검색과 분류에서 강력한 얕은(shallow)표현으로 사용되며, 높은 성능을 보인다.

벡터 양자화에서의 잔차 인코딩

  • 개념: 원본 벡터 자체를 인코딩하는 것보다, 사전의 중심과의 잔차 인코딩하는 것이 더 효과적이다.
  • 이유: 잔차 벡터는 원본 데이터의 미세한 변화를 더 잘 포착하여 인코딩 효율을 높인다.

저수준(low level) 비전과 컴퓨터 그래픽스에서의 잔차 활용

[부분 미분 방정식(PDE) 해결을 위한 멀티그리드 방법]

  • 개념: 복잡한 PDE를 다양한 스케일의 부분 문제(subproblems)로 재구성
  • 잔차 솔루션: 각 부분 문제는 더 거친(coarser)스케일과 더 세밀한(finer)스케일 사이의 잔차 솔루션을 담당
  • 효과: 이러한 접근은 계산 효율을 높이고 빠른 수렴을 이끌어낸다.

[계층적 기저 전처리]

  • 개념: 멀티그리드의 대안으로, 두 스케일 사이의 잔차 벡터를 나타내는 변수에 기반
  • 효과: 솔루션의 잔차 특성을 활용함으로써 표준 솔버보다 더 빠르게 수렴한다.

최적화의 간소화

  • 시사점: 위의 방법들은 재구성이나 전처리가 최적화 과정을 단순화하고 효율성을 높일 수 있음을 보여준다.
  • 연관성: 이러한 아이디어는 딥러닝에서의 최적화 문제를 해결하는 데에도 적용될 수 있다.

요약

  • 잔차표현은 다양한 분야에서 기존 방법의 한계를 극복하고 성능을 향상시키는 데 사용되어 왔다.
  • 이미지 인식에서는 VLAD, Fisher Vector를 통해 잔차 벡터를 효과적으로 인코딩하였고, 벡터 양자화에서도 잔차를 인코딩함으로써 더 나은 결과를 얻어왔다.
  • 저수준 비전과 컴퓨터 그래픽스 분야에서는 멀티그리드 방법과 계층적 기저 전처리를 통해 잔차 솔루션을 활용하여 PDE를 효율적으로 해결했다.
    결론: 이러한 연구들은 잔차를 활용하는 것이 최적화와 학습에 있어서 중요한 이점을 제공한다는 것을 보여주고 Residual Learning의 배경과 동기를 형성한다.

Shortcut Connections(단축연결)

  • 단축 연결의 중요성: 단축 연결은 깊은 신경망에서 정보의 흐름을 원활하게 하여 학습을 돋는 중요한 역할을 한다.
  • 잔차 학습의 효율성: Identity 단축 연결을 통한 잔차 학습은 기울기 소실 문제를 완화하고, 깊은 네트워크에서도 효과적인 학습을 가능하게 한다.
  • 고속도로 네트워크(Highway Networks)
    설명 -> https://velog.io/@mingqook/Highway-Networks

Deep Residual Learning

Residual Learning

잔차학습 핵심 개념:

  • 목표함수 H(x): 몇 개의 누적된 레이어가 근사해야 할 기본적인 매핑을 H(x)라고 가정한다.

  • 잔차함수 F(x): 다수의 비선형 레이어가 복잡한 함수를 점근적으로 근사할 수 있다고 가정하면
    잔차함수는 F(x)=H(x)xF(x)= H(x)-x로 볼 수 있다. -> 즉 H(x)=F(x)+xH(x) = F(x) + x

이 아이디어는 네트워크가 깊어질수록 성능이 떨어지는, 즉 '성능 저하 문제'에서 영감을 받았다.

이론적으로는, 네트워크의 층을 추가하면 성능이 떨어지지 않아야 하는데, 실제로는 이런 층들이 데이터의 동일성을 유지하는 데 실패하곤 했다.

잔여 학습 방식을 사용하면, 이런 층들이 동일성 매핑, 즉 입력과 동일한 출력을 내도록 유도할 수 있다. 이는 층들이 결과를 거의 바꾸지 않고 그대로 전달하게 만든다.

Identity Mapping by Shortcuts (shortcut의 항등 매핑)

1. 잔차 학습의 적용 방식:
- 범위: 잔차 학습을 몇 개의 연속된 레이어마다 적용

  • 빌딩 블록 정의:y=F(x,Wi)+xy=F(x,{W_i})+x
    xx: 입력 벡터
    yy: 출력 벡터

    ex) 두 개의 레이어로 구성된 경우 F=W2o(W1x)F = W_2o(W_1x)이며, 여기서 oo는 ReLU 활성화 함수를 의미한다.

2. Shortcut 연결의 특징:

  • 추가 비용 없음: 추가적인 매개변수나 계산복잡도를 증가시키지 않는다.

3. 차원이 다른 경우의 처리:

  • 차원 맞추기 필요성:
    수식 y=F(x)+xy= F(x) + x에서 xF(x)x와 F(x)의 차원이 같아야 하지만, 입력과 출력의 채널 수가 달라지는 경우가 있다.

  • 선형 변환 적용: shortcut 연결을 통해 선형 변환 WsW_s를 적용하여 차원을 맞춘다.

핵심요약

  • 잔차 학습의 구현
  • 항등 매핑의 중요성
  • 효율성과 단순성
  • 차원 불일치 해결
  • 컨볼루션 신경망에서의 활용

Network Architectures

3x3 Convolution Layer

각 블록에서 두 개의 3x3 convolution 레이어가 있으며, 이 레이어들은 입력 데이터를 변형하는 역할을 한다. 이때, 변형된 결과는 잔차 함수로서 계산된다.

Identity Connection

각 블록마다 보이는 곡선 화살표가 바로 Identity connection이다. 이 연결은 입력 데이터를 변형하지 않고 그대로 다음 층으로 전달하는 역할을 한다.

잔차 계산

각 블록의 출력은 잔차 함수 F(x)와 입력값 x를 더한 결과로 계산된다. 이 덧셈 연산을 통해 입력값이 직접 전달되기 때문에, 네트워크가 깊어지더라도 중요한 정보가 사라지지 않고 학습이 잘 이루어진다.

Down sampling (차원 축소)

블록마다 크기가 달라지는 경우가 있다. 예를 들어, 출력 크기가 절반으로 줄어드는 경우(dotted shortcut)는 차원 축소가 필요한 경우이며, 이때는 1x1 convolution을 사용하여 Identity connection에서도 차원을 맞춰주는 작업을 한다.

Network Architecutres 비교

1. VGG-19

  • VGG-19는 매우 단순하고 일관된 네트워크 구조로, 층을 깊게 쌓아 여러 개의 3x3 합성곱(conv) 층을 사용한다..
  • 이 구조는 합성곱 층 사이에 풀링(pooling) 층을 넣어 특징 맵의 크기를 줄이면서 특징을 추출하는 방식을 사용한다.
  • 하지만 층이 깊어질수록 성능 저하 문제가 발생할 수 있다.

2. 34-layer Plain 네트워크

  • 34-layer plain 네트워크는 VGG-19보다 훨씬 더 깊은 구조를 가지고 있다.
  • 이 네트워크 역시 여러 층을 쌓아 출력값을 학습하지만, 추가적인 잔차 학습 없이 모든 층에서 새로운 출력을 직접 학습하려고 한다.
  • 깊어질수록 성능 저하 문제가 발생할 가능성이 높다.

3. 34-layer Residual 네트워크

  • 34-layer residual 네트워크는 잔차 학습을 적용한 구조이다. 각 층에서 입력 값을 그대로 유지하면서 잔차(Residual)만을 학습한다.
  • 지름길 연결(identity connection)을 통해 입력 값을 바로 출력으로 전달하고, 동시에 층에서 학습된 잔차 F(x)를 더해 최종 출력을 얻는다.
  • 이렇게 하면, 신경망이 깊어지더라도 중요한 입력 정보가 손실되지 않고, 추가적인 정보만 학습하기 때문에 더 깊은 네트워크에서도 성능이 저하되지 않는다.

비교

1. ResNet18: 얕고 빠른 네트워크

  • 구조
    비교적 얕은 네트워크로, 총 8개의 Residual Block을 포함.
    각 Residual Block은 2개의 3x3 컨볼루션 레이어로 구성.
    Residual Block은 shortcut connection을 통해 입력값을 그대로 다음 레이어에 더한다.

  • 특징
    비교적 적은 층수로 인해 학습이 빠르고 연산 비용이 낮다.
    이미지 분류, 객체 탐지 등의 실시간 응용에서 많이 사용.
    경량 모델이기 때문에 임베디드 장치나 모바일 장치에 적합.

  • 장점
    연산이 빠르고, 파라미터 수가 적어 경량화된 응용에 적합.

  • 단점
    네트워크 깊이가 얕기 때문에 매우 복잡한 데이터셋에서는 성능이 다소 제한적일 수 있다.

2. ResNet34

  • 구조
    ResNet34는 16개의 Residual Block으로 구성된 네트워크.
    ResNet18과 마찬가지로 각 블록은 2개의 3x3 컨볼루션 레이어로 구성.

  • 특징
    ResNet18보다 깊지만, 여전히 중간 수준의 연산 복잡도를 가지고 있다.
    이미지 분류에서 더 정교한 성능을 요구하는 문제에 적합.

  • 장점
    더 깊어진 층수 덕분에 더 복잡한 패턴을 학습할 수 있으며, 상대적으로 성능이 향상.

  • 단점
    더 깊어지면서 연산량이 증가하여 ResNet18보다는 속도가 느리지만 여전히 실시간 응용에서 사용 가능한 수준입니다.

3. ResNet50: Bottleneck 구조

  • 구조
    ResNet50부터는 Bottleneck 블록이 도입된다.
    Bottleneck 블록은 3개의 컨볼루션 레이어로 구성되며, 1x1, 3x3, 1x1 컨볼루션으로 이루어진다.
    1x1 컨볼루션은 차원을 줄이거나 늘려 연산 효율성을 높이는 역할을 한다.

  • 특징
    Bottleneck 구조를 통해 더 깊은 네트워크에서도 효율적으로 학습이 가능하도록 최적화 되어있다.
    VGG 네트워크와 비교했을 때, 더 깊지만 연산 비용은 오히려 적은 편이다.

  • 장점
    Bottleneck 구조 덕분에 파라미터 수는 적지만 성능은 우수하다.
    복잡한 데이터셋에서도 높은 성능을 발휘하며, 이미지 분류 및 객체 탐지에 많이 사용된다.

  • 단점
    ResNet34에 비해 복잡도가 증가하고 연산량도 커지기 때문에 더 많은 자원이 필요하다.

4. ResNet101

  • 구조
    ResNet101은 33개의 Bottleneck 블록으로 구성.

  • 특징
    매우 깊은 네트워크로, 더 복잡한 패턴을 학습할 수 있어 대규모 데이터셋에서 탁월한 성능을 발휘. 더 깊은 층수로 인해 일반화 성능이 향상.

  • 장점
    복잡한 이미지 분류나 객체 탐지, 세그멘테이션 등 다양한 비전 작업에서 우수한 성능을 발휘.
    대규모 데이터셋에서 높은 정확도를 달성할 수 있다.

  • 단점
    연산 비용이 크게 증가하며, 학습 및 추론 시간이 더 오래 걸린다.
    따라서 더 많은 컴퓨팅 자원(GPU 등)이 필요하다.

5. ResNet152

  • 구조
    50개의 Bottleneck 블록으로 구성된 가장 깊은 ResNet 모델.

  • 특징
    ResNet152는 ResNet의 대표적인 초대형 모델로, 매우 깊은 구조를 통해 다양한 복잡한 문제를 해결하는 데 적합. ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 뛰어난 성능을 발휘한 모델.

  • 장점
    네트워크가 매우 깊기 때문에 복잡한 패턴을 정확하게 학습할 수 있다.
    이미지 분류, 객체 탐지, 세그멘테이션 등 고난이도의 비전 작업에서 높은 성능을 보장한다.

  • 단점
    ResNet101보다 더 깊어 연산 비용과 메모리 요구량이 매우 크다.
    고성능 GPU가 필요하며, 학습 시간이 길어진다.

Pytorch 코드구현: https://github.com/namduhus/ResNet
Pytorch: 2.5.1
IDE: VSCode, Pycharm
GPU: CUDA 12.1

0개의 댓글