본문 바로가기
딥러닝

GoogleNet의 인셉션(Inception) 블럭을 뜯어보자

by 데이널 2024. 3. 6.

인셉션 모델은 컨볼루션 신경망 (Convolutional Neural Network, CNN) 아키텍처의 하나로 이미지 인식 및 분류 작업에 널리 사용됩니다. CNN의 발전 방향에서 GooLeNet이 2014년 이미지넷(ImageNet) 대회에서 우승했다는 이야기를 했는데요. 이 모델은 GoogLeNet 모델에서 영감을 받아 발전하게 됩니다.

 

 

Inception 모델 아이디어

Inceptoin이라는 명칭은 영화 ‘인셉션’에서 이름을 가져왔다고 합니다. 눈문에 영화 대사인"더 깊이 가야 해, we need to go deeper” 말을 인용하기도 합니다. 모델은 대부분이 Inception 블럭들의 조합으로 구성되어 있습니다. 

 

이는 신경망의 두가지 이슈 때문입니다. 첫째는 모델을 deep 하게 하면 Overfitting 발생하는 것이고, 둘째는 파라미터가 증가하여 연산량이 증가해 버린다는 문제이었죠. 그래서 생각한 아이디어가 fully connection architecture에서 Sparsely connected architecture로 만들어 주면 어떨까라고 처음에 생각했습니다. 

 

Sparsely connected architecture
Sparsely connected architecture


Sparsely connected architecture는 input Layer(빨간색 표시)에서 output Layer로 나가는 Layer 간 관계를 통계적으로 분석 연관관계(correlation)가 강한 것들끼리만 연결시켜는 방식을 말합니다. 그런데 문제점이 있었습니다. Dense(fully) connect는 행렬연산으로 GPU 병렬처리가 가능하나 Sparse connect는 병렬처리가 안되서 비효율적 연산을 한다는 것이였죠. 


그래서 생각한 것이 Sparse cnnnect는 아니지만, Sparse connect와 유사한 원리이면서 병렬처리도 되는 Sparse structure를 구현하기로 했죠. 그게 바로 Inception Block입니다. 

 

잠깐~! 용어 정리

  • Dense Layer 또는 fully connected Layer(완전연결 계층) : 동일한 의미로 모든 뉴런이 연결되는 계층을 말함
  • Sparsely connected architecture : 완전연결 계층처럼 모든 뉴런에 연결하는 것이 아니라 관계가 있는 몇 개만 연결하는 계층을 말함
  • Local Spase Structure Conv : 다양한 feature를 뽑기 위해 여러 convolution filter를 병렬로 사용하는 것으로 Inception구조를 말함


Inception Block을 뜯어보자

 

인셉션 블럭 그림을 살펴보면, 높이(192)와 너비(28x28)인 형태로 Channel 축 방향으로 Feature를 추출합니다. 이는 최대한 spase 함을 유지하기 위함입니다. Filter 사이즈가 작으면 위치 정보를 잘 볼 수 있지만 local region에 집착하게 됩니다.  Filter 사이즈가 크면 추상화되지만 세밀한 위치정보 소실되게 됩니다. 


여기서 아이디어는 특징(feature)들과 필터 간의 correlation이 어떻게 분포되어 있는지 알수 없으니 다양한 필터를 조합해 보자는 것이었습니다. 서로 다른 공간적 특성을 반영하자는 거였죠. 그래서 Fiter 작은 것부터 큰 것까지 활용해 조합(cancatenation) 하는 거죠. 각각의 필터들은 다음과 같은 역할을 수행합니다. 

 

Inception 블록


1x1 Conv 

  • 이미지에서 local region끼리는 correlation이 크니까 1x1 filter을 이용
  • 1x1 filter는 하나의 region을 그대로 보내기 때문에 지협적인 부분을 담당

1x1 Conv 3x3 Conv, pad1 & 1x1 Conv 5x5 Conv, pad2

  • 떨어진 이미지 정보와 correlation 반영을 위해 3x3, 5x5 filter를 사용
  • 이 후 구조에서는 3x3 fiter만 사용하는 것으로 발전함
  • 1x1 Conv는 연산량을 줄이기 위해 차원 축소 기능

3x3 MaxPool, pad1 1x1 Conv 

  • 3x3 max pooling이 invariant 한 특성 추출에 성능이 좋았기 때문에 사용
  • 이는 단순히 VGG에서 사용하면서 효과가 좋았기 때문 사용한 것으로 알려짐
  • MaxPool은 채널 수를 조절할 수 없기 때문에 출력 채널수를 맞추기 위해 1x1 Conv 사용

 

Inception 블럭의 대부분이 1x1 Conv가 있다는 것을 알 수 있습니다. 그런데 CNN의 기본적으로 Conv은 1x1 Conv는 아니었습니다. 이 걔념은 어디서 가져온 것일까요?  인셉션 모델은  "Network in Network" (NIN)라고도 불리는 개념을 일부 채택하고 있습니다. 

 

이는 2013년에 Min Lin 등에 의해 제안되었습니다. NIN은 기본적으로 기존의 컨볼루션 신경망 아키텍처에 비선형성을 추가하기 위해 개발된 기법입니다. 어떤 부분을 Inception 모델에 가져왔는지 살펴보도록 하겠습니다. 

 

Network In Network

1. Bottleneck 구조로 특성 확대

NIN은 네트워크 내의 레이어가 특정 패턴을 검출하는 것 외에도 구조적인 특성을 확대하기 위해 1x1 컨볼루션 레이어를 사용합니다. 1x1 컨볼루션 레이어는 네트워크의 차원을 줄이는 bottleneck 구조를 사용합니다. 이는 연산 비용을 줄이고, 효율적인 특성 추출을 가능하게 하죠. 이는 입력 특성 맵의 깊이를 확장시키는 데 도움이 됩니다.  

2. Global Average Pooling (GAP)

NIN은 일반적으로 전체 특성 맵에 대해 전역 평균 풀링(Global Average Pooling)을 수행합니다. 이는 특성 맵의 각 채널에 대해 평균을 계산하고, 이를 이용하여 각 클래스에 대한 확률을 추론합니다. 이는 네트워크의 파라미터 수를 줄이고, 과적합을 방지하는 데 도움이 됩니다.

3. Non-linear Activation

NIN은 활성화 함수로 ReLU를 사용하여 비선형성을 추가합니다. 이는 네트워크의 표현력을 향상시키고, 그레디언트 소실 문제를 완화하는 데 도움이 됩니다.

인셉션 모델은 두가지 큰 특징이 있습니다. 첫 번째는 1x1 컨볼루션이고, 두 번째는 Auxiliary classifier를 통해 깊이 층을 쌓았을 때 발생하는 기울기 소실(vanishing gradient) 문제를 해소했다는 것입니다. NIN 논문에서는 버틀랙(Bottleneck) 구조인 1x1 컨볼루션의 영향을 받았습니다. 그럼 다음 포스팅에서 본격적으로 1x1 Convolution과 Auxiliary classifier를 살펴보도록 하겠습니다. 

 

 

인셉션(Inception) 특징: 1x1 Conv, Auxiliary classifier

인셉션(Inception) 모델의 아이디어와 블럭의 살펴보면서 두 가지 특징으로 1x1 Convolution과 Auxiliary classifier라고 이야기했습니다. 이 글에서는 그 두 가지를 더 자세히 살펴보도록 하겠습니다. 1x1 Conv

bommbom.tistory.com