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에도 아주좋은 결과나 나왔다는 것을 알 수 있습니다.

저는 cs231n을 base로 들어서 자세한 내용까지 설명하지 않았습니다.

https://arxiv.org/abs/1409.4842

 

Going Deeper with Convolutions

We propose a deep convolutional neural network architecture codenamed "Inception", which was responsible for setting the new state of the art for classification and detection in the ImageNet Large-Scale Visual Recognition Challenge 2014 (ILSVRC 2014). The

arxiv.org

역대 우승자

2014년에 GoogleNet은 ILSVRC 에서 우승 하였습니다.

Abstract

우리는 ImageNet Large-Scale Visual Recognition Challenge 2014 (ILSVRC14) 에서 detection 과 classification 분야에서 새로운 deep convolutional neural network architecture를 제안 하는데 이름은 Incep-tion 입니다.

이 Architecture는network 내부의 Computing resources를 개선 합니다.
이는 네트워크의 depth와 width를 계산량을 유지하면서 늘리는 것이 목표 이며, 구조는 multi-scale processing과 
Hebbian principle에 기초로 하였습니다.
GoogLeNet은 22개의 layer이다.

1 Introduction

지난 3년간 딥러닝보다는 Convolution network의 발전으로 인해서 image recognition과 object detection은 극적인 
속도로 발전 하였습니다. 한가지 고무적인 것은 이러한 발전이 강력한 하드웨어와 큰 데이터셋, 그리고 큰 model 덕분이
아니라 새로운 아이디어, 그리고 개선된 알고리즘과 network architecture의 결과라는 것 입니다.
ILSVRC 2014에 제출한 GoogleNet은 2년전의 AlexNet보다 12배 적은 parameter를 사용하여 훨씬 정확한 결과를 얻을 수 있었습니다.
그리고 object detection의 큰 이점은 deep network와 아주 큰 model에서 오는 것이 아니라 R-CNN 같이
deep architecture와 고전적인 컴퓨터 비전의 시너지에서 오게 됩니다.
그리고 mobile및 embedded 컴퓨팅이 지속적으로 발전하여 알고리즘의 효율성, 그리고 메모리 사용의 중요성이 커지고
있으며, 주목할만한 것은 이 논문에서는 deep architecture의 설계에서 고려된 사항이 정확도 숫자에 집착 보다는 효율적인 계산, 메모리 사용량에 대한 것이 포함됩니다.

실제로 이거는 추론시간에 1.5billion 이하의 연산만을 수행하도록 설계 되었다고 합니다.
이 모델이 순수한 학문적 호기심이 아니라 대규모 데이터셋에서도 잘 사용되었으면 한다고 합니다.
이 논문에서는 컴퓨터 비전 분야에서 효율적인 deep CNN architecture인 inception에 focus를 맞춥니다.
이 아키텍처는 유명한 “we need to go deeper” 라는 인터넷 밈과 관련하여서 연구진이 네트워크 이름을 정했습니다.

2 Related Work

LeNet-5 를 시작으로 CNN은 일반적으로 하나이상의 Fully-connected layer이 뒤에 오는 Stacked convolutional layer를 가지게 됩니다.
이 기본적인 설계의 변형은 image-classification 분야에 넓게 퍼짐, MNIST에서 최고의 결과가 나왔습니다. 

CIFAR, 특히 ImageNet classification같은 것은 대규모 데이터셋이므로 최근 추세는 layer 수와 layer의 size를 늘리고 
있으며, overfitting 문제를 해결하기 위해서 dropout을 사용 하였습니다.

그리고 maxpooling layer가 spatial information의 손상을 초래 한다는 우려에도 불구하고, 동일한 CNN 이 localization,
object detection, human pose estimation 분야에서 성공적으로 채택 되었습니다.
Inception model이 여러번 반복되는 GoogLeNet model의 경우 22-layer의 deep model입니다.

object detecion은 이 당시에 가장 좋은 접근 방식은 R-CNN으로 R-CNN의 경우 Detecion을 위해서 두가지 하위 문제로 
분해하는데, 먼저 color와 subpixel의 일관성과 같은 low-level의 단서를 이용하여 object proposal를 하고, CNN을 이용
하여서 해당 위치의 object의 category를 정하게 됩니다. 이러한 접근 방식은 low-level의 단서로 bbox를 분할의 정확성,
그리고 CNN의 매우 강력한 object classification 성능을 결합하는 것 입니다. 

3 Motivation and High Level Considerations

deep neural networks는 성능을 향상시키는 것은  크기를 늘리는 것이라고 합니다.
여기서 network의 depth와 width의 증가도 포함됩니다.
특히 아주 많은 양의 lable된 train data를 사용 할 수 있다는 점 덕분에 higher quality model를 쉽고, 안전하게 훈련 
가능 합니다. 하지만 여기서는 두개의 단점이 존재합니다.

그림 1

크기가 클수록 일반적으로 parameter의 수가 많아서 특히 train set의 labeled된 예제 수가 제한 된 경우에는 network가
overfitting되기 쉽습니다.
그리고 high-quality의 training set을 만드는것 상당히 까다롭고, 비쌉니다.
그리고 ImageNet과 같이 세분화된 영역에서는 이러한 것이 문제가 될 수 있습니다.

그리고 크기가 uniformly 하게 증가된 network는 computational resource가 엄청나게 증가합니다.
예를들면 deep vision network에서 만약 두개의 convolutional layer가 결합하면 filter 수가 균일하게 증가하여 계산량이 2배가 증가 합니다.
만약 추가된 capacity가 ( 가중치가 0에 가까운 경우) 많은 계산량이 낭비 됩니다.
실제로 할 수 있는 계산량을 유한하여, 주요 목적이 결과의 quality를 좋게 하기 위해선 크기보다는 계산 resources를 
효율적으로 분배하는 것이 좋습니다.

Spare, Dense차이


이러한 문제를 해결하는 방법은 fully connected된 것에서 sparsely connected architecutre로 바꾸는 것 입니다.
심지어 convolution 내부에서도 이렇게 바꿉니다.
생물학적 시스템을 보고 따라한것 이외에도, 획기적인 연구로 인해서 단단한 이론적 토대가 될 수 있습니다.
어떤 연구에서는 주요 dataset의  probability distribution이 크고 spared deep neural network에 표현 될 수 있는 경우,

last later의 activation correlation statics를 분석하고, 상관관계가 높은 출력을 가진 neuron을 clustering 하여 최적의
network toplogy를 얻을 수 있다고 합니다. 수학적 증명이 필요합니다.
이 아이디어는 less strict한 조건에서도 적용이 가능합니다.

단점으로는, 오늘날의 Computing infrastructure는 non-uniform sparse data structure의 numerical calculation에 매우 비효율적 입니다.
arithmetic operations 100배 감소 하더라도, lookup와  cache miss는 매우 우세하여, sparse matrics로 전환하면 좋은 
성과를 얻기는 힘들어집니다.
기본적인 CPU또는 GPU Hardware 의 아주 작은 detatil을 활용하여서 매우 빠른 dense matrix multiplication을 허용하고
개선된 라이브러를 활용함으로써 계속에서 격차가 벌어지게 됩니다.
또한 non-uniform sparse model은 정교한 engineering괴 computing infrastrucutre가 필요합니다.
대부분의 vision oriented machine learning systems은 단지 convolution layer를 이용하는 것 만으로 spatial space을 
활용합니다.
Convolution은 이전 layer의 patches의 dense connection으로 구성 됩니다.
ConvNet은 보통 대칭성를 깨고, train을 개선하기 위해서 기능 차원에서 무작위 및 spare 연결 table을 이용 하였지만,
optimize parallel computing를 개선하기 위해서 fully connected로 변경 되었습니다.
structure의 uniformity와 많은 수의 filter, 더 큰 batch크기를 이용하여서 효율적으로 dense computation을 이용 할 수 있습니다.

 

Spares matrix 연산을 다루는 문제는 Sparse matrix를 클러스터링 하여 Dense한 Submatrix를 만드는 것을 제한 했고 
괜찮다고 하였습니다.
GoogleNet의 저자들은 Inception 구조는 Sparse구조를 test하기 위해 시작했는데, hyperparameter를 조정하고 한 결과
꽤 좋은 성과가 나왔습니다.

4 Architectural Details

 

inception module

Inception architecture의 주요 idea는 convolution vision network의 optimal local sparse structure를 찾는 쉽게 구할 수 
있는 dense가 높은 components로 근사하고 커버가 가능한 방법을 찾는것을 base로 합니다.
translation invariance를 가정 한 뒤에 network의 convolution building block을 구축 하다는 것을 의미합니다.
여기서 필요 한 것은 optimal local construction을 찾아서 spatially으로 반복 하는 것 입니다.
Arora는 마지막 계층에서 correlation 를 분석하여 correlation 가 높은 단위 group으로 cluster를해야 하는 layer-by-layer 를 제안 합니다. .. 주저리 주저리 말이 많은데 별로 안 중요한거 같네요.

이러한 inception module은 서로 stacked되는데, output의 correlation staristics는 달라질 수 밖에 없습니다.
즉 이러한 higher abstraction의 features이 higher layer의 captured됨에 따라서 spatial concentration이 감소 할 것으로
예상이 되어 3x3 및 5x5 convolution의 비율이 높아져야 합니다.

이러한 형태의 module은 큰 문제가 있는데, filter수가 많은 convolution layer 위에서 5x5 convolution layer을 사용하면
엄청나게 계산량이 많아 집니다. 이 문제는 pooling unit이 mix에 추가 되면 더욱더 심해집니다.
output fliter의 수는 previous stage의  filter수와 같습니다.
pooling layer의 output과 convolution layer의 output이 병합하면 stage 간 output의 수가 매우 증가합니다.
이러한 구조는 계산량이 폭발하게 됩니다.

이는 두번째 아이디어로 이어집니다.
즉 계산 요구사항이 지나치게 증가 하는 것을 막기 위해서 dimension reductions and projection을 적용합니다.
이는 embeddings의 성공에 기반하며, 저차원 embedding에도 상대적으로 큰 image patch에 대한 많은 정보가 포함
가능합니다. 그러나 embedding은 information 밀도가 높고 압축된 것은 모델링하기 어렵습니다.
그러므로 1x1 convolution은 계산량이 많은 3x3 , 5x5 convolution 을 계산하기 위해서 사용합니다.
이는 reductions효과 뿐만 아니라 Rectified linear activation의 사용을 포함하므로 dual-purpose입니다.
최종 결과는 b입니다.

일반적으로 inception network는 위와 같은 module들이 stack이 된 형태이며, grid resolution을 줄이기 위해서 stride가
2인 max pooling layer가 가끔 존재합니다.
train 중에 메모리 효율성으로 인해, 낮은 layer들은 기존의 convolution 벙식을 유지, 높은 layer들은 inception moduel을 사용 하였습니다.
이 디자인은 실질적으로 유용한 측명이 있는데 다양한 시각정보를 다양한 규모로 처리 한 뒤에 통합하여야 한다는 직관
과 일치합니다.
이 디자인은 계산량이 상당히 조절되어 어려움 없이 width와 depth 를 늘릴 수 있습니다.
inception을 활용하는 다른 방안은 안좋지만 계산적으로 더 저렴한 것을 만드는 것 입니다.

5 GoogLeNet

이 사람들은 ILSVRC14 대회에서 GoogLeNet이라는 팀 이름을 선택, 이것은 LeNet5 네트워크를 개척한 LeKun에게 경의
를 표하는 것 이라고 하네요. 앙상블 하여서 제출 하였습니다.
inception modules 내부를 포함한 모든 Convolution layer은 ReLU를 사용합니다.
Network의 receptive field는 224x224로 RGB channel의 평균으로 subtraction합니다.
3x3 reduce와 5x5 reduce는 3x3 및 5x5 convolution 이전에 사용 된 reduction layer의 filter 수를 나타냅니다.
maxpooling 후 projection layer에서 1x1 filter 수를 볼 수 있습니다.
layer를 변경된 rectified linear activation도 사용 합니다.

network는 계산의 효율성, 그리고 실용성을 염두하고 설계 하였으며, 메모리 공간의 적은 계산 자원을 이용하여 
inference가 되도록 하였습니다.
parameter거 있는 layer만 셀 경우 depth는 22, pooling까지 세면 27개 입니다.
network에 사용되는 전체 layer는 100개 입니다.

network가 depth가 깊어지면 gradient를 효과적으로 모든 layer에 전파 할 수 있는 능력이 중요합니다.
이것은 중간 layer에 보조 분류기를 추가 하여, 하위 단계에서 gradient signal를 증가시키며, 추가적인 regularzation을
증가 시킵니다. 
inference시간에는 보조 network 없어집니다.

보조 분류기는 다음과 같습니다.
5x5 filter 크기에 stride 3인 average pooling layer로 , 출력은 4x4x512 입니다. (4a)의 경우, (4d)의 경우 4x4x528입니다.
dimension reduction 및 ReLU를 위한 128 개의 1x1 convolution filter
1024개의 unit과 ReLU 로 연결된 FC layer.
dropout layer, 70%
classifier은 softmas 입니다.(1000개의 class inference시간에는 사라짐)

Conclusions

Inception 구조는 Spares structure을 Dense Structure로 근사 성능을 개선.

기존에 cs231n으로 이미 본 model이였는데, 대충 몇개 이해안되는 부분이 있었지만 , 1x1 conv, 보조 분류기를
이용하여 계산량을 낮추고, graident 가 사라지는 현상을 방지하여 deep 하고 wide한 모델을 만든거 같음.
아이디어가 매우좋다.
논문보면서 직감대로 해석한거라 틀린부분도 있습니다.

+ Recent posts