deep neural networks의 성능 올리는 방법 : depth 늘리기 & width 늘리기
Bottleneck(모델의 성능 향상에 방해가 되는 문제) 발생

computational resources의 증가
bottleneck 문제와 연산자원 해결책: fully-connected ➡️ sparsely connected 아키텍처로 가는 것.
large dataset의 확률분포를 깊고 sparse한 deep neural network로 표현할 수 (representable)하다는 가정에서 출발
최적의 신경망 구조를 한 층씩 단계적으로 만들 수 있음 (layer by layer)
각 층을 만들 때 이전 층에서 출력이 비슷한 뉴런들을 묶어서 새로운 층을 구성하면 뉴런들을 효과적으로 그룹화할 수 있고, 드문 연결을 유지하면서 신경망을 더 효율적으로 설계할 수 있다.
그러나 현재의 computing infrastructures 이러한 sparse한 구조를 연산하는데 매우 비효율적임
산술 연산의 수를 100배로 줄여도 overhead of lookups(데이터를 찾는 작업) 나 cache misses(캐시에서 데이터를 찾지 못해 메모리에서 가져오는 상황) 가 상당함
단순히 연산량을 줄이는 것만으로는 성능이 좋아지지 않으며, 데이터 접근 효율성도 중요.
CPU나 GPU는 밀집 행렬(dense matrix) 연산(multiplication)을 매우 빠르게 수행할 수 있도록 최적화되어 있음
그러나 non-uniform sparse 모델(비균일한 희소 모델, 즉 데이터가 일부는 밀집하고 일부는 희소한 형태)은 이런 최적화된 방식에 맞지 않아 sophisticated(정교한) engineering과 computing infrastructure가 필요.
전통적인 ConvNets에서는 랜덤하고 희소한 연결을 사용하여 대칭성을 줄였으나 최근에는 병렬 컴퓨팅 최적화를 위해 fully-connected로 돌아섬
인셉션 아키텍처는 1x1, 3x3, 5x5 필터와 같은 여러 크기의 필터를 병렬로 적용해 다양한 크기의 특징을 추출함. 이 방식을 통해 중요한 특징을 놓치지 않으면서도, 모든 가능한 연결을 사용하는 방식(FC layer)보다 계산량을 줄였음.
Inception : sparse structrue + dense readily-available component 가 효과적임을입증함
symmetry (대칭성)는 뉴런 간의 연결이나 학습 방식이 지나치게 규칙적이고 반복적인 상태. 대칭성이 높으면, 네트워크의 뉴런들이 비슷하게 학습되는 경향이 있어 학습의 다양성이 떨어지고, 이를 통해 더 복잡한 특징을 학습하는 데 어려움이 생길 수 있음.
모든 원소가 0이 아닌 값으로 채워진 행렬.
예: [1, 2, 3, 4.5, 6, 7, 8, 9]
데이터를 메모리에 전체적으로 저장하며, 저장 공간이 많이 필요함.
데이터가 거의 빈 공간 없이 채워져 있는 경우.
대부분의 원소가 0인 값으로 구성된 행렬.
0이 아닌 값과 그 값의 위치만 저장하여 메모리 절약 가능. 메모리를 효율적으로 사용하며, 데이터의 빈 공간이 많은 경우에 적합.

팀명 선정: ILSVRC14 대회에서 팀명으로 "GoogLeNet"을 선택. 이는 Yann LeCun의 LeNet-5 네트워크에 대한 경의를 표한 것임.
GoogLeNet 정의: GoogLeNet은 대회 제출에 사용된 Inception 아키텍처의 특정 구현을 가리킴.
Ensemble에 추가된 깊고 넓은 Inception 네트워크: 약간 성능이 떨어졌으나, 앙상블에 추가했을 때 결과가 조금 향상됨. 이 네트워크에 대한 자세한 내용은 생략함.
성공적인 인스턴스: Table 1에서 GoogLeNet의 가장 성공적인 인스턴스를 설명함.
Ensemble 모델 구성: 앙상블의 7개 모델 중 6개는 동일한 토폴로지(다른 샘플링 방법 사용)를 가짐.
모든 convolution: Inception 모듈 내부를 포함하여 모든 convolution 레이어는 ReLU 활성화를 사용함.
receptive field: 네트워크의 수용 영역 크기는 224x224로, RGB 색상 채널을 사용하며 평균을 뺌.(RGB 채널의 각 평균값을 계산하여, 각 픽셀 값에서 해당 평균을 빼주는 정규화로 전처리 했음)
“#3x3 reduce”와 “#5x5 reduce”: 3x3과 5x5 convolution 전에 사용되는 1x1 필터 수를 의미함.
pool proj 열: 내장된 max-pooling 레이어 후에 오는 projection 레이어에서 사용되는 1x1 필터 수를 나타냄. projection 레이어는 max-pooling 이후의 출력에 1x1 convolution을 적용하여 채널 차원을 줄이거나 변환하는 역할을 함. 이를 통해 연산 비용을 줄이고, 다음 레이어로 넘기는 데이터의 크기를 조절하여 네트워크 효율을 높임.
모든 축소/투영 레이어 (Reduction/Projection layers): "축소(reduction)"와 "투영(projection)"이 이루어지는 모든 1x1 convolution 레이어들도 ReLU 활성화 함수를 사용함. 이는 이 레이어들이 비선형성을 유지하여 다양한 패턴을 효과적으로 학습할 수 있도록 돕기 위함임.
네트워크 설계 목표: 계산 효율성과 실용성을 고려하여 설계되었으며, 메모리가 적은 장치를 포함한 개별 장치에서도 추론이 가능하도록 함.
깊이: 파라미터가 있는 레이어만 세면 22층이며, pooling을 포함하면 27층. 전체 레이어 수는 약 100개지만, 이는 머신 러닝 인프라에 따라 달라짐.
Average Pooling: 분류기 이전에 average pooling을 사용하여 fully connected 레이어를 대체함. 이를 통해 top-1 정확도가 약 0.6% 향상됨. (각 특징 맵의 평균을 계산해 최종 출력층으로 전달)
드롭아웃: fully connected 레이어를 제거한 후에도 드롭아웃 사용은 필수적임.
보조 분류기(Auxiliary Classifier): 네트워크의 상대적으로 큰 깊이로 인해 모든 레이어를 통해 효과적으로 그래디언트를 역전파할 수 있도록 보조 분류기를 사용함.
추가된 네트워크의 정확한 구조 (보조 분류기 포함):
Average Pooling Layer:
1x1 Convolution:
Fully Connected Layer:
Dropout Layer:
Linear Layer with Softmax Loss:
Classifier: Softmax 손실 함수를 사용하는 linear 레이어로, 메인 분류기와 동일하게 1000개의 클래스를 예측함.
이 보조 분류기는 학습 시에만 사용되며, 추론 시에는 제거됨.

Distributed Training System
Training Algorithm
Polyak averaging:딥러닝 모델의 가중치(weight)를 업데이트할 때 여러 에포크(epoch) 동안 얻어진 가중치의 평균 사용하는 방법. 훈련 데이터에 과적합(overfitting)될 가능성을 줄이고 더 일반화된(generalized) 모델을 생성.
Image Sampling Methods
샘플링 방법
랜덤 인터폴레이션 방법
비동기 확률적 경사하강법 (Asynchronous Stochastic Gradient Descent):
샘플링 (Sampling):
포토메트릭 왜곡 (Photometric Distortion):
인터폴레이션 (Interpolation):
ILSVRC 2014 분류 챌린지: 이미지넷 계층의 1000개 클래스 중 하나로 이미지를 분류하는 대회. 훈련 데이터 약 120만 장, 검증 데이터 5만 장, 테스트 데이터 10만 장으로 구성됨. 성능은 top-1 정확도와 top-5 오류율로 평가되며, 랭킹은 top-5 오류율로 결정됨.
GoogLeNet 대회 참가: 외부 데이터 없이 훈련된 GoogLeNet을 사용하여 참가함. 성능 향상을 위해 테스트 시 7개의 GoogLeNet 모델을 앙상블하고 다양한 크롭 방식을 사용함.
주요 테스트 방법:
최종 결과: 검증 및 테스트 데이터에서 top-5 오류율 6.67%로 1위 기록.
ILSVRC 검출 과제: 200개의 가능한 클래스 중 이미지 속 객체에 바운딩 박스를 생성하는 작업.
GoogLeNet의 접근 방식:
주요 성능 비교:
외부 데이터 사용:
단일 모델 성능 비교 (Table 5):
LSVRC 대회에서는 localization 데이터가 제공되는데, 이는 객체의 정확한 위치를 나타내는 바운딩 박스 정보가 포함된 데이터이다. 이 데이터를 사용해서 모델이 이미지를 분류할 뿐만 아니라, 객체가 이미지 내에서 정확히 어디에 위치하는지를 학습할 수 있다.
많은 팀들이 localization 데이터를 모델의 사전 학습(pre-training)에 사용한다. 모델이 본격적으로 검출 데이터로 학습을 시작하기 전에, 분류나 위치 정보를 포함한 데이터를 통해 기초적인 특징을 먼저 학습하는 것이다.
하지만 GoogLeNet 팀은 localization 데이터를 사용하지 않고 검출 데이터를 바로 학습에 사용하고도 6개의 ConvNet 앙상블과 Inception 모델을 활용한 최적화로 높은 성능을 기록했다고 자랑하고 있다.
dense building block을 활용하여 최적의 sparse structure 구현
depth와 width 늘리면서 reasonable한 computation 비용
detection 에서도 문맥정보(context)나 bounding box regression 없이 꽤 괜찮은 성능
보다 sparse하고 세밀한 구조를 자동화 방식으로 구축하는 것이 유망한 연구 방향임