(https://arxiv.org/abs/1409.4842)
Inception
이라고 불리는 deep convolutional neural network architecture를 제안한다.GoogleNet
이라고 부른다.지난 3년간 deep learning의 급속 발전으로 인해 image recognition과 object detection의 quality가 매우 정확해지고 있다.
하지만 한가지 우려되는 점은
대부분의 progress들이 오로지 powerful HW, larger dataset 그리고 bigger model을 사용하는 것 뿐만 아니라 new ideas, algorithm 과 improved network architecture가 없다는 점이다.
ILSVRC 2014에 제출한 우리의 GoogleNet은 2년 전의 AlexNet보다 12배나 적은 parameter를 사용했지만,
더욱 높은 정확도를 보였다.
GoogleNet은 inference time 동안,
a computational budget of 1.5 billions multiply-adds 를 유지하도록 설계되었다.
이 논문에서,
우리는 Inception이라고 불리는 computer vision을 위한 효율적인 deep neural network architecture에 집중할 것이다.
'Inception'은 유명한 Internet meme인 "we need to go deeper"라는 문구에서 가져왔다.
(https://knowyourmeme.com/memes/we-need-to-go-deeper)
우리의 경우, "deep" 이라는 단어는 2가지 의미로 해석된다.
LeNet-5부터 시작하여 VNN은 전통적으로 standard structure를 갖는다.
➡️ stacked convolutional layers (optinally followed by contrast normalization and max-pooling) are followed by one or more fully-connected layers.
이러한 basic design은 image classification에서 유행처럼 사용되고, 좋은 결과를 얻고 있다.
Imagenet과 같은 larger dataset에 대해서는
the number of layers and layer size를 늘리고 있고, overfitting 문제를 위해 dropout도 사용된다.
max-pooling layer가 accurate spatial information의 손실을 초래한다는 사실에도 불구하고,
CNN은 localization, object detection, human pose estimation 등에 성공적으로 사용되고 있다.
영장류 시각 피질에 대한 생물학적 model에서 영감받은 신경과학 model은 Inception model과 비슷하게,
다양한 scale을 다루기 위해 각각의 다른 Gabor filter들을 사용했다.
하지만 이 2-layer deep model과는 달리,
Inception model의 모든 filter들은 학습되어진다.
게다가, GoogleNet model의 경우 22-layer deep model인데
Inception layer는 많이 반복된다.
최근 object detection에 대한 선도적인 접근 방식은 Girshick et al.에 의해 제안된 R-CNN(Regions with Convolutional Neural Networks)이다.
R-CNN은 overall detection problem을 2가지 subproblem으로 나눈다.
우리는 R-CNN과 비슷한 pipline을 채택했다.
하지만 두 subproblem을 multi-box prediction과 ensemble 접근법과과 같은 방법으로 더욱 강화했다.
deep neural network의 성능을 향상시키는 가장 직관적인 방법은 model의 size를 키우는 것이다.
(increasing the depth and its width : the number of units at each level)
이 방법은 쉽고 안전한 방법이지만, 이 간단한 방법은 2가지 주요한 단점을 갖는다.
위 두가지 issue를 해결하기 위한 기본적인 방법은
fully connected를 sarsely connected architecture로 바꾸는 것이다.
하지만 오늘날 computing infrastures는 non-uniform sparse data structure에 대한 numerical calculation이 비효율적이다.
Also, non-uniform sparse models require more sophisticated engineering and computing infrasture.(Seminar Discussion)
(이후 내용 모르겠어서 생략)
The main idea of the Inception architecture
is based on finding out
how an optimal local sparse structure in a convolutional vision network
can be approximated and covered by readily(손쉽게) available dense components.
우리가 원하는 것은 optimal local construction을 찾는 것이고, 그것을 반복하는 것이다.
우리는 earlier layer의 각 unit이 input image의 some region에 해당한다고 가정하고,
이 unit들은 filter bank로 group화 된다.
input에 가까운 lower layer에서는 correlated된 unit들은 local region에 집중된다.
이는 많은 cluster가 single region에 집중되고 다음 layer에서는 NIN에서 제시된 것처럼 1 x 1 convolution layer로 cover될 수 있음을 나타낸다.
하지만 larger patch에 대한 convolution으로 cover할 수 있는 1 x 1 filter들은 적어지고,
이는 larger region에 대한 patch가 줄어듦을 의미한다.
이러한 patch alignment issue를 피하고자,
Inception architecture는 filter size를 1x1, 3x3, 5x5로 제한했다.
이 결정은 necessity가 아닌 convenience에 기반한다.
추가적으로 현재 state of the art CNN에 기반하여 pooling operation은 필수적이기 때문에
alternative parallel pooling path를 추가했다.
위 naive version Inception module은 하나의 큰 문제가 있다.
바로 5x5 convolution은 computational 비용이 많이 든다는 것이다.
그래서 naive version을 개선한 (b) Inception moduel with dimension reductions architecture를 만들었다.
1x1 convolution이 3x3과 5x5 convolution하기 전에 reduction을 수행하기 위해 사용된다.
reduction으로 사용되기도 하지만, ReLU activation이 포함되어 있기 때문에 dual-purpose를 갖는다.
In general, Inception network는 (b) module이 stack되어 만들어진 network이다.
with occasional max-pooling layers with stride 2 to halve the resolution of the grid.
우리는 ILSVRC14 competition에 team-name을 GoogLeNet
이라고 정했다.
이 이름은
LeCun의 LeNet5 network를 오마주한 것이고,
competition을 위해 Inception architecture를 적용한 network 이름으로도 사용했다.
Here, the most successful particular instance(named GoogLeNet) is described in Table 1 for demonstrational purposes.
우리의 ensemble 7개 model 중 6개 model에 대해 정확히 동일한 topology가 사용되었다.
auxiliary classifier를 포함한 정확한 struxture는 다음과 같다.
우리의 main limitation은 memory usage이기 때문에, CPU 기반 구현만 사용했지만
대략적인 추정으로는 GoogLeNet network가 몇 개의 고급 GPU를 사용하지 않고도
일주일 내에 수렴하도록 train되어질 수 있다는 것을 시사한다.
0.9 momentum으로 stochastic gradient descent,
8 epoch마다 learning rate를 4% 줄임,
inference time에 Polyak averaging을 사용.
우리의 image sampling method는 competion이 시작된 몇 달 동안 계속해서 바뀌었으며,
때로는 dropout과 learning rate와 같은 hyperparameter의 option들이 바뀌면서 train되어졌다.
그래서 이 network를 train시키기에 가장 효율적인 방법을 명확히 하기 어렵다
image의 가로, 세로 비율을 3:4와 4:3 사이로 유지하며
원래 size의 8%~100%가 포함되도록 다양한 크기의 patch를 사용했고
photometric distortions을 통해 training data를 augmentation했다.
우리의 결과는 쉽게 이용할 수 있는 dense building block에 의해 예상되어지는
sparse structure를 approximating하는 것이
computer vision을 위한 neural network 개선을 위한 실행 가능한 방법이라는 확실한 evidence를 제시한 것 같다.
이 방법의 가장 큰 장점은
shallow and less wide network에 computational requirements를 늘리지 않고 quality를 향상시킬 수 있다.
sparse matrix는 parameter가 줄어들지만, 연산량은 생각보다 크게 줄지 않는다.
sparse matrix는 dense matrix로 복원하는 작업 후에 연산을 진행해야 하기 때문에 추가적인 연산이 필요하여 속도가 느려진다.
그리고 병렬화가 어렵다. 그래서 cuda sparse라고 하는 sparse matrix multiplication을 지원해주는 library가 있긴 하지만 그래도 느리다.
결론 : sparse matrix multiplication은 parameter가 줄지만, 연산량이 크게 줄지도 않고 연산속도가 매우 느려진다
GoogleNet은 depth가 너무 크다.
그 시절에는 BN, skip connection 아이디어가 없어서 gradient vanishing 문제가 심했다.
그래서 softmax2, softmax1, softmax0이 있는 것이다.
기존에 end to end model(input-only one softmax)과는 달리
학습의 순서가
(forward) input→softmax0
(backward) softmax→0 → input
(forward) input → softmax 1
(backward) softmax 1→ input
(forward) input → softmax2
(backward) softmax2→input
➡️ 이와 같이 된다.