본문 바로가기
딥러닝(Deep Learning)/D&A Deep Session

[D&A Deep Session] 6차시 - 9. GoogleNet

by rahites 2022. 5. 3.

 

# GoogleNet

- 2014년 ILSVRC에서 우승을 한 알고리즘으로 총 22개의 layer로 구성되어 있다. 

- 시간을 줄이면서 더 깊고 효율적인 알고리즘을 만드는 것이 목표이다.

- 크게 Prelayer, Inceptions Layer + Auxiliary Classifier, GAP(Global Average Pooling)으로 나눌 수 있다.

 

GoogleNet 구조

* 1x1 convolution

: GoogleNet의 가장 큰 특징은 1 x 1 convolution을 통해 feature map을 줄이는 것이다.

 

Inceptions Layer에서는 총 4가지의 관점으로 convolution을 진행하였는데, 그 이유는 우리가 주어진 이미지에서 어떤 Filter를 사용할 때 공간의 정보를 많이 담는지를 모르기 때문이다. 하지만 4가지의 관점으로 convolution을 진행할 때 각각의 Feature map은 sparse(0이 많다)하기 때문에 연산과정이 비효율적이게 된다. 따라서 sparse한 Matrix를 dense하게 만드는 것이 목적이 되는데, 이 때 1 x 1 convolution을 모든 convolution 중간에 끼워 넣는다면 전체적인 연산량을 감소시키면서 비선형성 또한 추가할 수 있다. 

 

예를 들어 480장의 14 x 14 Feature map이 있을 때 padding=2, stride=1이라면 (14 x 14 x 48) x (5 x 5 x 480) = 112.9M의 연산 횟수가 필요하다. 하지만 이 때 중간에 먼저 1 x 1 x 480 크기인 16개의 커널로 먼저 convolution을 진행한다면, ( 14 x 14 x 16) x (1 x 1 x 480) + (14 x 14 x 48) x (5 x 5 x 16) = 5.3M로 훨씬 적은 수의 연산만 진행하면 된다. 이를 마치 병의 주둥이와 같이 좁은 곳을 통과한다고 해서 Bottle Neck이라고도 부르고, 이렇게 줄어든 연산량은 네트워크를 더 깊이 만들 수 있도록 도와준다.

 

* Inception layer

: GoogleNet에는 총 9개의 Inception layer가 존재합니다. 이전의 CNN 모델들이 한 층에서 동일한 사이즈의 필터 커널을 이용하여 convolution을 했던 것과 달리 1 x 1, 3 x 3, 5 x 5 크기로 convolution을 하고 3 x 3 크기로 maxPooling을 해준 결과를 쌓아준다. 이는 다양한 종류의 Feature를 도출하는데 도움을 준다. ( NIN 논문의 개념 차용 )

 

* Auxiliary classifier

: 네트워크의 깊이가 깊어질수록 gradient vanishing 문제를 피하기가 어렵다. 가중치를 훈련하는 과정에서 주로 사용하는 역전파 과정에서 가중치를 업데이트를 할 때 사용되는 gradient가 점점 작아져서 0이 되어버리기 때문이다. 이를 극복하기 위해 GoogleNet에서는 네트워크 중간에 FC를 거쳐 학습에서의 오차를 학습할 수 있는 2개의 Auxiliary classifier를 추가하였다. 

 

최종 Output layer부터 먼 곳에 있는 layer의 gradient를 봐주고, 최종 오차에 대한 영향력이 없어지는 것을 막기 위해 0.3 만큼만 사용한다. 이들은 훈련을 할 때에만 사용해주고 테스트시에는 제거한다.

 

* GAP ( Global Average Pooling )

: 이전 층에서 만들어진 feature map들을 각각 평균낸 것을 이어서 1차원 벡터를 만들어 준 것 ( 1차원 벡터를 만들어주어야 최종적으로 이미지 분류를 위한 softmax 층을 연결해줄 수 있기 때문!! )

 

GoogleNet은 FC방식 대신 GAP 방식을 사용한다. 7 x 7 x 1024 -> 1 x 1 x 50176 크기인 기존 FC 방식은 50176 x 1024개의 파라미터(가중치)가 존재함에 비해 GAP 방식은 각 Feature map의 평균을 내기 때문에 파라미터 계산이 필요하지 않다. 

 

 

 

 

* 참고자료

https://bskyvision.com/539

 

[CNN 알고리즘들] GoogLeNet(inception v1)의 구조

LeNet-5 => https://bskyvision.com/418 AlexNet => https://bskyvision.com/421 VGG-F, VGG-M, VGG-S => https://bskyvision.com/420 VGG-16, VGG-19 => https://bskyvision.com/504 GoogLeNet(inception v1) =>..

bskyvision.com

 

댓글