1. GoogleNet 개요
2. 1 x 1 Convolutions
3. Inception 모듈
4. Global Average Pooling
5. Auxiliary Classifier
6. GoogleNet 구조
1 x 1 Convolutions
Inception 모듈
Global Average Pooling
Auxiliary Classifier
논문명 :구글에서 개발한 "Going Deeper with Convolutions"
GoogLeNet
주의깊게 살펴보아야할 네가지
- 1 x 1 Convolutions
- Inception 모듈
- Global Average Pooling
- Auxiliary Classifier
1 x 1 컨볼루션의 의미
1x1 Convolution 사용하지 않을 경우
- 파라미터 계산 참고
- 계산 : 5 x 5 x 256 x 48 + 48 = 307248
1x1 Convolution 사용하는 경우
- 첫번째 레이어 계산 : 1 x 1 x 256 x 24 + 24 = 6168
- 두번째 레이어 계산 : 5 x 5 x 24 x 48 + 48 = 28848
입력과 출력의 사이즈는 동일하지만 학습파라미터의 수가 엄청 큰 차이를 보임.- 1x1 미사용 : 307,248
- 1x1 사용 : 35,016
같은 레이어 층에서 여러개의 커널 사이즈로 컨볼루션을 해주는 역할
AlexNet, VGGNet 등에서는 fully connected (FC) 층들이 망의 후반부에 연결되어 있다. 그러나 GoogLeNet은 FC 방식 대신에 global average pooling이란 방식을 사용한다.
Global Average Pooling (GAP)
네트워크의 깊이가 깊어지면 깊어질수록 vanishing gradient 문제를 피하기 어려워진다. 이 문제를 극복하기 위해서 GoogLeNet에서는 네트워크 중간에 두 개의 보조 분류기(auxiliary classifier)를 달아주었다.
왜 이걸 달아서 성능이 좋은지 논리적인 설명을 찾지못했다. 근데 직관적으로 좋을거같긴해..