논문 : http://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html
Abstract
Deeper neural network는 더 훈련시키기 어렵다. 우리는 이전의 사용되었던 것보다 실질적으로 더 깊은 네트워크의 훈련을 용이하게 하기 위한 residual learning framework를 제시한다. 계층 입력에 대한 learning residual 함수로 계층을 명시적으로 재구성한다. 우리는 이러한 residual network가 최적화하기 쉬우며 깊이가 상당히 높아져 정확도를 얻을 수 있음을 보여주는 포괄적인 경험적 증거를 제공한다. ImageNet dataset에서 우리는 VGG net보다 8배 더 깊지만 여전히 복잡성이 낮은 최대 152개 layer가 있는 residual net을 평가한다. 이러한 residual net 전체는 ImageNet test set에서 3.57% 오류를 성취한다. 이 결과는 ILSVRC 2015 분류 작업에서 1위를 차지했다. 또한 100 및 1000개의 layer가 있는 CIFAR-10 에 대한 분석도 제공한다. 표현의 깊이는 많은 visual recognition 작업에서 가장 중요하다. 매우 깊은 표현으로 인해 COCO object detection dataset에서 28%의 상대적 개선을 얻는다.
1.Introduction
Deep convolutional neural network는 image 분류에 대한 일련의 돌파구를 가져왔다. Deep network는 자연적으로 low/mid/high-level feature와 classifier을 end-to-end multi layer 방식으로 통합했고 feature의 "level"은 깊이에 의해 강화될 수 있다. 최근 증거는 network 깊이는 매우 중요하다는 것을 드러내며, 도전적인 ImageNet dataset에 대한 선도적인 결과는 모두 16에서 30까지 깊이의 "매우 깊이" 모델을 이용한다.(즉, 더 깊은 모델일수록 더 좋은 성능이 나온다.)
이에 따라 depth에 대해 "layer를 더 쌓을수록 network는 더 잘 할습할까"라는 의문이 떠올랐다. 이 질문에대한 장애물은 시작으로부터 수렴을 방해하는 vanishing/exploding gradient 문제이다. 하지만 이 문제는 주로 표준화된 초기화 및 중간 계층에 의해 해결되었다. 이것은 수십개의 계층을 가진 network가 back-propagation(역전파)와 함께 stochastic gradient descent(SGD)을 위한 수렴을 가능하게 만들었다.
깊은 네트워크가 수렴하기 시작할 수록, degradation 문제는 노출되어왔다. 즉, 깊이가 증가함에 따라 accuracy가 포화되어(더는 증가를 하지 않는) grade가 점점 빨라진다는 것이다. 이러한 degradation 문제는 Overfitting이 원인이 아니라, Model의 depth가 깊어짐에 따라 train-error가 높아진다는 것이다. Fig.1에서 전형적인 예시를 보여준다.
정리)
Figure 1을 보았을때 20 layer보다 56 layer 즉, 더 깊은 계층을 가진 모델이 train-error와 test-error가 높다.
layer를 더 쌓을 수록 성능이 좋아져야 하는 것이 아닌가?
그 이유는 vanishing / exploding gradient 문제(층이 깊어질수록 역전파되는 그래디언트가 중간에 죽어서 학습이 잘 되지 않는 문제)와 degradation문제이다.
더 깊은 모델에 대한 construction에 의한 해결책이 존재한다. 더해진 layer는 identity mapping된 것이고, 다른 layers는 조금 얕은 모델로부터 학습되어 복제된 것이다. 이러한 모델 Solution은 deep한 모델일지라도 shallow한 모델보다 높은 training error를 가질 필요가 없다는 것을 보여준다.
이 논문에서 우리는 deep residual learning 프레임워크에 도입된 degradation 문제를 설명한다. 각각의 쌓이는 layer가 바로 아래에있는 mapping을 희망하는 대신에 우리는 이러한 layers를 residual mapping한다.
H(X)를 기존의 네트워크라고 할때(x는 layer의 input이다.) 이 H(x)는 여러 비선형 layer로 이루어져 천천히 복잡한 함수에 근사된다고 가정할 때, F(x) := H(x) - x로 바꿔 F(x) + x 를 H(x)에 근사하도록 하는 것(Residual mapping)이 더 쉽다고 가정한다.
이에 기반해 이를 feedforword neural networks에 적용한 것을 "shortcut connections"라고 한다.(Fig. 2) Short connection은 한 개 이상의 layer를 skipping하는 것을 의미한다. 또한 Shortcut connection는 deirect mapping을 하는 대신에 identity mapping을 한다. Identity shortcut connection은 extra parameter를 추가하는 것도 아니고, computational complexity가 증가하지 않게 된다. 그 전체 network는 SGD와 backpropagation을 통해 학습될 수 있다.
정리 2)
degradation 문제를 해결하기 위해 본 논문에서 제안한 방법은 residual learning이다.
기존에는 H(x)를 출력으로 하는 layer에 대해 weight를 업데이트 하였다면
residual mapping은 입력 x값을 출력값에 더하는 identity mapping을 수행하여 그래디언트가 잘 흐를 수 있도록
일종의 지름길인 shortcut Connection라고 불리는 방법을 사용한다.
3. Deep Residual Learning
3.1. Residual Learning
H(X)를 기존의 네트워크라고 할때(x는 layer의 input이다.) 이 H(x)는 여러 비선형 layer로 이루어져 천천히 복잡한 함수에 근사된다고 가정할 때, F(x) := H(x) - x로 바꿔 F(x) + x 를 H(x)에 근사하도록 하는 것(Residual mapping)이 더 쉽다고 가정한다.
이러한 reformaulation은 degradation에 대한 이전이 상식에 반하는 현상이다. Intoduction에서 layers가 추가될수록, 더 deep한 모델일수록 training error가 shallow한 모델보다 더 낮은 error을 가질 수 없다는 상식이다.
3.2 Identity Mapping by Shortcuts
Residual Learning의 중점은 degradation문제를 어떻게 해결하느나인데, 위(Fig. 2)에 나왔던 것처럼 F(x) + x를 H(x)에 근사하게 한다. shortcut connection을 Neural Network에 사용하여 역전파(back propagation)할 때, identity mapping(x)를 미분하면 적어도 1이상의 값이 나와 최소한의 기울기를 만들어서 학습이 제대로 일어나지 않는 현상을 최소화했습니다. H(x)와 F(x)+x가 천천히 근사하는 방식은 같더라도 학습의 속도나 안정성으로 보았을 때 Shortcut connection이 훨씬 더 효율적입니다.
기본적인 residual block을 다음 수식과 같이 정의합니다. 이때 σ는 ReLU이고, biases는 표기상 생략되었습니다. 위의 경우(1)에서는 x와 F와 dimension이 동일해야 하는데, 만약 dimension이 바뀔경우 Linear projection Ws를 적용할 수 있습니다.
여기서 Ws는 x의 dimension을 맞추기 위해서만 사용된다. (2)을 projection shortcut connection이라고 부른다.
residual Learning은 Introduction에서 설명한 내용과 같으며
Identity Mapping에서 residual block을 정의하는 수식이 있는데 x와 F의 dimension이 같은 경우와 다를 경우가 있다.
3.3 Network Architectures
우리는 다양한 plain/residual net을 테스트해왔다. 다음은 ImageNet을 위한 두 모델을 설명한다.
Plain Network
plain baseline(Fig. 3 중간)은 주로 VGG net(Fig. 3 왼쪽)에서 영감을 받아 만들었다. plain network는 두가지 design rule이 있다.
첫째는 각 layer들은 같은 크기의 output feature map size를 만들고, 동일한 filter의 개수를 갖는다.
두번째 만약 feature map size가 반으로 줄어든다면, layer당 time complexity을 유지하기 위해서 filter의 개수는 두배가 된다.
downsampling을 하기 위해서 stride가 2인 convolutional layer를 통과시킨다.
convolution layer(34개)를 통과한뒤, global average pooling,1000-wqy fully-connected layer with softmax로 끝난다. 또한 이 모델은 VGG Net보다 fewer filters, lower complexity를 가지고 있고, layer baseline은 3.6 billion FLOPs로서 VGG의 18%(FLOPs)이다.
Residual Network
plain network에 기반을 두고 우리는 shortcut connection을 추가한다. identity shortcut은 input과 output이 같은 dimension일때 바로 사용된다. dimension이 증가할때, 두가지 옵션을 고려한다.
(A) identity shortcut connection을 계속 실행하는 경우, dimension을 증가시키기 위해 나머지를 zero padding한다. 이 경우가 왜 Extra parameter가 필요없는지 설명해준다.
(B) projection shortcut connection은 deimension을 맞추기 위하여 1X1 connection을 사용한다.
양쪽 옵션 모두 shortcuts이 feature map을 2size씩 건너뛰기 때문에 stride는 2를 사용한다.
4.Experiments
4.1. ImageNet Classification
ImageNet 2012 classification dataset에서 model을 평가하였고, 학습이미지는 1.28 백만장, 평가는 5만장을 이용하였다. 그리고 서버로 보내는 최종 테스트시에는 10만장을 이용하였고, top-1.top-5 에러율을 평가하였다.
Plain Netsorks.
우리는 먼저 18-layer와 34-layer plain net을 평가한다. 34-layer plain net은 Fig.3(중간)이며 18-layer plain net와 비슷한 형태이다.
(자세한 구조는 Table 1을 봅니다.)
Table 2는 더 깊은 34-layer plain net은 18-layer plain net보다 더 높은 validation error을 가진다. 여기서 degradation의 문제를 관측했다. Fig.4를 보면그 이유를 알수있는데 layer가 더 많은 plain-34가 더 높은 Training error를 보인다.
이러한 문제에 대해 optimization problem이 vanishing gradients때문에 일어났을 것이라고 생각하지는 않았다. 왜냐하면 BN을 통해 학습되었고 backward,forward 모두 문제가 없었기 때문이다. 그 말은 즉슨, 아직 34-layer plain nets는 경쟁력이 있다는 소리이다. 추측으로는 deep plain nets가 기하급수적으로 낮은 수렴률을 가지고 있어서 traning error를 줄이는 영향을 준다는 것이다. 아마 이 이유에 대해서는 추후에 더욱 더 연구될 것이다.
plain net보다 ResNet에서 계층의 깊이가 더 깊을수록 전체적인 error rate가 낮다.
Residual Networks.
그리고 18,34-layer를 가지는 residual network를 평가했다. Tabe.2와 Figure.4를 보면서 비교해보면,layer가 깊어질수록 error가 2.8%나 줄어들었다. 그리고 더 중요한 것은 Figure.4에서 training error가 줄어들고 있고, validation data에대해 더 일반화를 잘하고 있다는 것을 알 수 있다. 이로써 degradation문제를 해결했다고 말할 수 있다. 그리고 34-layer plain net에 비교하여 34-layer ResNet은 3.5%나 더 낮은 error를 보인다.(training error 감소 또한 성공적). 이 비교는 deep한 system의 residual 을 학습하는 것이 더 효율적이라는 것을 증명해냈다. 마지막으로 Figure.4를 보면 ResNet이 더 빠르게 oprimizaition을 하는 모습(빠르게 수렴)을 볼 수 있다.
4.2 CIFAR-10 and Analysis
CIFAR-10에서도 위와 마찬가지로 학습을 진행하였다. 초반부는 겹치는 내용이 많기에 그냥 읽어보면 된다.
Fig.6(왼쪽)은 plain net을 보여준다. plain net은 깊어질 수록 더 높은 training error를 보여준다. 이 현상은 ImageNet(Fig.4 왼쪽)과 MNIST 와 비슷하면서 이러한 최적화 어려움은 근본적인 문제를 보여준다.
Fig.6(중간)은 ResNet을 보여준다. ImageNet (Fig.4 오른쪽)사례와 비슷하게 ResNet은 최적화 문제를 극복하고 깊이가 증가할때 정확도 향상을 보여준다.
4.2.1 Anaysis of Layer Responses
ResNet은 plain net에 비해 일반적으로 더 적은 반응을 보인다. 이 결과는 즉, 앞선 기본 가정이었던 residual funtions가 non-residual function 보다 일반적으로 더 0에 가까워질 것이라는 것을 지지해준다.
4.3 Object Detection on PASCAL and MS COCO
마찬가지로 recogniton tasks에서도 빛을 발했다. COCO datasets에서 6.0% 더 좊은 수치를 기록하였다. 이는 28%의 상대적인 발전이었다.
느낀점)
ResNet을 지나가는 개념으로 알고있다가 ResNet에대한 논문을 읽으면서 제대로 이해못한 residual block을 이해하게되었다. 또한 layer가 깊어질수록 error가 무조건 줄어들지 않아 이러한 degradation 문제를 해결하기 위한 short connection으로 identity mapping을 수행하는 이유와 원리에 대해서 알아갔다.
'Programmer > Deep Learning' 카테고리의 다른 글
[논문리뷰]DeepFace: Closing the Gap to Human-Level Performance in Face Verification (0) | 2020.07.02 |
---|---|
YOLO ,object detection network의 이해 (0) | 2020.04.28 |
[논문리뷰] Histograms of Oriented Gradients for Human Detection (0) | 2020.04.28 |
YOLO 튜토리얼 3. Implementing the forward pass of the network (0) | 2020.04.26 |
YOLO 튜토리얼 2. Creating the layers of the network architecture (0) | 2020.04.26 |