안녕하세요. 오늘은 인공지능에 한획을 그었다는 'Deep Residual Learning for Image Recognition(ResNet)'에 관한 논문을 리뷰해보고자 합니다. 

이번 논문은 읽는데에만 1주 정도 걸렸고 정리하는 과정도 상당히 오래걸렸습니다.

잔차 연결이라는 아이디어와 세부 내용들이 쉽게 이해가 되지는 않더라구요. 

그래도 자세하게 설명도 잘되어있고, 글이 잘 쓰여져 있어서 몰입감 있게 읽으면서 공부할 수 있었습니다.


0. Abstract

더욱 깊어진 신경망은 학습하기 어려워졌습니다. 이 논문을 통해 residual learning framework가 네트워크의 학습을 보다 쉽게 할 수 있음을 보이고자 합니다.

 

ImageNet 데이터 셋을 기준으로 측정하였을 때, 152 layer에 이르는 depth를 가진 residual network가 VGGNet보다 8배 이상 깊지만 여전히 적은 복잡도를 가지고 있다는 것을 확인할 수 있었습니다. 이러한 네트워크의 앙상블(Ensemble)을 통해 ImageNet 테스트 셋에 대하여, 3.57%의 error를 기록하였고 ILSVRC-2015에서 우승을 차지하였습니다.


 

1. Introduction

심층 CNN은 이미지 classification에 대하여 엄청난 영감을 주었습니다. 심층 네트워크의 depth를 통해 feature의 "level"을 향상시킬 수 있으며, depth를 기반으로 한 많은 시도들이 이루어지고 있습니다.

 

depth의 중요성이 대두되고 있는 와중에 한가지 의문이 떠올랐습니다. '레이어를 쌓는 것 만큼 레이어가 쌓인 네트워크를 학습시키는 것이 쉬울까?' 라는 의문이었습니다. 첫번째로, gradient vanishing(기울기 소실)과 gradient exploding(기울기 폭발)의 문제가 있습니다. 다만, 이 문제는 normalized initialization과 normalization layer를 통해 다뤄왔습니다.  어느정도 해결을 할 수 있다는 것이죠. 

 

다만, 더 깊은 네트워크가 converging(수렴)하기 시작할 때, degradation 문제가 발생해 왔습니다. 네트워크의 depth가 깊어질 수록, accuracy는 더 이상의 진전이 없었고,  빠르게 저하되기 시작했습니다. 다양한 연구로부터 report된 내용을 검토하고 철저히 실험을 통해 검증을 거친 결과, 기대와는 다르게 overfitting으로 부터 야기된 문제가 아니라 네트워크가 깊어지면서 발생하는 문제라는 것을 알게 되었습니다. 

 

이렇게 발생한 degradation problem은 모든 시스템이 쉽게 optimize 할 수 있는 것은 아니라는 것을 시사합니다. 따라서, 이번 논문에서는 degradation problem을 deep residual learning framework를 통해 다뤄보고자 합니다. 단지 몇개만의 레이어들이 바람직한 underlying mapping 되기를 기대하는 대신에, 이러한 layer들을 residual mapping(잔차 연결)을 하여 문제를 해결해보고자 합니다. underlying mapping을 $H(x)$라고 하였을 때, stacked linear layer가 또 다른 mapping인 $F(x) ≒ H(x) - x$를 학습하도록 하는 것입니다. 즉, original-mapping은 $F(x)+x$로 재구성 됩니다.

 

또한, original mapping 보다 residual mapping이 더 optimize 하기 쉽다고 가정하였습니다. 극단적으로, identity mapping이 optimal 하다면, nonlinear layer stack을 통한 identity mapping을 학습시키는 것보다 잔차를 0으로 수렴시키는 것이 쉬울 것입니다. 

 

$F(x) + x$는 신경망의 shortcut connection을 통해 구현 될 수 있습니다(Fig.2). ResNet에서 shortcut connection은 identity mapping을 수행하고, 이 output은 stacked layer의 output으로 더해집니다.(입력 x가 layer를 통과하여 나온 결과물인 F(x)에 입력 값 x가 더해집니다.) Identity shortcut connection은 추가적인 파라미터나 계산 복잡도에 영향을 주지 않습니다. 또한, 전체적인 네트워크는 여전이 SGD를 통한 역전파 과정을 통하여 end-to-end로 학습되며, common library를 통해 구현됩니다.

 

Degradation problem을 확인하고 residual connection을 평가하기 위해 ImageNet에서 실험을 시행했습니다. 실험을 통해 두가지 사항을 알 수 있었습니다.

  • 극단적으로 깊은 residual network가 "plain" network에 비해 optimize가 쉽다는 사실
  • deep residual network가 이전 네트워크 보다 상당히 나은 결과를 도출하면서 쉽게 정확도를 얻는다는 점입니다.

 

ImageNet classification 데이터 셋에 대하여, deep residual network를 통해 좋은 결과를 얻을 수 있었습니다. 152 layer의 residual network는 VGGNet보다도 덜 복잡할 뿐만 아니라, 지금까지 ImageNet에 제출되었던 모델 중에 가장 깊은 모델입니다.

 


2. Related Work

Residual Representations.

요약하자면, residual vector encoding이 original vector encoding보다 효율적이며 이러한 reformulation/preconditioning이 opmization을 단순화 한다는 것입니다.

 

Shortcut Connections.

요약하자면, gradient vanishing/exploding등 다양한 문제를 해결하기 위한 방법, ResNet과 유사한 방법으로 shortcut을 구현한 연구 등이 있지만 단점들이 있었습니다.  특히, shortcut을 구현한 모델들의 경우 parameter가 증가되고 shortcut gate가 "closed" 될 수 있다는 단점이 있으며 depth의 증가를 통해 정확도를 확실히 증가시킬 수 있다는 것이 증명되지 않았습니다.

 

ResNet은 정확도를 증가시킬 수 있을 뿐만 아니라 parameter-free 하면서 closed 되지 않는 모델이라는 내용이 담겨져 있습니다.

 


3. Deep Residual Learning

 

3.1. Residual Learning

H(x)를 몇개의 stacked layer로 부터 학습되어야할 underlying mapping, x를 이러한 레이어들의 input 이라고 하겠습니다. 다수의 nonlinear layer들이 복잡한 함수로 근사될 수 있다고 가정하였을 때, 이는 residual function인 $H(x) - x$로도 충분히 근사 가능하다는 것을 의미합니다.  이를 바탕으로 stacked layer가 H(x)가 아닌 $F(x) ≒ H(x) - x$ 로 근사되도록 할 것 입니다.  따라서 original function은 $F(x) + x$가 될 것입니다. 

 

실제 케이스에서는, identity mapping이 optimal 하지 않더라도, 이러한 reformulation이 문제를 precondition하는데 도움이 될 지도 모릅니다. 만약, optimal function이 zero mapping보다 identity mapping에 가깝다면, solver가 새로운 함수를 학습하는 것 보다 identity mapping에 관하여 작은 변화를 찾는 것이 더 쉬울 것입니다. 우리는 실험(Fig.7)을 통하여 학습된 residual function이 작은 response를 가진다는 것을 보여줍니다. 이러한 사실은 identity mapping이 합리적인 preconditioning을 제공해준다는 것을 의미합니다.

 

 

*Universal Approximation Theorem.

비선형성을 가진 레이어가 하나의 은닉층으로 있다면, 어떠한 함수로도 충분히 근사 가능하다는 것을 증명한 이론입니다.

이 이론을 근거하여, nonlinear layer들이 $H(x) - x$로도 충분히 근사 가능하다는 것을 알 수 있습니다.

 

 

 

3.2. Indentity Mapping by Shortcuts

stacked layer마다 residual learning을 적용하였습니다. Fig.2에서 보인 형태와 동일하며, 이 논문에서는 building block을 다음과 같이 정의할 것입니다.  $$y = f(x,\{w_i\})+x \qquad Eqn(1).$$

 

Eqn.(1)에서 shortcut connection은 추가적인 파라미터나 계산 복잡도에 영향을 주지 않습니다. 이것은 매우 실용적이기에 매력적일 뿐만 아니라 plain nework와 residual network 사이의 비교에서도 중요합니다. 이러한 장점 덕분에 동일한 수의 파라미터, depth, width, computational cost를 갖는 plain network 와 residual network를 비교할 수 있는 것이죠.

 

만약 input/output channel이 변화할 경우, $w_s$ linear projection을 통해 shortcut connection의 차원을 맞출 수 있습니다. 

$$y = F(x,\{w_i\})+W_s*x\qquad Eqn(2).$$ 

다만, identity mapping이 degradation problem을 다루기 충분할 뿐만 아니라 효율적이라는 것을 알 수 있었기에, $w_s$는 차원을 맞추는데에만 사용합니다.

 

더 많은 레이어를 쌓을 수 있지만, 이번 논문에서는 function $F$는 2개 또는 3개의 레이어로 구성됩니다(Fig.5). 다만, $F$가 단일 레이어일 경우 선형 레이어와 유사하여 이점이 없기 때문에 사용하지 않습니다. 또한, 위 표기들은 FC layer에 대한 것이지만 convolutional layer에도 적용가능합니다. 

 

3.3 Network Architectures

 

다양한 plain/residual net을 실험했지만 동일한 현상을 관찰할 수 있었습니다. 사례를 제공하기 위해, ImageNet에 대한 두가지 모델을 소개하고자 합니다.

 

Plain Network.

ResNet의 기본 모델(Fig.3 middle)은 VGG net(Fig3. left)를 모티브로 삼았습니다. convolution filter는 거의 대부분(1개를 제외하고) 3x3 filter로 구성하였으며 두가지 간단한 규칙을 따랐습니다.

  • output의 feature map size를 동일하게 맞추기 위하여 필터 수를 동일하게 설정하였습니다.
  • feature map size가 반감될 경우, 레이어 별 time complexity를 보존하기 위해 필터의 갯수를 두배로 설정하였습니다.

Stride = 2인 convolutional layer를 통해 downsampling을 수행하였으며, 네트워크의 끝에는 global average pooling layer와 softmax가 적용된 1000-way의 FC layer로 구성되어 있습니다. 총 weight는 34 입니다.

 

VGGNet에 비해 적은 필터 수와 낮은 complexity를 갖습니다.

 

 

Residual Network.

Plain network를 기반으로, shortcut connection(Fig. 3 right)를 삽입하였습니다. Input - output이 동일한 차원을 가질 경우, identity shortcut(Eqn.(1))을 직접적으로 연결할 수 있습니다. 차원이 증가될 경우(Fig.3 dotted line shortcut), 두가지 옵션을 고려할 수 있습니다.

  • 증가된 차원에 맞춰 zero-padding을 이용하여 shortcut이 identity mapping을 수행하는 것
  • Eqn.(2)의 projection shortcut을 이용하여 차원을 맞추는 것

 

3.4 Implementation

 ImageNet에 대한 implementation는 AlexNet과 VGGNet을 follow 합니다. 이미지는 scale augmentation을 위해 [256,480]에서 무작위로 샘플링된 shorter-side로 resize 됩니다. $224*224$crop은 평균 차감(mean substraction)이 적용된 이미지 또는 그 이미지의 horizontal filp된 이미지로 부터 샘플링 됩니다. 레이어 구성에 대한 세부 설명과 하이퍼 파라미터는 다음과 같습니다.

  • convolution 연산 이후, 활성화 함수를 적용하기 전에 Batch Normalization을 적용합니다.
  • He initialization을 통해 weight를 initialize 합니다.
  • Batch size = 256, optimizer는 SGD를 사용합니다.
  • learning rate = 0.1 이며, error 감소율이 정체될 때마다 1/10씩 줄입니다.
  • momentum = 0.9 , weight decay = 0.0001이며 dropout은 적용하지 않습니다.

AlexNet의 10-crop testing을 통해 test를 진행하였습니다. 최상의 결과를 위해 He initialize와 VGGNet에서 사용한 fully-convolutional form을 채택하였으며, multiple scale에서 score을 평균화 하였습니다.


4.Experiments

 

4.1. ImageNet Classification

ImageNet 2012 classification dataset을 기반으로 top-1/top-5를 평가하였습니다.

  • 1.28M training images
  • 50K validation images
  • 100K test images

Plain Networks.

18-layer와 34-layer의 plain network를  측정할 것이며, Table 1에서 구체적인 Architecture을 볼 수 있습니다. Table 2를 보면, 34-layer plain network가 18-layer plain network보다 높은 validation error를 보인다는 것을 알 수 있습니다. 이러한 결과(Fig. 4 left)에 대한 이유를 밝히기 위해 training/validation error를 비교하였으며, degradation problem이 발생하는 것을 알 수 있었습니다. 

 

이러한 optimization difficulty가 gradients vanishing 문제로부터 유발된 것은 아닙니다. 그 근거는 다음과 같습니다.

  • 설계된 plain network에는 BN이 적용되었기 때문에 순전파 signal이 non-zero variance(분산)를 가지는 것을 보장합니다.
  • 역전파 과정 또한, BN으로 인하여 healthy norm을 보이는 것을 확인할 수 있었습니다. 

즉, gradient vanishing은 발생하지 않았음을 알 수 있었습니다.

 

Residual Network.

다음으로, 18-layer 와 34-layer residual network(ResNet)을 측정하였습니다. 기본 구조는 plain network와 동일합니다.  option A) zero-padding을 통하여 identity mapping을 수행하는 방식을 비교하였습니다(Table 2 and Fig. 4 right)

 

Table2와 Fig 4.를 토대로 주목해야할 3가지 사실이 있습니다.

  • 첫번째로, 34-layer ResNet이 18-layer ResNet보다 약 2.8% 낮은 error를 보였습니다. 더욱 중요한 것은, 34-layer ResNet이 더 낮은 training error와 향상된 validation 성능을 보였습니다. 이러한 결과는 ResNet이 degradation problem을 잘 해결할 수 있다는 점과 증가된 depth로 부터 정확도를 얻을 수 있다는 것을 시사합니다. 

 

  • 두번째로, plain network와 비교했을 때, 34-layer ResNet이 top-1 error를 3.5% 줄였다는 점 입니다. 이것을 통해 extremely deep system에서 residual 학습의 효과를 증명할 수 있습니다.

 

  • 마지막으로, 18-layer의 plain network와 ResNet이 비슷한 정확도를 보이지만, ResNet이 수렴하는 속도가 더 빠르다는 점입니다. 이러한 사실을 통해 ResNet이 초기 단계에서 더 빠른 convergence를 제공해줌으로써 optimization을 쉽게 한다는 사실을 알 수 있습니다.

Identity vs. Projection Shortcuts.

지금까지 parameter-free한 점과 identity shortcut이 training에 도움이 된다는 사실을 알 수 있었습니다. 다음으로는 projection shortcut(Eqn.(2))에 대해서 조사하려고 합니다. 총 3가지 option을 비교하고자 합니다.

  • A) 증가된 차원에 대하여 zero-padding을 사용하며, 모든 shortcut이 parameter free한 옵션(Table 2와 Fig. 4 right와 동일)
  • B) 증가된 차원에 대하여 projection shortcut을 사용하는 option
  • C) 모든 shortcut이 projection shortcut인 option

Table 3를 보면 모든 옵션이 plain network보다 좋은 결과를 보임을 알 수 있습니다. A/B/C 사이의 작은 차이는 projection shortcut이 degradation problem을 해결하기 위해서 필수적인 요소가 아님을 시사합니다. 따라서, 이번 논문에는 memory/time complexity와 모델 사이즈를 줄이기 위하여 option C는 사용하지 않을 것입니다. 

 

Deeper Bottleneck Architecture

ImageNet의 deeper network에 대해서 설명하도록 하겠습니다. training-time에 대한 우려 때문에, building block을 bottleneck design으로 변형하였습니다. 각각의 residual Function 는 3개의 레이어를 쌓았습니다. 3개의 layer는 1x1, 3x3, 그리고 1x1 convolution 레이어 이며, 1x1은 차원을 줄였다가 다시 늘리는 용도로 사용하며 3x3을 input/output 차원을 축소한 bottleneck으로써 둡니다.

Fig.5 는 비슷한 time complexity를 갖는 두 개의 residual Function 입니다.

 

만약 identity shortcut이 projection으로 대체된다면, time complexity와 모델 사이즈가 2배로 증가하게 됩니다. 따라서,Parameter-free identity shortcut은 bottleneck 구조에서 특히나 중요합니다. 

 

50-layer ResNet: 34-layer ResNet의각각의 2-layer block을 3-layer bottleneck block으로 대체한 모델로, 증가된 차원에 대하여 option B를 적용하였습니다(Table 1). 이 모델은 3.8 billion FLOPs를 갖습니다.

 

101-layer and 152-layer ResNets: 3-layer block을 추가로 사용하여 각 ResNet을 구성하였습니다(Table 1). depth가 상당히 증가하였지만, 152-layer ResNet(11.3 billion FLOPs)는 여전히 VGG-16 / VGG - 19(15.3 / 19.6 billion FLOPs)보다 현저히 낮은 complexity를 갖습니다.

 

50/101/152-layer ResNet은 34-layer ResNet보다 더욱 정확합니다. degradation problem이 발견되지 않았으며, depth 증가로 부터 정확도를 얻을 수 있었습니다(Table 3 and 4).

 

Comparison with State-of-the-art Methods.

Table 4에서 이전의 best single-model 결과들과 비교한 결과를 볼 수 있습니다. baseline 34-layer ResNet은 매우 competitive한 accuracy를 얻었으며, 152-layer ResNet은 top-5 validation error 4.49%를 기록하였습니다. 이전 ensemble resulut을 모두 상회하는 결과이며, 6개의 서로 다른 depth의 모델을 ensemble 하였을 때 3.57% top-5 error를 기록하였고 ILSVRC-2015에서 우승할 수 있었습니다.

 


생각정리

*ResNet이 gradient vanishing에 매우 효과적인 이유에 대한 생각.

Gradient vanishing이란 역전파(Backpropagation) 과정에서 Gradient가 소실 되는 것을 말합니다. 가장 큰 원인은 활성화 함수(Activation Function)의 기울기 입니다. 함수를 미분했을 때의 값이 0에 가까워지는 것이 문제가 되는 것이죠.

 

근데 ResNet는 Residual Connection(잔차 연결)을 통해 $F(x) + x$를 보장하여 줍니다.

즉, 미분을 하게 되면 $F'(x) + 1$로 기울기 1을 보장해주는 것이죠. 

 

논문에서 언급했듯, 레이어 별로 Batch Normalization을 적용함과 동시에 잔차연결 해주어 레이어를 많이 쌓아도 gradient vanishing이 발생하지 않는 것 같습니다.

 

*ResNet에 대해서 놀라웠던 점

VGG도 마찬가지로 depth를 늘리는 방법을 고민했던 것을 보면, 당시에는 depth를 늘릴 획기적인 방법이 없었던 것 같습니다. 

근데 잔차연결을 통해 gradient vainishing을 방지함과 동시에 깊은 레이어의 학습정체현상을 해결하여 얕은 레이어를 깊게 쌓을 수 있는 방법을 제안했다는 점이 정말 대단했습니다. 

(물론, 정확도 및 연산량도 압도적으로 좋구요.)

 


Reference

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

https://wikidocs.net/137252

https://cumulu-s.tistory.com/33

https://89douner.tistory.com/64

https://ganghee-lee.tistory.com/41

 

안녕하세요. 오늘은 VGGNet에 관한 'Very Deep Convolutional Networks for Large-Scale Image Recognition(2014)'에 대해서 정리를 해보았습니다. 지난번 Inception에 관하여 정리를 하고 난 후, ILSVRC에서 우승한 모델인 Inception 보다 2등을 차지한 VGGNet이 더 많이 활용되었다해서 호기심이 들어 논문을 찾아보게 되었습니다.


0. Abstract

우리는 convolution network의 depth가 large-scale 이미지 인식의 정확도에 어떠한 영향을 미치는지 조사하려 합니다. 핵심은 3x3 convolution fliter로 구성된 16-19 weight layer를 기반으로 depth를 늘린 네트워크를 철처히 평가하는 것입니다. 이러한 발견은 localisation과 classfication track에서 각각 1등과 2등을 차지한 ImageNet Challenge 2014 제출물을 기반으로 하였습니다.


1. Introduction

Convolutional networks(ConvNets)는 large-scale image와 video recognition에서 큰 성공을 누려왔습니다. 특히, High-Dimensional shallow feature에서 deep ConvNet에 이르기까지 deep visual recognition architecture의 발전에 중요한 역할을 수행하였습니다.

 

AlexNet과 같이 ConvNet Architecture design에 대해서 많은 연구가 이루어져왔지만 이 논문에서는 지금까지 다루지 않았던 핵심 측면인 depth에 대해서 다루고자 합니다. Architecture의 다른 파라미터를 수정하고, 매우 작은 3x3 convolution filter를 모든 레이어에 적용하여 네트워크 깊이를 점진적으로 증가시켜보았습니다. 이러한 시도 결과, 정확도가 매우 향상된 ConvNet architecture를 얻을 수 있었습니다.


2. ConvNet Configurations

증가된 ConvNet depth로부터의 성능 발전을 측정하기 위해, 모든 ConvNet layer의 파라미터를 동일하게 설정하였습니다.

 

2.1. Architecture

ConvNet의 입력 값은 고정된 사이즈의 224 x 224 RGB 크기 입니다. preprocessing(전처리)단계에서는 training set의 각 픽셀에서 RGB의 평균 값을 빼주는 작업을 해주었습니다. 이미지는 매우 작은 3x3 filter가 적용된 conv layer의 stack을 통과하게 되며, 추가적으로 1x1 convolution filter를 사용하였습니다. 3x3 filter를 사용한 이유는 상/하/좌/우/중심을 파악하기 위핸 최소한의 크기가 3x3 이기 때문이며, 1x1은 비선형성을 더해주기 위함이지만 input channel의 선형 변환으로 보였다고 합니다. stride는 1이며 padding size 또한  convolution 연산 이후 공간적 정보가 보존되도록 하기 위해 1로 설정하였습니다. 추가적으로, Stride가 2인 2x2 size의 max-pooling layer가 5개 적용되었습니다. 

 

Convolution layer stack은 두 개의 4096 채널의 FC layer와 1개의 1000 채널의 FC layer로 구성되었으며, 마지막 레이어는 soft-max layer 입니다. FC layer의 configuration은 모든 네트워크에서 동일합니다.

 

모든 Hidden layer에는 활성화 함수로 ReLU를 사용했으며, LRN normalisation은 메모리 소비량과 연산량만 증가시킬 뿐 ILSVRC 데이터 셋에 대한 성능은 증가시키지 못하기 때문에 사용하지 않았습니다(Section 4.1에서 추가적인 내용 서술).

 

*3x3 filter가 상하좌우 + 중심의 notion을 파악하기 위한 최소 사이즈라고 논문에 서술되어 있는데 이에 대하여 이유가 궁금하지만 답을 찾지 못한 상태입니다. 향후 이유를 알게 된다면 추가적인 업데이트를 하도록 하겠습니다.

 

2.2 Configuration

ConvNet Configuraion.

각 ConvNet configuration은 Table 1의 하나의 열로 되어있습니다(A-E). 모든 configuration은 2.1.의 설명과 동일하며, 오직 depth만 11 weight layer(8 conv.와 3 FC layer)에서 19 weight layer(16 conv.와 3 FC layer)로 다릅니다. conv. layer의 width(채널의 갯수)는 오히려 작으며, 각 max-pooling layer에서 64개로 시작하여 최종적으로 512개 까지 2배씩 늘어나게 됩니다. 

 

Table 2에는 각 configuration의 파라미터 갯수를 기록해두었습니다. 큰 depth에도 불구하고, 더 큰 conv. layer width와 receptive fields로 구성된 shallow net에 비하여 더 적은 파라미터 갯 수를 가지고 있습니다. 

 

*학습파라미터 수가 다른 네트워크에 비해 적으면서도 낮은 에러율을 보였다는 것은 그만큼 VGGNet의 학습 효율성이 높다는 의미도 담고 있는 것 같습니다. 

 

 

2.3. Discussion

VGGNet의 configuration은 ILSVRC-2012와 ILSVRC-2013에서 최상위 성능을 보여준 모델들과는 꽤 다릅니다.  11x11 필터를 쓴 AlexNet 또는 7x7 필터를 쓴 ZFNet 과 달리 상대적으로 큰 receptive fields를 첫번째 conv. layer 에 사용하지 않고 전체 네트워크에 아주 직은 3x3 receptive fields를 사용하였습니다. 그럼 7x7을 사용하지 않고 3x3 conv. layer를 사용한 이유는 무엇일까요?

첫번째로, 명확한 의사결정을 위해 더 많은 비선형성을 부여하기 위함이고 두번째로 파라피터수를 줄이기 위함입니다.

 

채널 갯수를 C라고 하였을 때, 3개의 3x3 filter를 사용하는 것은 총 3 * 3^2*C^2개의 학습 파라미터 수를 가집니다. 반면 1개의 7x7 필터를 사용할 경유 7^2*C^2개의 학습 파라미터수를 가지게 되죠. 즉 전체적으로 보았을 때, 약 81% 적은 파라미터를 사용하게 됩니다.

 

또한 1x1 conv. layer(config C, Table 1)를 사용하였는데 이것은 conv. layer의 receptive fields에 영향을 주지 않고 의사결정 함수의 비선형성을 증가시키기 위함입니다. 


3. Classification Framework

이전 섹션에서는 VGGNet의 configuration의 detail에 대해서 설명하였습니다. 이번 섹션에서는 classification ConvNet의 학습과 평가에 대해 서술하고자 합니다.

 

3.1. Training

ConvNet 학습 과정은 전반적으로 AlexNet과 유사합니다(향후 설명하겠지만, Multi-scale 학습 이미지들로 부터 입력 값을 샘플링하는 법은 다른 방식을 사용하였습니다). 역전파를 기반으로한 mini-batch gradient descent(경사하강법)을 multinominal logistic regression objective 에 적용하여 학습을 진행하였습니다. 하이퍼 파라미터 세팅은 다음과 같습니다.

  • batch size = 256
  • momentum = 0.9(optimizer)
  • L2 = 5*10^-4 & dropout(p = 0.5)(regularization)
  • learning rate = 10^-2
  • validation set accuracy가 증가하지 않을 경우 learning rate 10배 감소(scheduler)

최종적으로, learning rate는 3번 감소하였으며 학습은 370K iteration(74 epoch)를 거친 후 종료 되었습니다.

AlexNet에 비해 더 많은 수의 파라미터와 깊이에도 불구하고 converge 하기 위해 더 적은 epoch가 필요한 이유는 다음 두가지라고 추측합니다.

  • 더욱 깊고, 작은 conv. filter 사이즈로 인한 Implicit regularisation
  • 특정 레이어의 pre-initialisation

특히나, 잘못된 initialisation은 심층 네트워크의 기울기의 불안정성을 야기하여 학습을 방해할 수 있기에 initialisation은 매우 중요합니다. 이러한 문제점을 예방하기 위해 deeper architecture을 학습할 때 처음 4개의 conv. layer와 마지막 3개의 FC layer에 대한 initialise를 해주었습니다. 

 

또한, 고정된 사이즈의 224x224 ConvNet 입력 값을 얻기 위해, 학습 데이터를 rescaling하여 crop 하였습니다.

 

*Training image size

Training scale S를 설정하기 위해 두가지 접근법을 고려해보았습니다. 

 

첫번째로, single-scale training에 일치하도록, S를 고정하는 것입니다. 실험 내에서,  S를 256과 384로 고정하여 학습된 모델을 평가해보았습니다. 주어진 ConvNet configuration에서, S 를 256으로 설정하여 네트워크를 학습시켰습니다. 그리고 S = 384인 네트워크의 학습 속도를 증가시키기 위해, S = 256으로 pre-trained 된 데이터로 weight를 초기화 하고 10^-3인 더 작은 초기 learning rate를 사용하였습니다.

 

두번째 접근법은 multi-scale training입니다. [min S  = 256, max S = 512]에 해당되는 범주 내에서 랜덤한 S 값을 통해 학습을 시키는 방법으로, 이미지 속 object들이 각기 다른 사이즈로 있을 수 있기 때문에 충분히 고려해볼만한 방법이라고 생각하였습니다. 또한 속도상의 이유로 multi-scale 모델을 S = 384로 pre-trained된 single-scale model을 fine-tuning하여 학습 시켰습니다.

 

3.2. Testing

주어진 학습된 ConvNet 과 입력 이미지에 대하여 다음과 같은 과정으로 분류되었습니다. 

첫번째로, pre-defined test image를 rescale 해줍니다. 앞선 training 과정과 유사하게 rescale된 test image를 네트워크에 적용합니다. 그런 다음, FC layer 대신 convolutional layer들을 적용하여 검증을 진행합니다. 첫번째 FC layer를 7x7 conv. layer로 변경하고, 마지막 두개의 FC layer는 1x1 conv. layer로 변경합니다. 결과적으로, 전체 이미지(uncropped)에 fully-convolutional layer가 적용됩니다. 최종적으로, 이미지에 대한 고정된 class score vector를 획득하기 위해 class score map에 sum-pooled를 적용합니다. 뿐만 아니라 horizontal flipping을 통해 test set을 augument하고,  softmax가 적용된 original 이미지와 flipped image의 평균을 구하여 최종 score를 얻습니다.

 

3.3 Implementation Details

C++ Caffe toolbox를 사용하였으며, training과 evaluation에 GPU를 사용하기 위해 변형하여 사용하였습니다. 트레이닝 이미지를 각 batch로 분할하여 GPU 상에서 병렬적으로 처리하였으며, 연산 후 전체 이미지에 대한 gradient를 얻기 위해 평균 값을 구하였습니다. Gradient 계산은 모든 GPU상에서 동시에 이루어져 단일 GPU로 연산했을 때와 같은 결과를 얻습니다. 또한, 단일 GPU보다 4-GPU를 통한 연산이 약 3.75배 빠르다는 것을 알 수 있었습니다.


4. Classification Experiments

*Dataset

이번 섹션에서는 ILSVRC-2012 데이터셋을 기반으로 VGGNet의 image classification 결과에 대해 서술하고자 합니다. 

  • 3 set으로 분리되는 1000class의 이미지
  • 1.3M개 image for training, 50K image for validation, 100K images for testing

classification performance는 top-1 & top-5 error를 기반으로 측정하였습니다.

( top-1 error는 multi-class classification에서 잘못 분류된 이미지의 비율이고 top-5 error는 ILSVRC에서 사용된 주요 평가 기준으로 예측된 범주 밖에 있는 이미지의 비율입니다.)

 

4.1. Single Scale Evaluation

 

Section 2.2에서 서술하였던 것과 동일한 configuration을 기반으로, 각 ConvNet 모델의 성능을 측정하였습니다. 테스트 이미지 사이즈 Q는 고정된 S와 [min S, max S] 범주 내의 0.5 * (min S + max S) 값과 동일합니다. 결과는 위 Table 3에 나와있습니다.

 

첫번째로, LRN을 사용하는 것은(A-LRN 네트워크)는 모델 A의 성능을 증진시킬 수 없음을 알 수 있습니다. 따라서, deeper architectures(B-E)에 normalisation에 적용하지 않았습니다.

 

두번째로, 모델 A의 11 layer부터 모델 E의 19 레이어까지 보면 증가된 ConvNet depth는 classification error를 감소시킨다는 것을 알 수 있었습니다. 특히, 같은 depth에도 불구하고 3x3 conv. layer로만 구성된 configuration D가 1x1 conv. layer 3개를 포함한 configuration C에 비해 좋은 성능을 보여주었습니다. 이는 추가적인 비선형성이 도움이 되지만(C의 성능 > B의 성능), receptive field에서 conv. filter를 통해 공간적 context를 잡아내는 것 또한 중요하다는 것을 의미합니다. 또한, 19개의 layer에 도달한 모델이 가장 좋은 성능을 보였으며, B모델과 B모델의 3x3 conv. layer 한 쌍을 5x5 conv. layer로 대체한 모델을 비교하였을 때 3x3 conv. layer를 사용한 B 모델이 7% 정도 더 좋은 성능을 보였습니다. 

 

마지막으로, 고정된 S 사이즈(S = 256 , S = 384)를 사용하는 것 보다 scale jittering을 사용하는 것이 training에 있어 더 좋은 결과를 보여주었습니다. 

 

* 1x1 conv. layer를 사용하는 이유는 크게 3가지가 입니다.

1) 채널 수 감소   2) 채널 수 감소를 통한 연산량 감소 3) 비선형성의 증가

 

4.2. Multi-scale Evaluation

이번 섹션은, 테스트 이미지의 다양한 rescale 버전에 대해 서술하도록 하겠습니다. training과 test 사이의 큰 차이는 성능 하락에 영향을 줄 수 있다는 점을 고려하여, training 할 때와 유사하게 3개의 이미지 사이즈로 모델을 학습시켰습니다 ( Q = { S - 32, S, S + 32} ). 동시에, training 할 때 수행했던 scale jittering이 테스트 시에도 더 넓은 범위의 scale을 네트워크에 적용할 수 있도록 해주어서 [min S; max S] 범위의 고정되지 않은 S로 학습된 모델에 대하여 대하여 더 큰 범위인 Q = {min S, 0.5*( min S + max S), max S}의 범주로 측정하였습니다.

 

실험 결과는 Table4에 정리되어 있으며, test할 때에도 scale jittering이 더 좋은 성능을 보여준다는 것을 알 수 있습니다.

 

4.3. Multi-Crop Evaluation

Table5는 dense ConvNet evaluation과 multi-crop evaluation을 비교한 결과입니다. 이에 더불어, 두 가지 평가기법의 softmax output을 평균화하여 complementarity 또한 측정하였습니다. multiple crop을 사용한 것이 dense ConvNet보다 약간 더 좋은 성능을 보였으며, 두 가지 접근법이 상호보완적임을 확인할 수 있었습니다. 이러한 결과는 convolution 경계 조건의 다른 처리 방식으로 인한 것으로 보입니다.

 

4.4. ConvNet Fusion

앞선 섹션의 상호보완성에 대한 정보를 기반으로, 몇몇 모델의 output을 조합하여 보았습니다.

 

7개의 네트워크를 앙상블 한 결과 7.3%의 ILSVRC 테스트 에러를 기록하였습니다. 이후, 가정 성능이 잘 나온 두 개의 multi-scale model을 앙상블 하여 실험해본 결과 dense evaluation에서는 테스트 에러를 7.0% 까지,  dense와 multi-crop evaluation을 조합한 방식의 테스트 에러를 6.8% 까지 낮추었습니다. 참고로, 최고 성능의 단일 모델은 7.1% 에러를 기록한 모델 E(Table 5) 입니다.


5. Conclusion

우리는 큰 scale의 이미지 분류에 있어서 아주 깊은 convolution network(19 weight layer) 측정을 통해 depth가 classification accuracy에 효과적이라는 사실을 증명했습니다.


*생각 정리

- 상/하/좌/우/중심의 notion을 capture 하기 위한 최소 조건이 3x3 Size인 이유가 filter의 중심 칸을 기준으로 상/하/좌/우로 모든 칸이 존재하는 사이즈가 3x3이기 때문이지 않을까 라고 추측해봤습니다.

- LRN의 배제한 이유가 모델 A에 적용해봤을 때, LRN을 적용하지 않은 original 모델 A가 더 성능이 좋아서 라고 서술되어 있습니다.

모든 layer의 configuration을 동일하게 세팅했기에 제일 단순한 모델로의 결과로 일반화 시킬 수 있다고 생각하면서도 depth가 다른데 한 모델의 결과만으로 일반화를 해도 되는 것인지 의문이 들었습니다. 이 점은 아직 정확하게 몰라서 생길 수 있는 생각의 충돌이라는 생각이 들어서 좀 더 공부를 해보려고 합니다. 


역시 논문을 읽는 것은 아직까지는 버거운 과정이네요. 논문을 읽으며 이 논문은 어느 부분이 잘쓰였는지, 아쉬운 점이 뭔지 등을 파악해가며 읽을 수 있으면 참 좋을 것 같지만 아직까지는 실력이 모자른 것 같습니다. 그래도 이름으로만 들어봤던 모델들을 설계 이유부터 설계 과정, 근거 그리고 모델의 성능 등 자세히 공부해볼 수 있다는 점이 큰 장점 같습니다. 

 

아직 실력이 매우 미흡하여 글에 틀린 부분이나 잘못 정리한 부분, 오역 등이 있을 수 있습니다. 댓글을 통해서 피드백을 주시면 감사하겠습니다.

 

읽어주셔서 감사합니다.


Reference

https://arxiv.org/pdf/1409.1556v6.pdf

https://phil-baek.tistory.com/entry/1-Very-Deep-Convolutional-Networks-for-Large-Scale-Image-Recognition-VGGNet-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

https://ahnty0122.tistory.com/72

 

안녕하세요. 

'Going deeper with convolutions' 라는 논문을 읽고 내용을 한번 정리해보고자 글을 작성하게 되었습니다.


 

https://kmhana.tistory.com/3

 

딥러닝을 위한 논문 가이드

☆딥러닝 공부를 위해서 꼭 읽어야 할 논문(사이트)들의 리스트를 정리해보고자한다. 순수히 개인적인 의견으로, 사용자의 관점에서 평가했다. 실제 AI 프로젝트를 진행할 때 도움이 되었던 논

kmhana.tistory.com

딥러닝 논문에 대해서 정말 정리가 잘되어있어서 어떠한 논문으로 시작할지 고민하던 중 많은 도움을 얻었습니다.

혹시나 어떤 논문을 보아야할지 고민이 되신다면 해당 사이트에 들어가셔서 읽어보시면 큰 도움이 되실 것 같습니다.

 

많은 논문 중 해당 논문을 선택한 이유는 ILSVRC 2014 에서 우승한 모델이기도 하며, 구글넷의 시초가 되는 모델이어서 좀 더 자세히 알고 싶어 선택하게 되었습니다.

 


1. Introduction 

Introduction에는 GoogleNet이 나오게 된 배경과, 이미지 인식 및 물체 탐지에 대한 딥러닝 기술의 동향에 대해서 소개하고 있습니다.

 

딥러닝에 더불어 CNN 분야에서 엄청난 발전이 이루어졌습니다. 고무적인 것은 이러한 발전이 발전된 하드웨어, 데이터 셋의 증가, 커진 모델만의 결과가 아닌 새로운 아이디어와 알고리즘 그리고 향상된 네트워크 구조에 의한 발전이라는 것입니다. 구글넷은 2012년 ILSVRC에서 우승했던 모델 보다도, 12배 적은 파라미터를 사용하며 정확도 또한 높습니다. 또한, 물체 탐지 분야의 발전은 단순히 심층 네트워크의 효율성 또는 커진 모델에 의한 것이 아니라 심층 구조와 기존 컴퓨터 비전의 시너지로 부터 이뤄냈습니다.

 

또 다른 주목할만한 요인은 모바일와 임베디드 컴퓨팅 분야에서 알고리즘의 효율성이 대두되고 있다는 점입니다.

이에 모델은 추론시간 내에 15억번의 multiply-adds 연산을 넘지 않도록 설계되어 합리적인 cost로 실사용 되게끔 설계되었습니다.

 

논문에서는, Inception이라는 코드네임을 가진 컴퓨터 비전의 심층 신경망의 효율성에 초점을 맞출 것입니다.

 

*정말 놀란 점은, 파라미터 수를 12배 가량 줄였다는 것입니다.

12배 감소로 인하여, Overfitting의 문제와 Computational Cost를 과연 얼마나 개선할 수 있을지 기대가 되면서도 어떻게 파라미터수를 12배 가량 감소할 수 있었는지 궁금하였습니다. 새삼 구글은 정말 대단하다는 것을 느낄 수 있는 대목이었습니다.


 

2. Related Work

CNN은 Convolution layer에 1개 이상의 FC Layer가 따라오는 표준적인 구조를 가지고 있습니다. ImageNet과 같이 더욱 커진 데이터셋에 대하여 Overfitting 문제를 다루기 위해 dropout을 적용하며 레이어의 갯수와 크기를 증가시키는 것이 최신 트렌드 입니다.

Max-pooling layer들이 정확한 공간적 정보에 대하여 손실을 야기할 수 있음에도 불구하고, AlexNet과 같이 같은 Convolutional Network 구조에서 성공적으로 적용되었습니다. Inception 모델의 모든 필터는 학습하며, Inception layer들이 반복되어 22개 레이어를 가진 GoogLeNet모델을 구성합니다.

 

Network-In-Network는 신경망의 표현력을 증가시키기 위해 Lin et al.에 의하여 제안된 접근법 입니다. NIN을 Convolution layer에 적용하는 것은 1x1 Convolutional layer에 ReLU 함수를 적용하는 것과 같은 관점으로 볼 수 있습니다. 이러한 방법은 현재 CNN 파이프라인에 쉽게 적용될 수 있도록 해줍니다. GoogLeNet도 이러한 접근법을 사용했는데요. 다만, GoogLeNet에서는 1x1 Convolution은 두가지 다른 목적을 가집니다. 첫번째로, 차원 감소 모듈로써 사용하여 병목현상을 제거하는 것이고, 두번째로는 엄청난 성능 감소 없이 네트워크의 깊이와 넓이를 증가시키기 위함입니다.

 

현재 물체 탐지 분야에서 가장 앞서고 있는 접근법은 R-CNN입니다. R-CNN은 두 단계를 거쳐 물체를 탐지합니다. 이에 우리는 우리의 탐지 기법 중 이와 유사한 파이프 라인을 채택하였습니다. 다만, 두 단계에 대하여 끊임없이 발전 시키는 방법과 더 나은 Bounding box proposal의 범주화를 위한 접근법들을 연구하고 있습니다.


 

3. Motivation and High Level Considerations

심층신경망의 성능 증가를 위한 가장 쉬운 방법은 depth(Level의 수)와  width(각 Level의 유닛의 수 증가)를 증가시키는 방법이 있습니다. 이 방법은 좋은 모델을 훈련시키는 쉽고 안전한 방법이지만 두가지 결점이 존재합니다. 큰 사이즈는 아주 많은 수의 파라미터를 의미하는데 이는 학습데이터가 제한된 상황에서 overfitting을 야기하기 쉽습니다.  고품질의 학습 데이터 셋을 만드는 것은 힘들고 비용이 많이 드는 작업이기 때문에 심각한 병목현상을 야기할 수 있습니다. 

 

또 다른 결점으로는 컴퓨팅 resource의 사용량 증가입니다. 예를들어, 심층 비전 신경망에서 일률적은 filter 수의 증가는 연산량을 제곱으로 증가시킵니다. 만약 추가된 기능이 비효율적으로 사용된다면 이는 많은 양의 컴퓨팅 자원의 낭비로 이어집니다. 

 

두가지 문제를 해결하기 위한 가장 근본적인 방법은 Convolution 안이라 할지라도 fully-connected 구조에서 sparsely connected 구조로 변경하는 것입니다. 핵심은 데이터셋의 확률분배를 크고 sparse한  심층신경망으로 표현할 수 있다면, 가장 최근 레이어의 활성화에 대한 연관성 분석과 연관성이 높은 클러스터링 뉴런을 바탕으로 가장 최적의 네트워크 구조를 구성할 수 있다는 것입니다. 이를 수학적으로 증명하기 위해서는 강력한 조건이 요구되지만, 핵심은 덜 엄격한 조건하에서도 실용적으로 적용 가능하다는 것입니다(by Hebbian principle).

 

다만, 오늘날의 컴퓨팅 환경은 균일적이지 않은 sparse data 구조를 다루기에는 cache 누락과 색인에 대한 오버헤드로 인하여 매우 비효율적입니다. 더군다나, 빠른 dense 행렬곱을 가능케하는 라이브러리의 성능 개선과 CPU와 GPU의 사용으로 인하여 그 차이는 점점 벌어졌습니다. 그럼에도 불구하고, sparse한 matrix 연산에 대한 많은 논문들이 sparse matrix를 상대적으로 dense한 submatrix로 클러스터링 하는 것을 제안하였고, 연산에 있어서 실용적인 성능을 보여주었습니다. 이에 Inception 구조는 위 제안을 바탕으로 sparse 구조를 구성하기 위한 정교한 네트워크 구조 구축 알고리즘의 결과를 측정하고 가설의 결과물을 보충하기 위한 하나의 case study로써 시작되었습니다.  추측에 근거한 작업에도 불구하고 우리는 Learnig rate, Hyperparmeter 그리고 발전된 학습 기법을 튜닝하는 것을 통하여 Inception 구조가 Localization과 object detection에 좋은 성능을 보임을 알 수 있었습니다 . 다만, 한가지 주의할 점은 제안된 구조가 컴퓨터 비전에 대하여 성공적이라 할지라도 이것이 의도했던 원칙에 의한 결과인지는 장담할 수 없습니다.


 

4. Architectural Details

출처: https://arxiv.org/pdf/1409.4842v1.pdf

* patch는 fliter라고 보셔도 무방합니다. 

* path-alignment issue란, 사이즈가 짝수일 경우 patch의 중심을 어디로 해야할지 정해야 하는 issue를 의미합니다.

 

Inception 구조의 핵심은 CNN에서 최적의 local sparse 구조를 이용가능한 dense component로 구성하는 방법을 찾는 것입니다. 즉, 최적의 local 구조를 찾아 공간적으로 반복하기만 하면 됩니다. Arora et al.의 연구는 마지막 레이어의 연관성을 분석하여 그들을 연관성에 따라 클러스터링 하는 layer-by layer 구조를 제안하였습니다. 이러한 클러스터링은 다음 레이어의 유닛을 구성하고 이전 레이어의 유닛과 연결 될 것입니다.  그렇게 되면 input에 가까운 낮은 레이어 들에서 연관성이 있는 유닛들은 local region에 집중되게 됩니다. 즉, 단일 region에 많은 클러스터가 집중될 것이며, 이는 NIN에서 제안되었다시피 다음 레이어의 1x1 convolution 레이어에 의해 구성될 수 있습니다.

큰 patch를 기반으로한  convolution에 의하여 cluster들이 공간적으로 넓게 퍼질 것이며, 이를 바탕으로 더욱 커진 region에 대한 patch의 수를 줄일 수 있습니다.  또한, path-alignmet issue들을 피하기 위하여 Inceptuon 구조의 필터 사이즈는 1x1, 3x3, 5x5로 제한하였습니다. (다만 이 결정은 필요성에 의한 것이 아닌 편하기 위한 결정입니다.)  추가적으로, pooling 연산은 필수적인 요소이기 때문에 Figure2(a)와 같이 대체 가능한 parallel pooling path를 추가해준다면  부가적인 이로운 효과를 가질 것입니다.

 

이러한 "Inception module"들이 서로 쌓이게 된다면, output의 연관성은 달라지게 될 것입니다.  높은 레이어에서 더욱 추상화된 feature들이 추출 되기 때문에, 공간적 집중도는 감소될 것이며 이는 레이어가 높아질 수록 3x3, 5x5 convolution의 비율이  증가될 것임을 의미합니다.

 

하지만 Figure 2(a)와 같이 초기 형태에 한하여 Inception Module들은 한가지 큰 문제점이 있습니니다. 적은 수의 5x5 convolution을 사용한다 하더라도 많은 수의 필터를 사용하게 된다면 비용이 너무 비싸질 수 있다는 것입니다. 이 문제는 pooling 유닛 추가되면 더욱 두드러 지는데, convolution layer에 pooling layer가 결합되게 된다면 엄청난 채널 수의 증가를 야기합니다. 설령 이러한 구조에 최적의 sparse 구조를 적용한다하더라도 매우 비효율적이며, 적은 단계로도 엄청난 계산량 증가를 일으킵니다.

 

그래서 이러한 문제점들을 해결하기 위하여 제안된 두번째 아이디어는 계산 요구량이 증가되는 부분에 차원 축소를 적용하는 것입니다. 

이는 성공적인 임베딩을 위한 것인데요. 적은 차원의 임베딩일지라도 큰 이미지 patch에 대한 많은 정보를 포함할 수 있습니다. 다만, 임베딩은 압축된 형식이기 때문에 처리하기 매우 어렵습니다.  또한, Arora et al.의 연구 조건에 따르면 우리는 representation을 최대한 sparse 하게 유지해야하며 신호들을 압축할 수 있어야 합니다. 이를 위해, cost가 큰 3x3 & 5x5 convolution 전에 계산량 감소를 위한 1x1 convolution이 사용됩니다. 그리고 1x1 convolution을 사용함으로써 계산량 감소에 더불어 ReLU 함수를 적용이라는 두가지 목적을 달성할 수 있습니다. 그 최종 결과는 Figure 2(b)와 같습니다.

 

*ReLU 함수를 적용한다는 것은 레이어에 비선형성을 더해준다는 것과 같습니다.

*따라서, 1x1 convolution 추가는 차원 감소를 통한 연산량 감소 & 레이어에 비선형성을 더해주는 역할로 두가지 이점이 생겨나게 됩니다.

 

이 구조의 장점 중 하나는 계산 복잡도의 증가를 신경쓰지 않고도 각 단계에서 유닛의 수를 늘릴 수 있다는 것입니다. 이는 차원 감소를 유기적으로 활용함에 따라, 큰 patch size의 차원 convolution에 앞서 차원을 감소 시킴으로써 input filter들의 수를 조절할 수 있기 때문입니다. 또 다른 장점은 서로 다른 scale의 feature들을 한번에 추상화 할 수 있다는 점입니다.

 

발전된 컴퓨팅 resource 사용을 바탕으로 stage의 수와 더불어 각 단계의 width도 증가시킬 수 있습니다. 성능은 약간 떨어질지 모르나, 값 싼 cost로 활용할 수 있다는 것이죠. 또한, Inception 구조에 포함되어 있는 장치(knobs and levers)들을 통한 컴퓨팅 자원의 밸런싱을 바탕으로 non-Inception 구조를 가진 비슷한 성능의 네트워크보다 2 ~ 3배 빠른 네트워크를 만들 수 있음을 알아내었습니다. 


5. GoogLeNet

출처: https://arxiv.org/pdf/1409.4842v1.pdf

ILSVRC14에 제출한 팀 이름인 GoogLeNet은 Yann LeCuns의 LeNet-5에서 오마주 하였으며, Inception 구조의 한 형태를 말합니다. 모델을 더 깊고 넓게 구성하는 것은 성능에 크게 영향을 미치지 못하였으며, 앙상블 기법을 적용했을 때는 약간의 성능 항샹을 보였습니다.

실험 결과 정확한 구조적 파라마터들의 영향은 미미한 것으로 밝혀져 네트워크에 대한 세부사항은 생략하도록 하겠습니다. Table 1은 Inception 구조에서 가장 성능이 잘나왔던 instance들을 나타낸 표입니다. 

 

Inception 모듈의 내부에 있는 것까지 포함하여 모든 convolution들은 ReLU함수가 적용되어 있습니다. 또한 Input은 평균차감(mean subtraction)이 적용된 224x224 사이즈의 RGB 채널입니다. '#3x3 reduce' & '#5x5 reduce'는 3x3, 5x5 convolution 전에 사용된 1x1 필터의 갯수를 의미합니다. 또한, 모든 reduction/projection 레이어들에도 ReLU함수가 적용되어 있습니다.

 

이 네트워크는 컴퓨팅 효율성와 실용성에 초점을 맞추어 고안되었으며, 파리미터가 있는 레이어만 셀 경우 22개의 레이어로 구성되어 있습니다. 네트워크를 구성하는 전체 레이어의 갯 수는 약 100개 입니다. NIN을 근거하여 classifier 이전에 average pooling을 사용하는 것은 각기 다른 데이터 셋을 편리하게 조정하고 연결할 수 있도록 해줍니다. 다만, 우리는 이것이 엄청난 영향을 끼친다고 생각하지는 않습니다.  FC layer를 average pooling으로 변경하는 것은 top-1 정확도를 약 0.6% 증진시켰습니다. 하지만, 여전히 dropout은 필수 요소로 남아있습니다.

 

네트워크가 깊어질수록 효과적인 방식으로 역전파를 진행하는 것이 우려되었습니다. 한가지 흥미로운 insight는 네트워크 중간의 레이어들에서 나오는 feature들이 명확하게 식별될수록 shallower network에서 성능이 향상된다는 것입니다. 따라서, 중간 레이어들에 보조 분류기(Auxiliary classifier)을 붙임으로써 낮은 stage들에서 식별성을 강화하고, 역전파 과정에서 gradient signal을 증가시켰으며, 추가적인 정규화를 적용하였습니다. 학습을 하는 동안, classifier의 loss은 0.3의 비중으로 total loss에 더해집니다. 또한 추론시간에는, 이러한 보조 네트워크는 버려집니다.

 

출처: https://arxiv.org/pdf/1409.4842v1.pdf

 

 

Average pooling layer(주황색 사각형 내부)

side에 위치한 보조 네트워크의 정확한 형태는 다음과 같습니다.

  • 필터 사이즈는 5x5이며 stride는 3인 average pooling layer -> (4a)에서는 4x4x512의 shape, (4d)에서는 4x4x528의 shape을 갖습니다.
  • 차원 감소와 ReLU 함수를 적용하기 위한 128개의 filter로 이루어진 1x1 convolution
  • dropout(0.7)
  • softmax를 사용하는 FC Layer

Figure3는 전체 네트워크를 도식화 한 것입니다.


6. Training Methodology

GooLeNet은 DistBelief 라는 분산 머신 러닝 시스템을 활용하여 학습하였습니다. 또한, momentum을 0.9로 한 비동기 SGD와 고정된 learning rate 스케쥴링(매 8 epoch 마다 learning rate 4% 감소)을 활용하였습니다. Polyak averaging은 추론 시간에 사용할 최종 모델을 만드는데 사용하였습니다.

 

대회가 끝난 후 증명된 한가지 사실이 있습니다. 크기가 이미지 영역의 약 8% ~ 100% 사이에 분포하고 가로-세로 비율이 3/4 ~ 4/3에 해당하는 이미지의 패치의 샘플링이 매우 좋은 성능을 보여준다는 것입니다. 또한, Andrew Howard의 'photometric distortions'연구가 어느정도 overfitting을 억제하는데 유용하다는 것을 알아냈습니다. 다만, random interpolation method(무작위 보간법)을 사용하였기 때문에 최종 결과들에 위와 같은 활용이 긍정적인 영향을 끼쳤는지는 명확히 이야기 할 수 없습니다.


7. Conclusions

GooLeNet이라는 결과물은 쉽게 이용 가능한 dense building block에 의해 최적의 sparse 구조를 근사화 하는 것이 컴퓨터 비전의 신경망을 발전 시키기 위해서 실행 가능한 방안이라는 것을 보여줍니다. 이 방식의 핵심적인 이점은 shallower 하고 less wide한 네트워크에 비해 약간의 cost 만으로도 엄청난 퀄리티를 얻을 수 있다는 것입니다. 또한, 우리의 탐지 작업은 문맥 활용과 bounding box regression의 수행 없이도 경쟁적이라는 것을 알 수 있으며, 이러한 사실은 Inception 구조의 강점을 보여줍니다. 비슷한 depth와 width를 가진 cost가 큰 네트워크에 의해서 비슷한 퀄리티를 기대해 볼 수는 있지만, 우리의 접근법은 sparser 아키텍쳐를 활용하는 것이 실행가능하고 유용한 아이디어라는 것을 보여줍니다. GoogLeNet을 통하여 NIN에 기반한 자동화된 방식으로 sparser한 아키텍쳐와 더욱 개선된 구조를 위한 미래 연구를 제안합니다.


첫 논문리뷰(?)를 해보았는데 단순히 요약하고 정리하는 과정인데도 불구하고 생각했던거보다 어려웠습니다. 내용도 어려운데 번역하는 과정을 거쳐야 하다보니 더 어렵게 느껴지더라구요. 다만, 1x1 convolution을 통한 차원 감소 등 아직은 생소하지만 획기적인 아이디어 덕분에 몰입하며 읽을 수 있었고 단순히 '~~ 했다'/ '~~한 구조다'가 아닌 '이러한 근거로 이렇게 적용했다 / 이러한 문제점이 있어 해결하기 위해 ~~ 했다' 라는 식으로 원인과 결과가 명확하게 서술되어 있어서 저의 호기심을 충족시켜주었을 뿐만 아니라 배워가는 재미도 많이 느꼈습니다. 저는 이유가 항상 궁금한 사람이거든요. 

 

이번 인셉션에 대해서 공부하던 와중 흥미로운 두가지 사실을 알게 됐기 때문인데요.

ILSVRC 2014에서 우승은 GooLeNet이 했지만, 실제 활용도는 VGGNet이 더 높았다는 사실과 

이듬해 ResNet이 2배의 성능으로 우승하여 결국 구글에서 Inception에 ResNet을 적용했다는 사실을 알게 되었습니다.

 

이에 다음 논문리뷰는 VGGNet과 ResNet에 대해서 써보려고 합니다.

 

아직 실력이 모자라기에 잘못 요약해놓은 부분들도 있을 수 있고, 핵심적인 내용을 캐치하지 못하고 놓쳤을 수도 있습니다.

글에 대한 피드백, 조언은 언제나 감사드리기에 부족한 점이 있다면 편하게 댓글 달아주시면 감사하겠습니다.

읽어주셔서 감사합니다.


References

https://arxiv.org/pdf/1409.4842v1.pdf

https://sike6054.github.io/blog/paper/second-post/

https://phil-baek.tistory.com/entry/3-GoogLeNet-Going-deeper-with-convolutions-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0  

https://jjuon.tistory.com/26 

https://velog.io/@whgurwns2003/Network-In-NetworkNIN-%EC%A0%95%EB%A6%AC

 

+ Recent posts