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

권유진·2022년 6월 19일
0

논문 리뷰

목록 보기
5/17

Deep Residual Learning for Image Recognition

Abstract

  • 신경망이 깊어질수록 학습하기 힘들다.
    • 지속적으로 깊어지는 신경망을 쉽게 학습하기 위해 residual learning을 제시한다.
      • layer에 input을 더해주는 residual function으로 재구성했다.
  • VGG보다 계층이 깊지만 모델 구조는 덜 복잡하다.
  • ILSVRC 2015에서 1위 달성했다.

Introduction

  • Deep CNN은 이미지 분류에 큰 도움이 되었다.
    • 깊은 네트워크는 낮은/중간/높은 레벨의 feature와 classifier을 통합하고 layer들에 의해 풍부해진다.
  • 더 많은 레이어가 쌓일수록 네트워크는 더욱 쉽게 학습할까?
    • vanishing/exploding gradient 문제가 방해가 됨
    • 해당 문제는 정규화 된 초기화 기법과 layer의 정규화 기법으로 어느정도 해결할 수 있다.
    • 깊은 신경망이 수렴하기 시작하면 degradation(성능 저하) 문제가 발생한다.(깊이가 증가할수록 정확도는 빠르게 감소한다.)
    • degradation 문제는 과적합 때문이 아니고 시스템이 최적화를 잘 못하기 때문이다.
  • 해결법이 있다.
    • identity mapping(입력값을 그대로 내보냄)
      • 이와 같이 수행하니 더 깊은 모델이 얕은 모델보다 training error가 적었다.
  • deep residual learning framework를 도입하여 성능 저하(degradation) 문제를 해결
  • 직접적으로 underlying mapping(기본 매핑)을 학습하는 대신, residual mapping 학습
    • H(x)H(x) 대신 F(x)F(x) 학습
      H(x)=F(x)+xH(x) = F(x) + x
    • 기존의 매핑 방식보다 더욱 최적화를 잘한다.
    • identity mapping이 최적이라면, 여러 계층으로 identity mapping(xx)를 학습하는 것보다 잔차(F(x)F(x))를 0으로 하는 것이 더욱 쉬울 것이다.
  • shortcut connections: 한 개 또는 그 이상의 layer 건너 뜀
    • shortcut connections은 identity mapping을 하고 layer의 output에 더한다.
    • 파라미터와 계산 복잡도를 증가시키지 않는다.
    • 전체적인 네트워크는 SGD와 오차역전파법을 활용하여 학습된다.
  • 위 구조를 이용하면 일반적인 딥러닝 모델은 층이 깊어질수록 손실이 증가하지만 deep residual model은 쉽게 최적화한다.
    • 쉽게 깊이를 증가시키고 정확도를 높인다.
    • VGG보다 더 좋은 성능을 보유하면서 계산 복잡도도 더 낮다.
    • ILSVRC 2015 classification competition에서 1위 달성

Residual Representations

  • VLAD: 사전에 대한 잔차 벡터(residual vector)의 인코딩 된 표현 방법
  • 피셔 벡터(Fisher Vector): VLAD의 확률전 버전
    • 사전(dictionary)을 만드는 방식은 Bag of the words
      • local feature을 뽑아 이를 대표할 수 있는 값 word를 만듦
      • 그 후, k-means clustering 방법으로 결정
      • word를 feature 그대로 사용하면 BoW, 모델 파라미터에 대한 feature 벡터의 편미분 사용 시 피셔 벡터
      • 잔차(residual)를 사용해서 변형
  • 벡터 양자화(vector quantization)의 경우, 잔차 벡터를 인코딩 하는 것이 원본 벡터를 인코딩하는 것보다 더 효과적
  • 저수준의 컴퓨터 그래픽에서 편미분 방정식을 풀기 위해 Multigrid 방법 널리 사용
    • 시스템을 여러 규모의 하위 문제로 나누어 공식화(reformulation) 한다.
    • 여기서 각 하위 문제는 더 거친 스케일과 더 미세한 스케일 사이의 residual solution을 담당
  • Multigrid의 대안은 계층적 기반 사전 조건화(hierachical basis preconditioning)
    • 두 척도 사이의 잔차 벡터를 나타내는 변수에 의존하는 방법
  • reformulation(Multigrid)과 preconditioning가 최적화를 더욱 쉽게 만들었다.

Shortcut Connections

  • Shortcut Connections로 이끈 실습과 이론은 오랜 기간 연구되었다.
    • MLP에서는 input과 out이 이어진 선형 레이어를 추가했다.
    • 그 다음 연구는 중간 레이어들이 직접적으로 auxiliary classifier와 연결시켰다.
    • layer response와 경사, propagated error 등을 centering하기 위해 shortcut connection 구현하기도 함
    • Inception(shortcut branch와 더 깊은 branch들로 구성되어있다.)
  • 우리 연구와 동시에 highway networks는 게이팅 기능이 있는 지름길 연결을 나타낸다.
    • gate들은 data에 의존적이고 parameter들을 보유하고 있다.(우리의 shortcut은 파라미터가 없다.)
    • 만약 gate가 닫혀있으면(0에 수렴) 그 계층은 non-residual하다.
    • 반대로 우리의 shortcut은 절대 닫히지 않는다.
    • highway network는 매우 깊은 층이 쌓였을 때 성능 향상을 보이지 못했다.

Deep Residual Learning

Residual Learning

  • H(x): 여러 계층을 지나며 학습하는 underlying mapping
    • x는 이 계층들의 첫번째 input
  • 여러 개의 비선형 층이 복잡한 함수를 근사할 수 있다면, 잔차 함수도 근사할 수 있다.
    • 따라서 쌓인 레이어가 H(x)를 학습시키기 보다, 잔차 함수 F(x)H(x)xF(x) \fallingdotseq H(x)-x를 근사하도록 한다.(더 쉬움)
      • 따라서 H(x)=F(x)+xH(x) = F(x) + x가 됨
    • 두 방법 모두 원하는 함수에 근사할 수 있지만 학습의 난이도는 다르다.
  • Residual Learning은 degradation 문제 해결에 도움이 된다.
    • 계층이 identity mapping으로 만들어 졌다면, 깊은 모델은 얕은 모델보다 training error가 크지 않다.
    • 여러 개의 비선형 계층으로 identity mapping을 예측하는 것은 어려움이 있을 것이다.
    • residual formulation으로 identity mapping이 최적이라면, identity mapping에 접근하기 위해 비선형 계층의 가중치를 0으로 다룰 수 있다.
  • 현실에서는 identity mapping이 최적이 아니다. 그러나 재구성을 통해 문제를 사전 조건화하는 데 도움이 될 수 있다.
  • 만약 최적의 방정식이 zero mapping보다 identity mapping에 가깝다면, 새로운 함수로 학습을 진행하는 것보다 identity mapping을 참조하는 것이 더 쉬울 것이다.

Identity Mapping by Shortcuts

  • 몇몇의 계층에 residual learning을 채택했다.
  • block은 다음과 같이 정의한다.
    y=F(x,{Wi})+xy = F(x,\{W_i\}) + x
  • x와 y는 input과 output이다.
  • F(x,{Wi})F(x,\{W_i\})는 학습해야 할 residual mapping이다.
  • 활성화 함수는 ReLU, 편향은 생략
  • F+xF+x는 shortcut connection과 element-wise 덧셈으로 계산된다.
  • 덧셈을 한 후, 비선형성을 위해 ReLU를 한번 더 사용한다.
  • shortcut connection은 파라미터와 계산 복잡도를 증가시키지 않는다.
  • x와 F의 차원은 동일해야 한다.
    • 동일하지 않을 경우 WsW_s를 통해 차원 수를 맞춰줘야 한다.
      y=F(x,{Wi})+Wsxy = F(x, \{W_i\}) + W_sx
    • 또한 identity mapping이 충분하다는 것이 실험을 통해 밝혀졌기 때문에 square Matrix WsW_s는 차원을 맞추는 데에만 사용한다.
  • residual function F는 유동적이다.
    • 그 이상의 계층도 가능하지만 실험에서는 2개 또는 3개의 계층만 가진다.
    • 만약 F가 1개의 계층만 갖는다면, 선형 계층(y=W1x+xy =W_1x+x)과 비슷하다.
    • FC Layer 뿐만 아니라 Conv Layer도 사용 가능하다.
    • Conv Layer의 경우 element-wise 덧셈은 채널마다 두 개의 feature map에서 수행된다.

Network Architectures

  • 다양한 plain/residual nets를 실험해 본 결과, 특정 현상을 발견했다.
  1. Plain Network
  • VGG에서 영감을 받음
  • Conv Layer은 3*3 filter와 두가지 규칙을 갖는다.
    • 같은 output과 feature map size, feature map 개수를 갖는다.
    • stride를 2로 설정함으로써 downsampling을 이용한다.
      • 계층의 시간 복잡도를 유지하지 위해 feature map size을 반으로 감소시킬 때, filter의 개수는 두배로 늘린다.
    • Global Average Pooling Layer와 1000-way FC layer, Softmax를 마지막으로 사용한다.
  • VGG보다 더 적은 filter를 사용하고 복잡도가 더 낮다.
  1. Residual Network
  • plain network에서 shortcut connection을 추가한다.
  • identity shortcut은 input과 output의 차원의 수가 같을 때, 직접적으로 사용된다.
  • 차원의 수가 증가할 때는 두가지 옵션을 사용한다.
    • shortcut은 차원 증가를 위해 zero padding과 함께 identity mapping을 사용한다.
    • WsW_s 사용
  • 두 옵션 모두에 대해 stride=2로 수행

Implementation

  • ImageNet 데이터 사용, scale augmentation(resize-256*480), crop(224*224), horizontal flip, standard color augmentation
  • 각 Conv 계층 마다 활성화 함수 사용 이전에 Batch Normalization 적용
  • mini-batch size를 256으로 SGD 사용, learning rate는 0.1 사용하지만 error가 평면을 이룰 경우 10으로 나눠줌, 6e5번 반복 학습
  • 가중치를 감소시킨다. 0.0001, 그리고 모멘텀은 0.9로 설정한다.
  • dropout은 사용하지 않는다.

Experiments

ImageNet Classification

  • 1000개의 class, 1.28e6 개의 training data, 50k validation data, 100k test data
  1. Plain Networks
  • 18, 34 layer pain net을 평가했다.
    • 18보다 34의 validation error가 더 높았다. \rightarrow degradation 문제가 더 심함
    • BN을 사용했기 때문에 순전파 신호는 non-zero 분산을 갖고 역전파 경사는 정규분포를 가짐을 확신했다.
    • 그러므로 순전파와 역전파 신호 모두 사라지지 않았다.
    • deep plain network는 낮은 전환률을 갖는다고 어림짐작했다.
  1. Residual Networks
  • 18, 34 layer의 residual net을 평가했다.
  • shortcut connection은 한 쌍의 3*3 필터에 추가되었다.
  • 첫번째로 identity mapping을 모든 shortcuts에 사용하였고 차원 증가를 위해 zero-padding을 사용하였다.(파라미터 증가 없음)
  • ResNet의 경우 34 layer가 18보다 더 training error가 적고 validation set에 일반화 되었다.
    • degradation 문제가 잘 해결되었고 깊이를 깊게 함으로써 정확도 향상을 얻을 수 있다는 것을 의미
  • plain net보다 training error가 더욱 감소하였다.
    • 매우 깊은 신경망에서 residual learning이 효과적임을 증명
  • 층이 깊지 않으면 training error는 비슷해도 빠르게 최적화 된다.
  • \therefore 파라미터의 증가 없이 학습에 효과적이다.
  • projection shortcuts 연구
    • A. 파라미터 증가 없는 zero padding shortcuts을 차원 증가에 사용
    • B. projection shortcuts는 차원 증가에만 사용되며 다른 shotcuts는 identity이다.
    • C. 모든 shortcuts에 projection shortcuts 사용
      • 위 3가지 모두 plain network보다 효과적이다.
      • B는 A보다 조금 더 효과적이다. (1은 사실상 residual learning이 없기 때문)
      • C은 B보다 효과적 (파라미터가 더 필요)
    • projection shortcuts는 degradation 문제 설명에 필수적이지 않으므로 3은 사용하지 않는다.
    • identity shortcuts은 복잡도를 높이지 않고 bottleneck 구조를 사용한다는 점에서 매우 중요하다.

Deeper Bottleneck Architectures

  • building block을 bottleneck으로 수정했다.
  • 기존에 F에 2개의 레이어를 사용한 것을 3개의 레이어로 수정했다.
    • 1*1, 3*3, 1*1 conv layer 사용
    • 1*1 layer은 3*3 레이어에 더 작은 차원의 input 차원을 주기 위해 차원을 줄이고 증가시키는 데 사용된다.
  • bottleneck은 더욱 identity shortcut이 중요하다.(계산 복잡도 때문)
    • 50-layer ResNet: 34-layer ResNet의 Basic Block을 Bottleneck Block으로 바꿈, 차원 증가를 위해서는 projection shortcut 사용
    • 101-layer and 152-layer ResNet
    • VGG-16/19보다 계산 복잡도가 낮음
    • 34-layer보다 정확도도 높고 degradation 문제도 일어나지 않음

CIFAR-10 and Analysis

  • 50k training data, 10k test data, 10 classes
  • input: 32*32 images
  • first layer: 3*3 conv layer, 그 후 3*3의 6n layers 사용(각 feature map size는 32-16-8, filter 개수는 16-32-64)
  • subsampling은 stride 2로 시행
  • global average pooling, 10-way FC layer, Softmax로 끝난다.
  • shortcut connections는 3*3 layers를 (3n shortcuts)를 사용했다.
    • residual model은 plain model과 정확히 같은 depth, width, 파라미터 수를 갖는다.
  • weight decay 0.0001과 0.9 momentum 사용
  • weight initialization과 BN 사용 (dropout은 사용하지 않음)
  • 128 mini batch와 2개의 GPU 사용
  • 0.1 learning rate로 시작해서 32k 48k iteration 때 10으로 나눠 줌. 총 64k iteration
  • 3 pixels padding, 32*32 crop, horizontal flip
  • plain 모델은 층이 깊어질수록 training error가 증가했지만, ResNet은 이를 극복했다.
  • 110-layer ResNet의 경우에는 0.1 learning rate가 너무 커서 0.01로 설정했다가 training error가 80% 미만일 때, 0.1로 다시 설정
  • SOTA인 FitNet과 Highway보다 파라미터 수가 적음

Analysis of Layer Responses

  • ResNet은 plain net보다 더 작은 반응(response)을 보인다.
  • 이것은 residual function이 non-residual function보다 더욱 0에 가깝다는 것의 의미
  • 더 깊은 ResNet이 더욱 작은 규모의 response를 가짐.

Exploding Over 1000 layers

  • 1000개 이상의 layer가 쌓일 경우 overfitting이 일어나는 것으로 보인다.(dataset에 비해 모델이 너무 복잡하다.)
  • maxout이나 dropout과 같은 regularization을 사용하면 성능을 높일 것이다.

Object Detection on PASCAL and MS COCO

  • COCO 2015에서도 1위
profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글