Going deeper with convolutions
2014년 이미지넷 분류대회에서 우승한 구글넷 모델에 대한 논문이다.
내용은 둘째치고 논문을 읽다보면 부족한 영어실력 때문인지 쉽게 읽히는 글이 있고 어렵게 읽히는 경우가 있다. 이 논문은 익숙하지 않은 단어나 문장 구조가 나와 논문을 읽으면서 내용을 파악하기 어려웠다(사실 실력이 부족해서...). 글 하단에 레퍼런스에 달아 놓은 블로그에 논문에 대해 매우 자세하게 설명하고 있어 읽어 보기를 추천한다.
저자들은 컴퓨터 비전 분야에서 딥 뉴럴넷 구조(deep neural network architecture)를 효율적으로 쌓는데 집중한다. Inception이라고 이름 붙인 모듈을 여러 층으로 쌓으면서도 연산량을 일정한 수준에서 관리할 수 있도록 1x1 콘볼루션으로 연산을 효율화했다. 층이 깊어지면 기울기 소실(gradient vanishing) 문제가 생길 수 있는데, 이를 극복하기 위해 auxiliary classifier 구조를 중간에 두었다.
신경망 모델은 일반적으로 깊이(level)와 너비(width)가 커질수록 강력해진다. 더 많은 정답이 있는 데이터(labeled data)로 학습하는 것도 성능을 개선하는 방법이다. 그렇지만 모델의 규모가 커지면 학습해야하는 파라미터 수가 많아지고 제한된 수의 데이터셋에서 오버피팅의 위험이 있다. 질 좋은 데이터셋을 구축하는 비용이 많이들기도 한다. 그리고 모델이 커질수록 학습에 필요한 리소스의 양은 훨씬 더 많이(quadratic increase) 필요하다. 이를 해결하기 위해서는 모델의 구조를 완전히 연결된 구조에서 희소하게 연결된 구조로 변경해야한다. 층과 층끼리 통계적으로 상관있는(correlated) 뉴론이 분석된다면 모든 뉴런을 연결하는 것이아닌 필요한 뉴론만 연결시켜 최적의 모델로 구성할 수 있다. (3장 Motivation and High Level Considerations에 나오는 내용으로 dropout과 다른 것 같고 오늘날에 많이 쓰이는 개념인지 궁금합니다..)
Inception 구조의 주요 아이디어는 최적의 희소 구조(optimal local sparse structure)를 밀집된 컴포넌트(dense component)로 근사하는 것이다. 패치 사이즈 별로 이미지에 연관된 부분이 다를 수 있다. 저자들은 1x1, 3x3, 5x5를 병렬적으로 써서 각 패치에 연관된 지역(correlated unit)을 높이려고 했다(phil-baek님 구글넷 정리 블로그 참조, 생쥐 그림 부분을 보면 이해에 도움이 됩니다). Alexnet논문을 보면 CNN 모델의 층이 깊어질 수록 추상화 정도가 커지고 실제 이미지의 선으로 구분되는 모습에서 벗어나 이미지의 특징들이 남는데(논문에서는 spatial concentration is expected to decrease라고 표현하였다.) 이를 포착하기 위해서 더 높은 층에서는 3x3이나 5x5 콘볼루션을 많이 사용해야 한다.
연산을 줄이기 위해서 인셉션 모듈 안에 1x1 콘볼루션을 도입한다. 직관적으로 생각하면 5차원 벡터 2개가 연결되면 5x5의 연산이 필요한데, 1x1을 각 5차원 벡터에 연결한 후 두 벡터를 더한다면 5x1 + 5x1 = 10의 연산이 필요하다. 저자들은 이와같은 방법으로 인셉션 모듈의 연산량을 줄였다. 그리고 다양한 스케일(scale)의 콘볼루션을 도입해 동시에 다양한 시각정보를 추출하였다.
구글넷 모델을 구성하는 최적의 hyperparameter는 다음과 같다. 모델 전체의 그림은 논문의 7페이지에서 확인할 수 있다.
결과적으로 저자들은 CNN 층을 깊게 쌓으면서도 이미지 분류에 당시 SOTA 성능을 내었다. 일반적으로 층을 깊게 쌓을때 발생하는 부작용인 오버피팅이나 과도한 연산을 방지하는 방법을 제안하였다. 1x1 콘볼루션을 인셉션 모듈에 도입하고 마지막 층에서는 fully connected 로 연결하는 방법이 아닌 평균을 내는 방법으로 softmax 이전 층을 만들어 모델 전체의 연산량을 조절했다.
Reference
Going deeper with convolutions (https://arxiv.org/abs/1409.4842)
https://phil-baek.tistory.com/entry/3-GoogLeNet-Going-deeper-with-convolutions-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0