Inception module에 대한 설명 및 변화과정
https://gaussian37.github.io/dl-concept-inception/#:~:text=앞에서 설명한 것과 같이 1xn,후가 대응이 됩니다
논문 리뷰 : https://phil-baek.tistory.com/entry/3-GoogLeNet-Going-deeper-with-convolutions-논문-리뷰
sparse를 clustering하여 dense한 structure를 만듬.
# Abstract
- network의 depth와 width를 증가시키면서 computing resource의 활용을 향상시는 데에 중점을 두고 있다. 그리고 이 network의 quality를 최적화하기 위해 Hebbian principle과 multi-scale processing을 기반으로 architecture를 짰다.
# Introduction
- 성능도 올리면서 그 당시에 유명했던 AlexNet의 1/12배 파라미터를 사용한 것과 더 적은 연산을 사용했다.
- 최근 CNN의 발전은 단지 더 많은 데이터 셋과 큰 모델 그리고 더 좋은 하드웨어로 이루어지지 않았다. 즉, network architecture를 더 좋게 하는 아이디어와 computer vision 분야의 고전적인 알고리즘 등으로 성능을 향상시켰다.
# Related Work
- Network-in-Network의 approach에서 1x1 convolution을 사용했다. 1x1 convolution은 모듈의 dimension을 줄여 계산에 의한 bottleneck현상을 줄이고 이에 따라 depth와 width를 증가시킬 수 있도록 도와준다.
# Motivation and High Level Considerations
- 많은 label된 data가 있으면 단순히 모델의 depth와 width를 늘림으로써 성능을 향상시킬 수 있다. 하지만 이러한 단순한 솔루션에는 두 가지 단점이 있다.
- 모델의 큰 사이즈는 많은 parameter를 의미하고 이는 network가 overfitting될 가능성이 높다는 것을 의미한다 (특히 label된 데이타가 별로 없을 때).
- 모델의 사이즈의 uniform한 증가는 필요한 computation resource의 급격한 증가를 야기한다.
- 위 두 문제를 해결하는 방법은 dense 한 Fully-Connected 구조에서 Sparsely Connected 구조로 바꾸는 것이다. 만약 dataset의 분배 확률을 Sparse 하면서도 더 큰 심층 신경망으로 표현 가능하다면, 입력 layer에서 출력 layer로 향하는 layer 간의 관계를 통계적으로 분석한 후, 연관 관계가 높은 것들만 연결하여 최적의 Sparce 한 네트워크를 만들 수 있다.
- 하지만, 오늘날의 컴퓨팅 환경은 균일하지 않은 Sparse data 구조를 다룰 때 매우 비효율적이다. 이러한 격차는 더욱 커졌는데, Dense data는 꾸준히 개선되고 고도로 조정된 수치적인 라이브러리와 CPU 및 GPU의 사용으로 빠른 연산이 가능해진 반면, Sparse data의 연산은 발전이 미미했다. 초기에는 대칭성을 깨기 위해 CNN에 Sparse Connection을 적용했었지만, 병렬 컴퓨팅에 더 최적화하기 위해 Full Connection으로 트렌드가 다시 바뀌었다. 이와 더불어, 균일한 모델 구조와 많은 filter 수, 더 큰 배치 사이즈는 효율적인 Dense 연산이 가능하게끔 하였다.
- Google 팀의 Inception 구조는 위에서 말한 유사 Sparse 구조를 시험하기 위해 시작되었다. 그리고 러닝 레이트와 하이퍼 파라미터를 조정하고 훈련 방법 등을 개선한 결과, Localization 및 Object detection 분야에서 특히 좋은 성능을 보였다고 한다.