GoogLeNet은 Network in Network paper의 영향을 많이 받았다고 한다.
- 1 x 1 conv layer이 추가되며 ReLU activation이 뒤따른다.
- 이는 네트워크신경망의 표현력을 높인다.
- 1 x 1 conv layer의 장점은 아래와 같다.
1. 네트워크 크기 제한
2. 차원 축소
GoogLeNet이 나오게 된 배경에 대해 설명한다.
심층 신경망의 성능을 개선하는 가장 간단한 방법은 크기를 늘리는 것이다.
크기를 늘린다는 것은 depth의 증가(layer의 수 증가)와 width의 증가(각 layer의 유닛 수 증가)
이는 좋은 성능을 낼 수 있지만 두가지 문제가 있다.
- 크기가 커지면 하이퍼파라미터의 수가 많아지는데, 이는 특히 학습데이터의 수가 적을 경우 오버피팅이 일어나기 쉽다.이를 막기 위해 단순히 고품질의 트레이닝 셋을 늘리는 것은 매우 tricky하며 비용이 높아 주요한 병목현상이 될 수도 있다.
- 네트워크가 커질수록 컴퓨팅파워가 더욱 많이 필요하다. 만약 두 conv layer가 연결되어 있다면, 필터의 수가 늘어날때 연산량은 quadratic하게 증가한다.
quadratic?
만약, 3 x 3 Conv filter 개와 3 x 3 x Conv filter 개가 연결되어 있을 시, 이는 3 x 3 x 3 x 3 x x 가 된다. 이는 과 가 동일하다고 가정할 시, 3 x 3 x 와 비슷한 꼴이 되기에 C의 값에 따라 연산량이 quadratic하게 증가하게 된다.
따라서 한정적인 컴퓨팅 자원에서 네트워크 크기를 늘리는 것보다 컴퓨팅 자원을 효율적으로 분배하는 것이 중요하다.
높이, 너비, 채널관점에서의 conv, pooling, 1x1 conv
- convolution : 높이, 너비가 줄어들고, 채널 수를 설정할 수 있다.(padding 고려 X)
- pooling : 높이, 너비만 줄어든다.
높이, 너비를 유지하면서 채널만 줄이려면?
- 1x1 conv filter를 활용가능
위 표에서 # 3X3 reduce와 # 5X5 reduce는 conv layer 앞에 사용되는 1X1필터의 채널 수를 의미한다.
pool proj열은 max pooling layer 뒤에 오는 1X1 필터의 채널 수를 의미한다.
params는 파라미터 갯수를 의미한다.
ops는 전방향 패스동안 필요한 연산 수를 의미한다.
GoogLeNet을 4가지 부분으로 나누어보자