0️⃣ Paper
Going Deeper with Convolutions
1️⃣ Architecture Point
-
Inception Architecture
- 최적의 Local Sparse Structure를 어떻게 쉽게 사용할 수 있는 Dense Components로 근사하게 구현할 수 있는지에 기반함
- 합성곱 기반 블록으로 구성됨
- 최적의 로컬 구조를 찾아 이를 공간적으로 반복하면 됨
- 이전 층의 각 유닛은 입력 이미지의 특정 영역과 대응한다고 가정 → Filter Banks로 그룹화됨
- 하위 층(입력에 가까운 층)에서는 상관된 유닛들이 로컬 영역에 집중될 가능성이 큼
- 단일 지역에 많은 클러스터가 집중되며, 다음 층에서 1x1 Convolution으로 다룰 수 있음
- 패치 정렬 문제(Patch-alignment Issues)를 피하기 위해, 필터는 1x1, 3x3, 5x5로 제한함
- 각 층의 출력 필터 뱅크를 결합하여 다음 단계의 입력으로 사용하는 구조
- Pooling 연산의 중요성을 고려하여 각 단계에 병렬적인 Pooling을 추가
-
Inception Module 중첩화
- Inception 모듈이 서로 쌓이면 출력의 상관 관계 통계가 변하게 됨
- 상위 층으로 갈수록 더 높은 수준의 추상적인 특징이 포착됨 → 공간적 집중도(Spatial Concentration) 감소
- 상위 층으로 갈수록 3x3 , 5x5 Convolution 비율이 증가해야 함을 의미함
-
Kernel-Size가 큰 Convolution 비율이 증가하면 발생하는 문제점
- 필터 수가 큰 합성곱 층 위에서 실행될 때 계산 비용이 매우 커질 수 있음
- Pooling Layer가 추가되어도 똑같은 문제가 발생
- Pooling Layer Output + Convolution Layer Output ⇒ 출력의 수가 필연적으로 증가함
- 즉, 계산량 폭증(Computational Blow Up) 가능성이 큼
-
Computational Blow Up 해결 방안
- 차원 축소(Dimension Reduction), 투영(Projection)
- Embeddings 성공 사례에 기반함
- 낮은 차원의 임베딩이라도 상대적으로 큰 이미지 패치에 대한 많은 정보를 포함할 수 있음
- 임베딩은 정보를 밀집되고 압축된 형태로 표현하기에 모델링이 더 어려워질 수 있음
- GoogLeNet에서는 표현을 희소하게(Sparse) 유지하고, 대규모로 신호를 집계해야 할 경우에만 압축함
- 1x1 Conv 및 ReLU Activation Function 사용 → 3x3, 5x5 Conv의 계산 전에 차원을 축소
-
Max-Pooling Stride = 2 적용
- 현재 구현에서의 인프라 비효율성(Infrastructural Inefficiencies)을 반영한 선택일 뿐임
2️⃣ GoogLeNet Architecture Visualization

- A 1x1 Convolution with 128 filters for dimension reduction and rectified linear activation
- A fully connected layer with 1024 units and rectified linear activation
- A dropout layer with 70% ratio of dropped outputs
- A linear layer with softmax loss as the classifier
- Predicting the same 1000 classes as the main classifier, but removed at inference time