본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. 인공지능과 딥러닝

[논문리뷰] CNN :: ResNet 톺아보기

by WE DONE IT. 2018. 12. 2.

ResNet 논문 리뷰


He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).


ResNet 논문 리뷰를 시작하며


ResNet은 ILSVRC 대회에서 오류율 3.6%를 기록하며 1위를 한 모델이다. 
이미지 분류하는 작업에서 인간의 오류율이 5.1%인 것을 감안하면, ResNet의 3.6%의 오류율은 인간보다 더 뛰어난 성과를 기록한 것이다. (하지만 휴먼 에러의 기준의 top-1인지 top-5인지에 따라 이야기가 조금 달라질 거 같다.)
이는 기계가 인간의 시각 처리 능력보다 뛰어나다고 할 순 없지만, 인간 수준의 성능을 낼 수 있는 잠재력을 가지고 있다고 해석할 수 있다.

Introduction


ResNet의 특징 중 하나는 VGG 19-layer 보다 여덟 배나 깊은 152-layer라는 것이다. 
  • AlexNet 네트워크: 5-layer
  • VGGNet 네트워크: 19-layer (16-layer와는 큰 성능 차이가 없었음)
  • GoogleNet 네트워크: 22-layer

성능이 우수한 네트워크 모델을 살펴보면 깊이(depth)가 중요한 요소라는 걸 알 수 있다. 
ResNet 논문은 서론에 "네트워크의 층이 깊을 수록 학습이 더 잘되는가"라는 질문을 던지며, 층이 깊어질 수록 발생하는 문제에 대해 논한다.
"Is learning better networks as easy as stacking more layer?"



Figure 1.에서 20-layer와 56-layer의 plain 네트워크별 오류율을 살펴보면, 더 깊은 네트워크의 
training error와 test error 결과가 안 좋은 것을 확인 할 수 있다. 

더 깊은 네트워크의 성능이 잘 나오지 않는 문제가 발생한다. 
이는 오버피팅 때문이 아니며(overfitting: training accuracy는 결과가 잘 나오나, test accuracy는 올라가다가 떨어지는 경우), gradient vanishing은 bath normalization과 ReLu, initialization 설정으로  줄일 수 있다.

층이 깊어질수록 degration problem이 발생하여, 학습이 더욱 어려워지는 문제를 ResNet은 Residual learning을 통해서 해결하였다.


Degradation Problem: train과 test도 잘 되는데 성능이 잘 안나옴. (?)


Degradation problem:

  1. overfitting이 발생하지 않음에도 불구하고, shallower network보다 성능이 나쁘다(quality drops). 
  2. 보통 최적화가 잘 작동하지 않는 다고 설명함.
  3. Deep network는 이론상 새로이 추가된 layer의 identity mapping함수를 학습할 수 있어서, shallower network보다는 성능이 더 좋아야 한다.
  4. Identity mapping 문제: 실제로는 optimizer는 identity(or near-identity) mapping을 학습하는데 어려움이 있다.
  5. Residual mapping은 이 identity mapping 문제를 더 쉽게 완화할 수 있다.



Deep Residual Learning Framework


[기존 네트워크 구조] 

x를 받아 2개의 weight layer를 거쳐 H(x)를 출력한다.


[ResNet의 구조]


Residual representation은 output과 input의 차이인 F(x)를 학습하는 것.
F(x) = H(x) - x  -> H(x) = F(x) + x

dentity mapping을 stack of nonlinear layer 보다 residual을 '0'으로 하여 Identity mapping을 최적화할 수 있다.

F(x) + x을 "shortcut connection"으로도 볼 수 있다. 
  • Shortcut connection의 개념
    1개 또는 여러 개의 layer들은 파라미터 없이 바로 스킵하는 것
     (= input을 output 레이어에 바로 연결시킴)

논문의 주요 골자

  1. ResNet(deep residual nets)은 최적하하기 쉬운 반면, plain 네트워크(simply stack layer, 기존의 네트워크)는 레이어가 깊이가 깊어질 수록 학습 오류율이 높아진다. 
  2. ResNetd은 깊이가 상당히 깊어지더라도 기존의 네트워크보다 점진적으로 개선되는 정확도를 얻을 수 있다.

ResNet 모델의 화려한 우승 이력

  • ILSVRC 2015 1st (Image 테스트셋 기준 top-5 error 3.75%) 
  • ImageNetDetection 1st
  • ImageNet Localization 1st
  • COCO Detection in ILSVRC 1st
  • COCO Segmentation 1st

Deep Residual Learning

1. Residual Learning

  • H(x) -x : output과 input이 같은 차원이라고 가정
F(x)가 H(x) 보다 학습이 잘 된다면, solver가 여러 개의 non-linear layer를 가지고 identity 함수를 근사하는 작업에 어려움이 있다 (?)
If the optimal function is closer to an identity mapping than to a zero mapping, it should be easier for the solver to find the perturbations with reference to an identity mapping, than to learn the function as a new one. We show by experiments  

2. Identity mapping by shortcuts

Building block 정의

y = F(x, {Wi}) + x.

  • x : input 

  • y : output

  • F(x, {Wi}) : 학습을 위한 residual mapping


x와 F의 dimension이 같지 않은 경우

: y = F(x, {Wi}) + Ws*x.

(input과 output 채널이 달라져서 dimension이 다를 경우, dimension 매칭을 위해 파라미터 w를 추가하여 학습)


정리하면

    • 기존의 네트워크는 H(x)(Target Function)을 얻기 위해 학습했다면, ResNet은 F(x)가 ‘0’이 되는 방향으로 학습
    • F(x) = H(x) - x 에서 F(x)를 학습한다는 건 나머지(residual)을 학습한다는 것
    • x가 그대로 shortcut을 통해 skip connection 되기 때문에, shortcut 연결을 제외한 연산의 증가는 없음
    • weight layer를 통해 나온 결과와 그 전 결과를 더하고 ReLU를 사용
    • F(x)가 몇 개의 레이어를 포함하게 할지 선택할 수 있으며, FC 레이어와 Conv 레이어도 선택 가능
    • x와 H(x)의 dimension이 다른 경우, dimension을 맞추기 위해 네트워크(parameter w)를 추가함

Experiment


실험 방법
  • Conv layer는 3x3 kernel 사용
  • 복잡도를 줄이기 위해 max-pooling, hidden FC, Dropout 등은 사용하지 않음
  • 출력 Feature-map의 크기가 같은 경우, 해당되는 모든 layer는 동일한 수의 Filter로 설정
  • 출력 Feature-map의 크기가 절반이 될 경우, layer의 연산량 보존을 위해 filter의 개수를 두 배로 늘림
  • 출력 Feature-map 크기를 줄여야 하는 경우, pooling 대신 stride의 크기를 ‘2’로 설정
  • Residual Network는 두 개의 Conv layer 마다 skip connection을 연결함
  • 결론) Plain network의 경우, 네트워크의 깊이는 VGG 보다 늘어났지만 filter 개수를 줄이고 복잡도를 낮춤으로써 연산량은 18%로 줄어듦. (VGGNet 19-layer: 19.6 billion FLOP / ResNet plain 34-layers: 3.6billion FLOP)

+ ppt 자료 추가)
> input과 output의 feature map 크기가 동일한 구간에서는 identity shortcut을 사용함
> feature map 크기가 증가할 때는 두 개 중 하나를 따름 (둘 다 stride = 2)
(A) identity shortcut을 사용하되 증가한 dimension을 처리하기 위해 ‘0’ 성분을 몇 개 붙여줌 (파라미터는 따로 증가시키지 않음)
(B) identity shortcut을 사용하되, 증가한 dimension을 맞출 때만 1x1 convolution 등을 통해 projection shortcut을 사용함
(C) 모든 shortcut을  projection shortcut으로 대체함. (free 파라미터가 추가로 많이 필요함)

1. ImageNet Classification

- 18-layer vs. 34-layer에 대한 Pain network와 Residual network 실험 결과 비교


Plain network

  • Bottlenect(BN)을 적용하여 forward propagation 값이 ‘0’이 아닌 걸 확인함.
  • Backward propagation의 gradient 값들이 괜찮은 크기를 갖음
  • 따라서, 34-layer의 오류율이 18-layer보다 큰 이유는 Gradient Vanishing으로 야기된 게 아님
  • 34-layer에 iteration을 늘려서 학습을 더 진행했음에도 불구하고 degradation problem은 해결되지 않음

Residual Network

    (A) 옵션을 적용했으므로 파라미터가 추가되지 않은 버전의 ResNet 네트워크

    34-layer의 오류율이 18-layer 보다 낮으며, 수렴도 빨리 되는 것을 확인할 수 있음

  • 이는 degradation problem을 잘 해결한다는 것을 의미함.
  • 18-layer간의 비교: Plain과 ResNet 결과는 비슷하지만, ResNet이 훨씬 더 빨리 해에 수렴함 
  • 34-layer간의 비교: ResNet이 Pain 보다 3.51% 낮은 오류율을 내며, 압도적으로 더 좋은 성능을 보임 


shortcut 방식을 변경한 결과값이 34A,34B, 34C에 나타나 있음.

A~C에는 큰 차이가 없으며, free 파라미터를 가장 많이 쓴 c 옵션 방식은 실험에 더 이상 사용하지 않음.


Deeper BottleNeck Architecture

  • 34-layer 보다 더 깊은 layer에서는 bottleneck 구조를 사용함
  • 1) 차원이 큰 input을 처리할 때, 1x1 filter를 이용하여 차원을 축소함.
  • 2) 3x3 filte를 적용하여 feature를 추출
  • 3) 다시 1x1 filter를 적용하여 shortcut connection을 위해 차원을 다시 원복함
  • non-bottleneck ResNet 구조도 정확도 측면에서는 이점이 있지만, bottleneck ResNet만큼 경제적이진 않음.
  • (중요) parameter-free shortcut을 사용하는 것 중요. 만약 identity shortcut이 projection shortcut으로 바뀌면 복잡도와 모델 크기가 두 배가 됨.

실험 결과 - bottleneck

  • ResNet-50: 2-layer block -> 3-layer block으로 교체, option B shortcut 사용
  • ResNet-101/152: 3-layer block을 더 많이 추가한 것
  • ResNet-152: 여전히 VGG-16/19의 복잡도에 도달하지 않으면서도 degradation problem을 겪지 않음

CIFAR-10
  • 10개의 클래스로 이루어진 32x32 작은 크기의 이미지
  • 초기 알고리즘과 구조 검증에 많이 사용됨
  • 이미지 크기가 작기 때문에 기존 ResNet 구조에 조금 변형이 필요함

2. CIFAR-10 분석

  • 6n개의 Conv layer
    : (2n, 2n, 2n)에 해당하는 feature map 크기는 {32, 16, 8}이고, filter 개수는 {16, 32, 64}로 동일하게 설계
  • 10-way FC와 softmax가 포함되어 전체 layer 수는 6n+2개
  • shortcut 개수는 3n개
  • n={3,5,7,9}에 대해 실험했으며, 결과는 2-/32/44/56-layer
  • Plain Network
    : layer가 늘어날 수록 결과가 나빠짐
  • ResNet
    : layer가 깊어질 수록 결과가 좋아짐. 특히 n=18로 설정하여 ResNet-101까지 실험했는데, 성능이 더 좋아짐

실험 결과 - Response

  • Response: BN 이후, 활성 함수(activation function) 이전의 z들이 의미함
  • 레이어가 깊어질 수록 표준편차가 작아짐
  • 레이어가 깊은 ResNet의 response들이 더 안정적이라고 할 수 있음

실험 결과 - 1202-layer

  • n=200으로 늘려서 레이어의 깊이를 1202까지 늘렸을 때,  오버피팅(overfitting)이 발생하여 110-layer 결과보다 성능이 조금 안 좋음.
  • 이를 위해, maxout 또는 dropout 같은 별도의 regularization 기법들을 적용하면 더 나아질 것임.




논문 리뷰

장점 

  • 다양한 조건을 적용하여 모델별 성능을 비교를 하며, 모델의 성능에 대한 당위성을 증명함
  • 결과론적인 해석이 아닌, 근본적인 문제를 개선시켜 모델의 성능을 향상 시킴

단점

  • 관련 연구(related work)에 대한 서술이 다소 아쉬움
  • 용어에 대한 정의나 설명이 부족함 (i.e., shortcut, plain network) 



댓글