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

논문 링크 입니다. 이제 4개째 CNN논문 리뷰네요.

다음에는 좀 다른 유형의 논문을 리뷰 할 계획입니다. 감사합니다 _-_

2015년에 압도적인 성능개선으로 ILSVRC를 우승 한 작품입니다.

Abstract

neural networks가 깊을 수록 train 하기에는 매우 어렵습니다.
여기서 저자들은 이전에 사용된 network보다 아주 deep한 network를 train하기 위한 기법인 residual learning  Framework를 제안합니다.

여기 learning unreferenced function대신에 저자들은 layer 의 input을 참조하여, residual functions learning 하는 것으로 layer을 재구성 합니다.
이러한 residual network는 optimize하기 더 쉽고, 늘어난 depth에 따라서 더 높은 정확도를 얻을 수 있습니다.
ImageNet dataset에서 VGG보다 약 8배 더 깊은 최대 152개의 layer로 evaluate하는데, complexity는 낮습니다.
약 3.57% error을 달성하는데, classification분야에서 1등 하였으며, 100 layer와 1000 layer에서의 CIFAR-10의 대한 분석을 제시합니다.
Depth of representation은 visual recognition tasks에서 가장 중요 합니다.
COCO object detection dataset에 대해서는 28%의 relative improvement를 얻었습니다.
residual network는 ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation 에서 1등을 차지 하였습니다. 

1. Introduction

Deep convolutional neural network는 image classification에서 아주 좋은 기법입니다.
Deep network는 low/mid/high level의 feature와 classifiers in an end-to-end multilayer 방식으로 자연스러운 통합,
'level' of the feature은 stacked layer의 깊이에 의해서 풍부하게 될 수 있습니다. 
다양한 논문을 보면 network의 depth는 중요하며, ImageNet dataset에 대해서 모두 depth가 높은 것을 선택 했습니다.
다른 nontrivial visual recognition task에서도 deep model의 benefits을 받았습니다.

그림 1

근데 계속해서 연구를 하다보니 저자들은 depth에 중요성에 대해서 의문을 가지게 되었습니다.
더 좋은 network를 만드는 것이 layer를 더 쌓는 것이 중요한가?

이 질문에 대답하기 위해서는 저자들은 수렴을 방해하는 요소들인 vanishing/exploding gradient문제 였습니다.
하지만 이러한 문제들은 normalized initialization과 intermediate normalization layer로 해결 하였습니다.
이 layer들은 수십개의 layer가 있는 network가 backpropagation을 통해 SGD에 대한 수렴을 할 수 있게 합니다.
깊은 Network가 수렴을 시작 할때 성능저하 문제가 노출 되었습니다.
network의 깊이가 증가에 따라서 정확도가 빠르게 낮아지는 것을 알 수 있습니다.
그림1을 보면 알 수 있습니다. Training, Test error가 둘다 깊은 layer가 낮아서 overfitting문제가 아닌 것을 알 수 있다.

training accuracy가 낮아지는 현상은 모든 system이 optimize되는 것은 쉽지 않은 것을 알려줍니다.
더 shallower 한 architecture와 더 많은 layer를 추가하는 architecture를 고려합니다.
이렇게 deeper model에 대한 해결 솔루션은 존재 합니다. 
추가 된 것은 identity mapping이고, 다른 layer들은 학습된 shallower model에서 복사 됩니다.
이 솔루션은 깊은 모델들이 얕은 모델보다 더 높은 training error을 생성하면 안됩니다.
하지만 직접 해본 결과 해결책을 찾을 수 없었습니다. 

그림 2

이 논문에서는 deep residual learning framework를 도입하여 degradation 문제를 해결 합니다.
쌓여있는 몇개의 layer가 directly fit되기를 바라는 것을 원하기 보다는, 다음과 같이 layer가 residual mapping이 되도록
명시적으로 지정합니다.
공식적으로 보면 다음과 같습니다.
기존의 neural net의 경우 underlying mapping이 H(x)라고 한다면, 이 H(x)를 최소화 하는 것이 목표 였습니다.
이 논문에서는 F(x) := H(x) - x 가 되도록 합니다.그러면 original mapping을 F(x) + x 로 cast됩니다.
unreferenced mapping을 최적화 하는 것은 어렵고, residual mapping이 더 최적화 하기 쉽다고 가정합니다.
극단적으로 identity mapping의 optimal인 경우, nonlinear layer의 stack에 의한 identity mapping을 맞추는 것 보다는
residual은 0으로 맞추는 것이 더 쉽습니다.
F(x) + x 의 경우 shortcut connection이 있는 feedforward neural networks에 의해서 실현이 가능합니다.
shortcut connection의 경우 하나 이상의 layer를 건너 뛰게 됩니다.
이 경우 shortcut connections은 단순희 identity mapping을 수행하고, stacked layer에 output 에 추가됩니다.
identity shortcut connections은 추가 parameter나 computational complexity를 추가 하지 않습니다.
전체 network또한 backpropagation에 의해서 SGD를 통해 end-to-end train이 가능 합니다.
어떠한 개념인지 알고는 있지만 이렇게 영어로 직역할려니 힘드네요.

그냥 간단하게 설명하자면 다음과 같습니다.

1. H(x) = x 가 되도록 train합니다.

2. network의 output인 F(x)는 0이 되도록 train 합니다.
3. 그러면 H(x) = F(x) + x = x 입니다. 그러면 미분 시 F(x) + x의 경우 적어도 미분값이 1 이상입니다.
4. 이렇게 해서 모든 계층에서 gradient vanishing 현상을 해결 하였습니다.


논문의 저자들은 degradation problem을 보여주고, 방법을 평가 하기 위해서 ImageNet에서 test를 하였습니다.
1. 저자들의 extremely deep residual nets은 최적화 하기는 쉽다, 하지만 다른 일반적인 network들은 depth가
증가하면 높은 training error가 나오게 됩니다.

2. residual network는 쉽게 정확도가 향상되며 다른 network보다 좋은 결과를 얻을 수 있습니다.

CIFAR 10 Set에서도 유사한 현상이 있었으며, 이는 optimization의 어려움과 이 방법의 효과가 특정 데이터셋에
만 적용되는 것이 아닌 것을 알려줍니다.
저자들은 100개 이상의 layer를 가진 dataset에 대해 성공적으로 훈련된 model을 제시하고, 1000개 이상의 layer를 
가지 model들을 탐색 합니다.
ImageNet에서 우수한 결과, VGG NET보다 복잡성이 낮고, 앙상블을 통해서 3.57% 의 Error, coco 에서도 다양한 부분
에서도 우승 하였습니다.

여기는 직역하기에는 뭔가 너무 어렵네요. 아래에서 추가적으로 설명 하겠습니다.

2. Related Work

여기는 다른 관련된 연구에 대해서 설명하는데, 다른 논문을 참고하면서 해야 이해할거 같아서 SKIP하겠습니다.

3. Deep Residual Learning

3.1. Residual Learning

H(x)를 몇개의 stack layer에 의해 underlying mapping으로 간주하고, x를 이러한 layer에서 첫번째 layer에 대한 입력이라고 가정합니다.
만약 multiple nonlinear layers들이 asymptotically 하게 복잡한 함수에 근사가 가능하다면 , H(x) - x 같은 residual function 또한 asymptotically 하게 근사 가능 하다는 가설과 같습니다. 
(이때 input, output dimensions는 같아야 한다.)
그래서 저자들은 stacked layer들이 H(x) 근접하기를 기대하기 보다는, 명시적으로 residual function F(x) := H(x) - x에 
근접하도록 합니다. 
따라서 original function은 F(x) + x 입니다.
비록 두 형태 모두 원하는 functions에 따라서 점근적으로 근사 할 수 있어야 하지만, learning의 용이성을 다를 수 있습니다.

이러한 reformulation은 degradation problem에 대한 counterinituitive phenomena에 대해 동기부여가 됩니다.
introduction에서 말 했던것 처럼, 추가된 layer이 identity mapping으로 구성 될 경우에 더 깊은 모델이 얕은 model보다
크지 않은 training error를 가져야 합니다.
이러한 degradation problem의 해결하기 위해서 여러 solver들은 여러 nonlinear layer에 의한 identity mapping을 근사
하는게 어려움이 있을 수 있습니다. 
residual learning reformulation을 통해 , identity mapping이 optimal인 경우, solver들은 단순하게 identity mapping에 
접근 하기 위해서 multiple nonlinear layers의 weight를 0으로 유도 할 수도 있습니다.

real cases의 경우 identity mapping이 optimal일 확률을 낮습니다.
하지만 저자들의 reformulation은 문제를 precondition 화 하는데 도움이 될 수 있씁니다.
만약 optimal function이 zero mapping보다 identity mapping에 가까울 경우에, solver는 새로운 function으로 학습하는 것 보다, identity mapping을 reference 하여 perturbations을 찾는 것이 더 쉬워야 합니다.


여기서 실험을 통해서 학습된 residual functions은 일반적으로 small response를 가지고 있다는 것을 보여주며 이는 
identity mapping이 합리적인 prevcondition을 제공합니다.

3.2. Identity Mapping by Shortcuts

저자들은 모든 stacked layer에 residual learning을 적용 합니다.
building block은 그림2와 같으며, 본 논문에서 저자들은 (1)와 같이 정의된 building block을 고려 합니다.
여기서 x,y,는 layer의 input과 output 입니다.
F(x, {Wi})는 학습해야 할 residual mapping을 나타 냅니다.
그림 2의 예를 보면, 두개의 layer를 가지고 있으며, F = W2 σ(W1x) , 여기서 σ는 ReLU 입니다.
F + x operation은 shortcut- connection 및 element-wise addition에 의해 수행 됩니다.
추가 후 두번째 nonlinearity 을 채택합니다. (다시 relu)
shortcut connection은 extra parameter나 추가적인 compuation complextiy는 없습니다.(element wise는 너무 적음)
이러한 것은 매력적이고, 일반 network와 residual network를 비교하는데에도 중요합니다.
parameter의 수, depth, width, computational cost 등이 동일한 plain,residual network를 적절하게 비교가 가능합니다.
(element-wise는 연산량이 적어서 무시 가능할 수준)
x, F는 dimension이 같아야 합니다. 
그렇지 않을 경우에는 linear projection Ws를 이용하여 shortcut connection에서 dimension 맞출 수 있습니다.

저자들은 square matrix Ws를 사용 할 수도 있습니다.
그러나 여러 실험을 통해서 저자들은 identity mapping이 degradation 문제를 해결 기에 충분하고, 경제적이므로
Ws는 그저 dimension을 일치 시킬때만 사용 하기로 하였습니다.


residual function F는 flexible합니다
이 논문에서는 F는 2개 또는 3개의 layer를 가지게 됩니다. 더 많은 layer도 가능 합니다. (그림 5 참고)
그러나 만약 F가 오직 한개의 layer만 가지게 된다면,  Eqn(1)은 linear layer에 비슷하게 될것입니다.
다음과 같은 형태를 가지는데 y = W1x + x, 이러면 저자들은 advantages를 얻지 못한다고 합니다.|
우리는 또한 위의 notations이 단순성을 위해 fully connected layer를 대한 것 이지만, convolution layer에도 적용 할 수 있다는 것에 주목 해야 합니다.
F(x, {Wi}) 는 multiple convolution layer로도 표현 될 수 있습니다.

elements wise additions은 두개의 feature map에 적용 되는데, channel by channel로 됩니다.

3.3. Network Architectures

우리는 다양한 Plain/Residual nets을 test하였습니다. 여기서 consistent phenomena를 관찰 할 수 있었습니다.
여기서 저자들은 두개의 모델에 대해서 설명 합니다.

Plain Network.

저자들의 Plain baseline은 Fig3의 가운데 인데, VGGnet에서 영감을 받은 것 입니다.
convolution layer은 대부분 3x3 filter 그리고 두가지의 simple design rule를 따르게 됩니다.
(i) same output feature map size, the layers have the same number of filter
(ii) feature map의 크기가 반으로 줄면 filter의 수가 두배로 증가하여 complexity per layer를 보존합니다.
그리고 저자들은 stride가 2인 convolution layer에 의해 직접 downsampling을 수행 합니다.
network는 global average pooling layer와 1000-way fully-connected with softmax로 끝나게 됩니다.
fig 3의 가운데는 weighted layer의 수는 34입니다.
저자들이 모델은 VGG net보다 fewer filters and low complexity입니다.
34-layer baseline은 3.6 billion Flops이고, VGG의 18%에 해당합니다.(19.6 billion Flops)

Residual Network.

plain network를 base로 하며, 여기다가 shortcut connection을 넣었습니다.
residual version (오른쪽)
identity shortcuts(Eqn (1))의 input, output의 dimension이 같으면 직접 사용이 가능합니다.(Solid line)
dimension이 증가하면(dotted line shortcuts) 여기서는 두가지 옵션을 선택합니다.
(A)는 Shortcut 여전히 identity mapping으로 작동합니다. 나머지 증가된 dimension은 zero로 padding합니다.
(B)는 Projection shortcut을 이용합니다.(Eqn (2)) 이것은 dimension을 맞추기 위한 것으로 1x1 convolution을 이용 
합니다. 두가지 option은 모두 shortcut이 두개의 크기의 feature map을 통과할때 stride가 2로 작동 합니다.

3.4. Implementation

저자들의 구현은 기존에 ImageNet에서 사용하던 것을 이용 하였습니다.
image resize shorter side randomly sampled in [256,480] for scale augmentation.
224x224 crop is randomly sampled from an image, horiziontal flip, per-pixel mean substracted, 
standard color augmentation, 그리고 batch normalization을 after each convolution and before activation.
그리고 weight의 initialize는 기존에 있던 논문과 같은 방식으로 하고, plain, residual net을 모두 train합니다.
SGD를 이용하였으며 mini-batch size는 256, lr 은 0.1로 시작하여 error plateaus 마다 10씩 나누었습니다.
그리고 weight decay는 0.0001, momentum은 0.9를 이용 하였습니다.
그리고 dropout은 사용 안했고, test에서 비교 연구를 위해서 standard 10-crop test를 이용 하였습니다.

그리고 좋은 결과를 위해서 fullcyconvolutional form 형태를 채택하고, multiple scale에서 점수를 평균 합니다.
짧은쪽이 224,256,384,480,640이 되도록 합니다

 

4. Experiments

4.1. ImageNet Classification

논문의 저자들은 1000개의 class를 가지는 ImageNet 2012 Classification dataset을 이용하여 평가 하였습니다.
model은 1.28 million 개의 training image, evaluate는 50k의 validation image입니다.
그리고 저자들은 100k의 test image로 final result 를 얻었습니다.
TOP-1, TOP-5 의 error rate를 evaluate 하였습니다.

Plain Networks

우선 처음으로 18, 34 layer의 plain net을 evaluate 하였습니다.
Table 1을 보면 상세한 network architectures를 알 수 있습니다.

그리고 결과는 Table 2에 볼 수 있습니다. 
여기서 알 수 있는 것은 깊은 34-layer가 18-layer보다 error rate가 높은 것을 알 수 있습니다.
그리고 Fig4를 봐도 training, validation모두 34-layer가 높다는 것을 알 수 있습니다.
여기서 저자들은 degradation problem을 알 수 있었습니다.
34 layer가 모든 training구간에서 error가 더 높습니다.
저자들은 이렇게 optimization이 어려운 이유가 vanishing gradient때문이라고 설명합니다.

Plain network에서 BN을 이용하여 Train하여 forward propagated signal이 0이 아닌 분산을 가지도록 한다.
그리고 backward propagate에서도 gradient가 BN으로 인해 healthy norms이 보이도록 하였습니다.
그러므로 forward nor backward signal은 사라지지 않습니다.

실제로 34 plain network도 꽤나 경쟁력 있는 정확도를 달성 합니다.
Table3을 보면 어느정도 작동함을 시사합니다.
여기서 저자들은  deep plain network의 경우 기하급수적으로 낮은 수렴확률을 가진다고 합니다.
이는 training error의 감소에 영향을 미칩니다.
이러한 optimization의 어려움을 나중에 연구 될 것이라고 합니다.

 

Residual Networks

다음으로는 저자들의 18-layer and 34-layer를 가지는 residual net을 평가 합니다.(Resnet)
baseline architecture은 plain net과 같습니다.
shortcut connection을 3x3 filter pair에 추가 합니다.
첫 비교는 Table2, Fig 4의 오른쪽을 보면 됩니다.
identity mapping for all shortcut, 그리고 dimension을 맞추기 위한 것은 zero padding으로 하였습니다.
그러므로 no extra parameter가 없습니다.
저자들은 Table2, Fig4 에서 3개의 관찰결과를 얻을 수 있었습니다.


첫째, residual learning 으로 Plain network에서 생긴 상황이 반전 되었습니다.
34 Layer를 가지는 Resnet은 18 layer를 가지는 것 보다 성능이 더 좋습니다.
중요한 것은 34 layer가 더 낮은 training error를 가지며, validation data에 더 generalizable하다는 것 입니다.
degrading problem을 잘 다뤄서 depth를 증가 시키고, 더 좋은 정확도를 얻을 수 있었습니다.

둘째, plain 과 비교하면 34 layer Resnet은 top-1 error가 3.5이고, 성공적으로 training error도 내렸습니다.
이것으로 extremely deep systems에는 residual learning이 좋다는 것을 알 수 있습니다.

 

마지막으로 18-layer plain/residual net의 정확도는 Table2, 그리고 18 Resnet이 더 빨리 수렴합니다.
net가 지나치게 깊지 않은 18 layer일때 , 현재의 SGD solver는 Plain net에는 좋은 해결책 일 수도 있습니다.
이경우 Resnet은 더 빠른 수렴을 제공하여 최적화를 쉽게 합니다.

 

Identity vs. Projection Shortcuts

저자들은 parameter free, identity shortcut이 training에 도움이 된다는 것을 알 수 있었다고 하였습니다.
그리고 projection shortcut (Eqn (2))에 대해서 조사 하였습니다.
Table 3의 세가지 option을 주었습니다.
(A) zero padding shortcut, increasing dimension, all shortcut parameter free
(B) projection shortcut, increasing dimension, other shortcut identity
(C) all shortcut projection shortcut
Table 3의 결과를 보면 B가 A보다 약간 좋습니다.
이유로는 A는 zero-padded dimensions에 residual learning이 없기 때문이라고 생각한다고 합니다.
C는 또 B보다 약간 좋네요.
Extra parameter들이 증가 하면서 그렇게 된 것 같습니다.
3개의 차이가 너무 미미해서 안하는게 좋다고 합니다.
그러므로 C를 사용 안합니다. 모델이 너무 커서 Memory와 complexity가 너무 많이 사용 됩니다.
identity shortcut은 부분적으로 complexitiy를 증가 시키지 않는 것을 좋습니다. 
아래쪽의 Deeper Bottleneck architecture를 확인하세요.

 

Deeper Bottleneck Architectures

저자들은 ImageNet을 위한 deeper net을 소개 합니다.
training time에 대한 우려로 인해서 building block을 bottleneck design으로 수정합니다.
각 residual function F에 대해 2개가 아닌 3개의 Layer stack을 사용합니다.(Fig 5)
1x1, 3x3, 1x1 convolution이며, 1x1은 크기를 줄이고, 증가시켜 input output dimension을 유지 합니다.
fig 5가 두가지 설계가 유사한 시간 복잡성을 가진 다는 것을 알 수 있다.
parameter free identity shortcut은 bottlenect architecture가 중요 합니다.
만약 fig 5의 오른쪽이 projection을 대신하면 , 그 shortcut이 두개의 high-dimensonal 의 끝에 연결돼
시간 복잡도, 모델의 크기가 두배가 커지게 됩니다.
그래서 identity shortcut은 bottleneck designs보다 효율적이 모델로 이어지게 됩니다.

 

50-layer ResNet

저자들은 2-layer block이 3-layer bottleneck block으로 교체하여서 50layer의 Resnet 1을 생성 합니다.(Table1)
그리고 dimension 을 늘리기 위해서 option B를 이용하였고, 3.8 billion Flops입니다.

 

101-layer and 152-layer ResNets

저자들은 101,152 layer Resnet을 구축 하였습니다. 3-layer block을 더 사용 합니다.
depth를 늘려도 152-layer ResNet은 11.3 billion FLOPs, VGG-16/19 net은 15.3/19.6 billion FLOPs 계산량이 적습니다.
50/101/152 layer ResNet은 34 layer보다 훨씬 정확 합니다.
degradation proble은 관찰 할 수 없었고, 깊이를 늘릴 수록 좋은 정확도가 나왔씁니다.

 

Comparisons with State-of-the-art Methods

Table 4에서는 비교 하는데, 이전의 single-model result와 비교해서 매우 좋습니다.
single model의 경우 top-5 에서 4.49, 앙상블 result인 table5에서도 1등, 그러므로 ILSVRC 2015에서 우승 하였습니다.

4.2. CIFAR-10 and Analysis

저자들은 CIFAR10 dataset에서도 연구를 진행 하였습니다.
50k의 train image,10k 의 test image, 10개의 class를 가집니다.
의도적으로 간단한 아키텍처로 실험을 하였습니다. plain/residual architecture은 Fig 3의 form을 따르게 됩니다.
network input은 32x32 image입니다. pixel에서 mean을 뻇습니다.
first layer에서는 3x3 convolution, 6n layer stack을 사용 하고, feature map size는 {32,16,8} 입니다.
각 feature map size에 대해 2n layer를 이용 합니다. subsampling의 stride는 2로 convolution 를 수행 합니다.
network의 end은 global average pooling, a 10-way fully-connected layer, and softmax를 합니다.
그러면 총 6n+2 stacked weighted  layer가 됩니다.
요약하면 다음과 같습니다.

shortcut connection은 pairs of 3x3 layers에 이용 됩니다. (총 3n shortcut)
이 dataset에는 모두 option A를 이용 하였습니다.

그리고 저자들의 residual model을 plain model과 완벽히 같은 depth,width,parameter를 가집니다.
weight decay 0.0001, momentum 0.9, weight initialization은 Reference 논문 13과 같은 방식, BN, no dropout
두개의 GPU로 Batch size가 128 train 하였습니다.
learning rate는 0.1로 시작하여 32k, 48k iteration일때 10으로 나누어 주었습니다.
그리고 64k iteration 일때 종료 하였습니다 . 45k/5k train/val split.
simple data augmentation in for training: 4 pixels are padded on each side,
32x32 crop randomly sample from the padded image or horizontal flip
test에서는 32x32 single image를 이용 하였습니다.


n이 3,5,7,9 일때 즉 20,32,44,56 layer에 대해서 비교 하였습니다.
Fig 6의 왼쪽 에서는 plain net, deep plain net에서는 깊어질수록 error가 높아지는 것을 알 수 있습니다.
MNIST나 ImageNet에서 동일한 결과가 나왔습니다.
Fig 6의 가운데는 ResNet입니다. ImageNet case와 비슷 합니다.  
Resnet이 좋게 나오고 110일때는 조금 다르게 training 했다고 합니다. 주저리 주저리 말이 많네요.

Analysis of Layer Responses.

Fig 7은 layer response의 std를 보여줍니다.
response output of 3x3 layer after BN 를 그래프로 보여줍니다.
ResNet은 분석을 통해서 residual function을 확일 할 수 있습니다.
Fig 7은 generally smaller response를 가지고 있습니다. (plain과 비교하면)
이 결과는 residual function은 일반적으로 non residual function보다 0에 가까울 수 있다는 저자들의 말을 뒷받침한다.
깊은 Resnet은 깊을수록 작은 response 를 가지는 것을 알 수 있습니다.

 

Exploring Over 1000 layers

여기서 저자들은 1000 layer를 넘게 가지고 이쓴 model도 확인 하였습니다.

n = 200, 1202 layer를 가지게 됩니다. 
저자들의 방법은 no optimization difficulty 이므로 아주 낮은 training error를 가지는 것을 알 수 있습니다.
test error도 나쁘지는 않습니다.
그러나 deep model에는 문제가 있습니다. 1202 layer의 test error가 110 layer보다 안좋은 것 입니다.
overfitting 문제입니다. 너무 커서 19.4M이니 dataset이 적은 것이 문제 입니다.
strong regularzation maxout, dropout 적용하면 이 데이터셋에 더 좋은결과가 나옵니다.

4.3. Object Detection on PASCAL and MS COCO

마지막으로 object detection에도 아주좋은 결과나 나왔다는 것을 알 수 있습니다.

+ Recent posts