Inception Net (GoogLeNet)
- Inception Net은 Google에서 개발한 CNN 아키텍처로, 다양한 크기의 필터를 병렬로 사용하여 여러 특징을 동시에 학습할 수 있는 구조를 도입한 것이 특징입니다. 이 네트워크의 주요 목적은 계산 비용을 효율적으로 줄이면서 깊고 넓은 네트워크를 만드는 것이었습니다.
(a) Inception Module - Naïve Version:
- 구성:
- 이 모듈은 입력을 받아 다양한 크기의 필터(1x1, 3x3, 5x5)를 각각 적용하고, 3x3 Max Pooling도 동시에 적용하여, 모든 결과를 Filter Concatenation 단계에서 결합합니다.
- 여기서 1x1, 3x3, 5x5 Convolution 필터는 서로 다른 크기의 특징을 추출하며, Max Pooling은 중요한 정보를 추출하면서 차원을 축소하는 역할을 합니다.
- 문제점:
- 계산 비용: 이 버전은 다양한 크기의 필터를 한 번에 적용하기 때문에, 특히 5x5 Convolution과 같은 큰 필터를 사용하면 계산량이 매우 커집니다. 또한, 여러 필터를 병렬로 적용하는 구조이기 때문에 메모리와 연산 자원이 많이 요구됩니다.
- 효율성 부족: 차원 축소를 적용하지 않고 필터를 적용하기 때문에, 입력 데이터의 크기가 크다면 매우 많은 연산이 필요합니다. 이는 모델이 커지고 더 깊어질수록 문제가 심화됩니다.
(b) Inception Module with Dimensionality Reduction:
- 구성:
- 이 모듈은 차원 축소 기법을 도입하여 연산 효율성을 개선한 구조입니다. 큰 필터(3x3, 5x5 Convolution)를 적용하기 전에, 1x1 Convolution을 먼저 적용하여 입력 데이터의 채널 수를 줄임으로써 연산량을 줄입니다.
- 예를 들어, 5x5 Convolution을 바로 적용하는 대신, 먼저 1x1 Convolution을 사용해 채널을 줄인 후 5x5 Convolution을 적용합니다. 이를 통해 연산 비용이 크게 감소합니다.
- 마찬가지로 3x3 Max Pooling을 한 뒤에도 1x1 Convolution을 사용하여 차원 축소를 적용합니다.
- 개선된 점:
- 차원 축소: 1x1 Convolution을 통해 채널 수를 줄여 연산량을 크게 감소시킵니다. 이는 특히 큰 필터(5x5)를 적용하기 전에 채널 수를 줄여 효율성을 극대화하는 데 도움이 됩니다.
- 연산 효율성: 이 개선된 버전은 초기 버전에 비해 훨씬 더 효율적인 연산을 가능하게 합니다. Inception 모듈은 병렬로 여러 연산을 수행하므로 연산 비용이 크지만, 차원 축소를 통해 이를 크게 줄일 수 있습니다.
Bottleneck 현상의 정의:
- Bottleneck이란 일반적으로 병목 현상을 의미하며, 시스템의 성능이 특정 부분에서 느려지거나 제한되는 것을 의미합니다. Inception 모듈에서의 Bottleneck은 이러한 병목 현상을 완화하기 위해 등장한 개념입니다.
- CNN에서 큰 필터(예: 3x3, 5x5)를 사용하면 계산량이 기하급수적으로 증가하게 됩니다. 특히 입력 데이터의 채널 수가 많을 경우, 큰 필터를 직접적으로 적용하면 연산량과 메모리 사용이 매우 커집니다.
- 이를 해결하기 위해 1x1 Convolution을 도입하여 채널 수를 먼저 줄여주는 방식이 적용되는데, 이 과정을 Bottleneck이라 부릅니다.
- Inception 모듈:
- 네트워크는 여러 개의 Inception 모듈로 구성되어 있습니다. 각 Inception 모듈은 다양한 크기의 필터(1x1, 3x3, 5x5)와 Max Pooling을 병렬로 사용하여 이미지의 다양한 특징을 추출합니다.
- Inception 모듈의 출력은 Filter Concatenation을 통해 결합되고, 다음 계층으로 전달됩니다. 이 모듈형 구조 덕분에 GoogLeNet은 깊고 넓은 구조에서도 효율적으로 연산을 처리할 수 있습니다.
- Auxiliary Classifiers (보조 분류기):
- 그림에서 빨간색 상자 안에 있는 aux1 및 aux2로 표시된 부분이 Auxiliary Classifiers입니다.
- Auxiliary Classifiers는 GoogLeNet이 네트워크의 중간 층에서도 예측을 수행할 수 있도록 도와주는 작은 분류기입니다. 이들은 주 분류기와 별개로 동작하며, 네트워크의 중간에서 출력된 피처맵을 사용해 학습을 돕습니다.
- 역할:
- Gradient Vanishing 문제 완화: 네트워크가 매우 깊을 경우, 역전파(Backpropagation) 과정에서 발생하는 기울기 소실(Gradient Vanishing) 문제를 완화하는 데 도움을 줍니다. Auxiliary Classifiers는 중간층에서도 기울기를 계산해 줌으로써 네트워크의 학습이 효과적으로 진행되도록 도와줍니다.
- 학습 가속화: 이 보조 분류기는 학습이 중간에 수렴되지 않도록 하여, 최종 출력에만 의존하지 않고 네트워크가 더 빠르게 학습할 수 있도록 돕습니다.
- Regularization: 보조 분류기들은 주 분류기가 과적합되지 않도록 정규화 효과를 제공할 수 있습니다. 이는 주 분류기의 과적합을 방지하는 데 도움을 줍니다.
- Main Classifier (주 분류기):
- 네트워크의 마지막에 위치한 Main Classifier는 최종 출력 계층으로, 네트워크가 모든 Inception 모듈을 거친 후 Softmax 함수 등을 통해 최종 클래스를 예측하는 역할을 합니다.
- 최종 출력은 주로 이 Main Classifier에서 이루어지지만, 앞서 설명한 Auxiliary Classifiers도 추가적인 예측을 수행하여 학습 과정에 기여합니다.
- Pooling Layers:
- Max Pooling 층은 Inception 모듈 사이사이에 위치하여 공간적 차원을 줄이고, 불필요한 정보를 제거하면서 중요한 특징만을 추출하는 역할을 합니다.
- 이 Pooling 층은 네트워크의 깊이를 증가시켜 더 복잡한 특징을 학습할 수 있도록 돕습니다.
네트워크 흐름:
- 초기 입력 이미지는 Convolutional Layer와 Pooling Layer를 거친 후, 여러 Inception 모듈로 연결됩니다.
- 각 Inception 모듈은 다양한 크기의 필터와 Pooling 연산을 사용해 특징을 추출하고, 그 결과는 Filter Concatenation으로 결합됩니다.
- 중간의 Auxiliary Classifiers(aux1, aux2)는 중간에 있는 출력 값을 사용해 추가적인 분류를 수행하며, 기울기 소실 문제를 완화하고 학습을 안정화합니다.
- 마지막 Main Classifier는 모든 Inception 모듈을 거친 후 최종 분류 결과를 출력합니다.
'딥러닝 > 이론' 카테고리의 다른 글
NLP 이론 정리 (0) | 2024.10.08 |
---|---|
Computer Vision - 02. Advanced CNN Models(VGG16) (0) | 2024.09.30 |
1. 퍼셉트론 (0) | 2024.09.26 |