1. Introduction
지금까지 딥러닝으로 이미지 인식과 객체 감지의 품질이 많이 좋아졌다.
주로 새로운 아이디어나 알고리즘, 개선된 네트워크 아키텍처 덕분에 좋아졌다고 할 수 있다.
그리고 모바일 및 임베디드 컴퓨팅의 지속적인 확장으로 전력과 메모리 사용의 중요성도 증가했다.
이로 인해 GoogLeNet 모델은 매개 변수 수가 12배나 적으면서도 정확도는 더 높았다.
본 논문에서는 Inception이라는 코드명을 가진 효율적인 딥 뉴럴 네트워크 구조에 집중한다.
Inception이라는 모델은 NIN 논문과 'We need to go deeper' 라는 문장에서 유래한다.
여기서 'deeper'는 Inception 모듈로 새로운 수준의 조직을 도입한다는 의미와 네트워크 깊이를 증가시키는 직접적인 의미이다.
2. Related Work
LeNet-5에서 시작된 CNN은 일반적으로 표준 구조를 갖는다.
여러 개의 합성곱 층을 쌓고 선택적으로 정규화와 최대 풀링을 진행한다.
하지만 최대 풀링 층이 공간 정보를 손실시킨다는 우려가 있음에도 여러 분야에 성공적으로 사용됐다.
Serre라는 모델에서는 여러 크기의 고정된 Gabor 필터를 이용해 다양한 스케일은 처리한다.
이는 Inception 모델과 유사하다. Inception 모델은 모든 필터를 학습하며 계층이 여러 번 반복되어 GoogLeNet 모델에서는 총 22층의 깊이를 갖는다.
Inception에서는 NIN에서 제시된 방법으로 1x1 합성곱 층을 추가하고 ReLU를 따른다.
그리고 Inception에서는 Regions with Convolutional Neural Networks(R-CNN)와 비슷한 파이프라인을 채택했지만 더 나은 분류를 위해 앙상블 접근법의 개선을 탐구했다.
3. Motivation and High-Level Considerations
딥러닝의 신경망 성능을 향상시키는 가장 직관적인 방법은 네트워크의 크기를 늘리는 것이다.
많은 양의 레벨이 있는 훈련 데이터가 있을 때 더 높은 품질의 모델을 훈련시키는데 쉽다.
하지만 이 방법에는 두 가지 단점이 있다.
1. 과적합
네트워크 크기가 커지면 파라미터 수가 증가하고 훈련 세트에 포함된 라벨링 된 데이터가 제한적일 경우 과적합에 더 취약해진다.
2. 계산 자원 증가
네트워크 크기가 증가하면 계산 자원의 사용이 증가한다.
실제로 계산 예산은 항상 유한하기 때문에 계산 자원의 효율적인 분배가 단순한 크기 증가보다 바람직하다.
이 두 가지 문제를 해결하는 방법은 Fully connected에서 Sparsely connected로 바꾸는 것이다.
데이터셋의 확률 분포가 희소하게 표현될 수 있다는 것은
층별로 상관 관계를 분석하고 상관 관계가 높은 출력을 가진 뉴런들끼리 군집화하면 최적의 계층으로 구성할 수 있다는 것이다.
하지만 오늘날의 컴퓨팅 인프라는 희소한 데이터 구조에 대한 수치 계산이 비효율적이다.
현재 대부분의 컴퓨터 비전 시스템은 합성곱을 사용해서 희소성을 일부 활용하고 있다.
합성곱은 전통적으로 특성 차원에서 무작위로 희소 테이블을 사용하여 대칭성을 깨고 학습을 개선했지만 병렬 연산을 위해 다시 fully connected 방식으로 돌아갔다.
그러면 희소성을 필터에도 사용하는 아키텍처가 있을까?
희소 행렬 계산에 따르면 희소 행렬을 밀집된 하위 행렬로 군집화 하는 것이 희소 행렬 곱셈에서 좋은 성능을 제공한다고 한다.
이는 비균일한 딥러닝 구조를 자동으로 구축하는데 유사한 방법으로 사용될 수 있다는 것을 의미한다.
Inception 아키텍처는 컴퓨터 비전에 적합한 희소 구조를 근사하려고 시작됐다.
4. Architectural Details
Inception의 핵심 아이디어는 합성곱 기반 컴퓨터 비전에서 최적의 희소 구역을 찾고 우리가 이용 가능한 밀집 연산으로 근사하는 방법을 찾는 것이다.
먼저 층별로 상관 관계를 분석하고 상관 관계가 높은 출력을 가진 뉴런들끼리 군집화한다.
입력에 가까운 하위 계층은 공간적으로 국소적인 영역에 상관관계가 집중되기 때문에 1x1 합성곱을 사용할 수 있다.
상위 계층은 더 넓은 영역에 퍼져있는 군집으로 나타날 수 있기 때문에 3x3이나 5x5 필터가 필요하다.
초기 naive 구조는 병렬 경로로 1x1, 3x3, 5x5 합성곱과 max_pooling을 한다.
각 경로의 출력은 concatenate해서 다음 층으로 전달한다.
하지만 이 구조는 다음과 같은 문제가 있다.
1. 5x5 필터는 연산 비용이 크다.
2. 풀링 후에도 채널 수는 유지되기 때문에 stage마다 출력 크기가 증가한다.
이러한 문제들을 해결하려면 비용이 많이 드는 연산 전에 1x1 합성곱으로 차원을 줄이는 것이다.
전체 Inception 네트워크는 위에서 설명한 구조를 계층적으로 쌓고
중간중간 stride=2의 max pooling으로 feature map을 절반으로 줄인다.
5. GoogLeNet
Inception 모듈 내부를 포함한 모든 CNN 연산은 ReLU 함수를 사용한다.
입력은 RGB 채널에서 평균이 제거된 224x224이고 레이어는 22개의 층, 풀링까지 포함하면 27개의 층이다.
그리고 독립적으로 구성된 Inception 구조는 100개로 구성되어있다.
최종 분류 전에는 평균 풀링과 선형 계층까지 추가했다.
깊은 네트워크 구조로 인해서 역전파 문제가 우려되기 때문에 중간 레이어에 보조 분류기 (anxiliart classifier)가 삽입됐다.
보조 분류기는 중간 특징도 판별력 있게 학습하고 gradient 신호 강화, 정규화 효과를 가지고 있다.
보조 분류기의 구조는 다음과 같다.
1. 5x5 필터 크기 stride=3의 평균 풀링 레이어
2. 128개의 필터를 닺는 1x1 합성곱 (차원 축소)
3. 1024 유닛의 Fully Connected Layer
4. dropout 0.7
5. 선형층 + Softmax
6. Training Methodology
훈련은 비동기 확률적 경사 하강법(asynchronous SGD) 과 모멘텀 0.9를 사용했고 고정된 learning rate를 사용했다.
9. Conclusions
컴퓨터 비전을 위한 신경망을 향상시키는 방법은 최적의 희소 구조를 밀집 구성으로 근사하는 것이다.
이 방법은 깊이가 얕고 좁은 네트워크에 비해 계산의 증가를 줄이면서 품질을 크게 향상시킨다.
비슷한 깊이와 폭을 가진 고비용의 네트워크를 사용하는 것과 유사한 성능을 낼 수 있을 것이다.