딥러닝/Paper Review

[Paper Review] Going deeper with convolutions

CoGam 2025. 1. 7. 19:15
728x90

이 논문은 2014년 CVPR에 소개된 논문이다. 잘 알려진 ILSVRC 2014년 대회에서 우승을 하며 독창적인 아이디어와 deep network를 구현했다는 점에서 널리 알려지게 되었다. 이전에 리뷰한 VGG Net과 마찬가지로 이전 CNN 모델인 AlexNet에서 깊이를 늘리기 위해 노력했다는 점이 인상깊은 논문인 것 같다.

 

 

 

문제 정의

결국 GoogLeNet을 고안하게 된 이유는 네트워크에서 "깊이"라는 요소를 늘리고 싶었기 때문이다. 하지만 논문에서 언급하는 것과 같이 깊어짐에 따라서 발생하는 문제가 있다. Parameter의 수가 늘어나며 overfitting의 위험성이 생긴다는 점과 그에따른 계산량의 증가라는 점이다. Filter 수의 uniform한 증가는 계산량에서의 quadratic 증가를 유발한다고 설명한다. 따라서 논문에서는 이 문제점을 해결하고 네트워크 깊이를 늘리고자 Inception architecture를 제안한다.

 

 

 

Related Work

Inception 구조를 자세히 살펴보기 전에 어떻게 그 구조를 생각했는지 알기 위해서 논문에 언급되어 있는 이전 연구 내용을 살펴보았다.

 

먼저 Serre가 IEEE에 2007년에 소개한 "Robust object recognition with cortex-like mechanisms"라는 논문이다. 해당 논문에서는 primate visual cortex의 neuroscience model에서 착안하여 multiple scale을 처리하는 방법을 고안하였다. 여기서 영감을 얻어 Inception architecture에 서로 다른 크기의 filter를 사용하게 되었다.

 

다음으로 Lin의 2013년 논문인 "Network-in-Network"이다. 이 논문은 신경망의 표현력을 높이기 위한 방법을 제시한다. 특히 1x1 conv의 사용이 눈에 띄는데, rectified linear activation을 함께 사용하여 CNN의 성능을 높이기 위해 노력하였다. Inception 구조에서도 마찬가지의 이유로 1x1 conv를 사용하게 된다. 하지만 또 다른 목적이 추가된다. 바로 채널 수를 줄여 computational bottleneck을 없애는 것인데 이것은 구조를 살펴보며 자세히 설명하는 것이 좋을 것 같다.

 

마지막으로 2014년에 CVPR에 소개된 "Rich feature hierarchies for accurate object detection and semantic segmentation"이다. 주로 R-CNN으로 알려져 있는 모델을 소개하는 논문이다. 여기서 논문의 저자가 얻은 아이디어는 문제를 두 단계로 나눠서 해결했다는 점이다. 처음에는 low-level에서의 특성을 이용했다는 점이다. 이를 이용하여 사전에 객체의 위치를 제안하는 역할을 수행하였다. 다음 단계에서는 CNN 분류기를 이용하여 그 위치에 실제로 객체가 존재하는지 확인하였다. 이로써 low-level cues를 사용하여 bounding box를 잘 도출 할 뿐만 아니라 CNN의 강점을 사용하여 분류의 정확도까지 높일 수 있었다. 본 논문에서도 이러한 방법을 채택하였다. 하지만 multi-box prediction과정과 앙상블을 추가하여 더 향상된 성능을 가질 수 있도록 하였다.

 

 

 

해결 방법 및 원리

앞서 제시된 문제는 파라미터 수의 증가에 따른 overfitting과 계산량의 증가였다. 저자들은 이에 대한 해결 방법으로 fully connected layers를 sparsely connected architectures로 바꾸는 것을 생각한다. Sparse 구조를 사용하면 계산해야하는 weight의 수가 급격히 줄어들어, parameter 수를 강제적으로 줄일 수 있는 효과가 있을 것이다.

 

당시 "Pravable Bounds for Learning Some Deep Representations"라는 Arora의 논문에서 딥러닝을 통해 모델의 표현 능력과 일반화 능력을 수학적으로 설명하려는 시도가 있었다 (읽어보지는 못했지만 간략히 어떤 내용인지 찾아보았다). 

 

1. 깊이와 폭 등이 학습에 미치는 영향을 수학적으로 분석하여 표현의 경계를 찾고자 하였다.

2. 각 layer가 이전 layer에서 도출된 정보를 refine하며 학습을 진행하는 것을 설명하였다.

3. 입력 데이터의 노이즈가 모델 학습의 일반화에 미치는 영향을 설명하였다.

4. 효율적인 학습을 위해 필요한 조건(네트워크 구조, 데이터 복잡성 등)을 설명하였다.

 

본 논문의 저자 또한 이것을 참조하여 sparse 구조를 도출하고자 하였다.

데이터셋의 확률 분포가 매우 크고 sparse한 deep neural network로 표현이 가능하다면, 최적의 신경망 구조는 층별로 구성될 수 있다는 결과에 집중한다 (마지막 층의 활성화 값에 대한 상관 통계 분석, 높은 상관관계를 가지는 출력의 뉴런들끼리 클러스터링 진행하는 방식을 사용). 즉 한 번에 설계된 모델 구조가 아니라, 계층적인 방식의 모델 구조를 생각한 것이다. 당시에는 다양한 compution 자원에 따른 제약이 존재했는데, 이러한 모든 생각과 조건을 고려하여 나온 것이 Inception architecture이다.

 

Related work에서 살펴 본 것과 같이, multiple scale의 filter를 사용하여 다양한 크기의 정보를 사용하고자 하였다. 가장 큰 특징은 이 모듈을 하나의 층으로 사용하는 것이다. 즉 모델의 깊이 뿐 아니라 폭을 넓혔다는 점이다. 전체적인 모델은 이 Inception module을 여러개 쌓아서 완성하였는데, 그때 각 conv의 마지막 layer를 cluster 시켜 최종 filter concentration을 만들어낸다. 이로써 1x1 conv로는 lower layer에서의 local region을 cover하게 되고, 점점 더 흩어진 cluster에 대해서는 3x3 conv와 5x5 conv로 cover하며 효과적인 방법으로 feature를 추출하게 된다. 논문에서는 필수는 아니지만 정렬 편의를 위해 1x1, 3x3, 5x5 conv를 사용하였다고 설명한다. 추가적으로 성능이 좋던 모델들에서 사용하는 max pooling layer도 추가하였다. 최종적으로 각각의 output을 concatenate하여 하나의 output으로 만들고 다음 module의 input으로 넘기는 구조이다.

 

기존에는 사진에서 왼쪽과 같은 구조를 고안하였지만 이렇게 되면 한 가지 문제가 존재하였다. 점차 higher layer에서 학습을 진행할수록 spatial concentration이 줄어들기 때문에 더 넓은 영역을 살펴보는 필터를 사용해야 했는데(3x3 conv, 5x5 conv 등) 이때 너무 많이진 channel 수로 인해서 계산이 너무 expensive 해진다는 단점이 존재했다. 때문에 오른쪽과 같이 1x1 conv를 추가하여 비선형성을 더해주는 것 뿐 아니라 연산량 및 파라미터 수를 줄여주는 역할을 하였다.

 

이렇게 오른쪽과 같이 Inception module을 만들었다. 크게 두 가지의 장점을 가지는 것으로 해석할 수 있는데, 첫째는 1x1 conv로 dimension reduction 과정을 거쳤기에 폭과 깊이가 모두 늘어났음에도 계산적인 효율성을 높일 수 있다는 점이다. 두 번째는 한 층에서 서로 다른 filter의 결과를 합쳤다는 점에서 다양한 시각 정보를 얻을 수 있다는 점이다.

 

최종적인 GoogLeNet에서 메모리 효율성 문제로 higher layer에서 Inception module을 쌓는 것이 유리하다는 것을 발견하였고 그 구조는 아래와 같다.

최종 제출한 7개 모델 앙상블 중 6개는 위의 표와 동일한 구조를 사용하였고, 1개의 모델은 조금 더 깊고 넓어진 inception module을 적용하였으나 미비한 차이라고 생각해서 논문에는 소개하고 있지는 않다.

 

GoogLeNet의 마지막에는 분류를 위한 Average Pooling layer와 FC layer(성능 향상), softmax가 추가되어 주어진 task를 수행할 수 있도록 하였다. pooling layer를 제외하면 총 22개의 층이 사용되었다. 각각의 inception modul의 layer까지 개별로 계산하면 100개의 network가 사용되었다고 한다.

 

마지막으로 살펴볼 부분은 GoogLeNet의 눈에 띄는 부분인 Auxiliary classifier이다. 이것은 최종 output이 아니라 중간에 있는 (4a), (4d) inception moudle에서 output을 추출하는 classifier이다. 논문의 저자는 이 classifier의 목표가 backpropagation이라고 설명한다. ResNet에서는 깊이가 깊어짐에 따라서 발생하는 gradient vanishing 현상을 해결하고자 skip connection을 생각해냈다. 이 논문의 저자는 중간 층의 gradient를 더욱 잘 반영하고자 별개의 classifier를 사이에 두어서, 역전파시에만 사용하는 생각을 했다. 대신 weight의 0.3배의 가중을 두어 그 비율을 조절하였다. 추론 단계에서는 이 classifier는 제거하고 추론을 진행하였다.

 

직접 계산해보면 좋을 것 같다고 생각했다. 그리고 계산하면서 알았는데 제일 첫 convolution이 왜 2.7k인지 모르겠다. 계산하보면 9472인 것 같아서 구글링도 해보았는데 이상하다고 이야기하는 사람들을 발견했다. 나중에 기회가 된다면 다른 사람들과 의견을 나눠봐야겠다. 아래는 직접 계산해본 inception (3a)이다. 참고로 padding은 "same"이 적용되었다고 해서 same 공식에 맞게 적용하였다.

 

 

 

결과

Training Methodology

Optimizer: SGD + Momentum(0.9)

Fixed learning rate schedule (decreasing 4% every 8 epochs)

Polyak averaging for final model

 

학습에는 다양한 방법들을 사용했다고 한다.

Dropout, various sized patches, photometric distortions, random interpolation (bilinear, area, nearest neighbor and cubic)

 

 

1. ILSVRC 2014 Classification results

대회에 참여한 다른 모델들 그리고 과거 대회 모델들의 결과와 비교하는 표이다. 그리고 앙상블, crop의 수 등을 변경하며 GoogLeNet으로 실험한 결과이다. 144개의 crop을 사용하여 7개의 모델을 앙상블 한 것이 가장 좋은 결과를 냈지만, 이것은 competition의 특성 상 다양한 시도를 했을 뿐 실제로 사용할 때는 144개의 crop이 중요하지 않을 것 같다고 저자가 설명하고 있다.

 

 

2. ILSVRC 2014 Detection results

해당 대회에서는 50% 이상 bounding boxes의 overlap이 정답으로 인정된다고 한다. GoogLeNet은 R-
CNN의 방법을 비슷하게 Inception module에 적용하는 동시에 "selective search approach"와 "multi-box prediction"을 추가하여 detection task에서도 좋은 성능을 보여주는 것을 알 수 있다. 최종 대회에서는 6개의 모델 앙상블로 1위를 차지하였다. 

앙상블을 제외한 single model 성능을 살펴보면 Deep Insight가 조금 더 높은 성능을 보인다. 여기서 알 수 있는 점은 Deep Insight의 single 성능은 좋지만 3개의 앙상블로 0.3%의 성능 향상을 이뤘다. 하지만 GoogLeNet은 6개의 앙상블로 약 3%의 성능 향상이 있는 것으로 보아, 앙상블에 더욱 강점을 가진다고 해석하였다. 또한 GoogLeNet은 bounding box regression (시간 부족으로)과 localization data를 사용하지 않았다는 점도 주목할 만하다.

 

 

 

결론

결론적으로 GoogLeNet은 깊이를 통해 network의 성능을 향상시키고자 노력하였다. 이것을 위해 sparse architecture를 생각해냈고, 실제로 구현하기 위해 Inception Module을 고안했다. 이것으로 늘어난 깊이와 폭에 따른 계산량을 줄일 수 있었고 overfitting을 방지하였다는 점에서 의미가 있는 논문이었다. 물론 같은 대회에 참가한 VGG Net의 아이디어가 더욱 주목받고 있지만 독창적인 구조를 생각하여 문제를 해결하고자 하였다는 점에서 인상깊었다.

반응형