[논문 리뷰] Going deeper with convolutions
Going deeper with convolutions
Abstract
- 인셉션(Inception)이라는 합성곱 신경망 구조 제안
- ILSVRC14에서 분류와 탐지에 SOTA를 제공
- 네트워크 안에서 계산 자원의 효율성을 향상
- 계산량은 일정하게 유지한 채 네트워크의 깊이와 너비 증가
- 질을 높이기 위해 구조는 Hebbian 원리와 multi-scale 처리 직관을 기반으로 했다.
Introduction
- 최근 몇 년간 딥러닝이 발전해오면서 합성곱 신경망은 더욱 견고해졌다.
- 이미지 인지와 객체 탐지는 극적인 속도로 발전했다.
- 강력한 하드웨어, 커다란 데이터셋, 커다란 모델, 신경망 구조에 대한 새로운 아이디어, 알고리즘 덕에 발전할 수 있었다.
- GoogLeNet은 이전 모델들보다 12배 더 적은 파라미터를 사용했지만 더욱 정확하다.
- 알고리즘 효율성 및 전력, 메모리 사용이 매우 중요해지고 있다.
- GoogLeNet 개발에 정확성 말고 이 사항도 반영되었다.
- Inception을 사용해 딥러닝의 효율성에 초점을 맞춘다.
- "deep"이라는 단어를 두 가지 의미로 사용했다.
- Inception 모듈 형태의 새로운 구조를 소개하는 측면
- 신경망의 깊이
- LeNet-5로 시작해서 CNN이 표준 구조가 되었다.
- 정규화와 max-pooling도 수행, 마지막에는 1개 이상의 FC layer
- max-pooling이 정확한 위치 정보의 손실을 일으킨다는 걱정에도 불구하고 컴퓨터 비전 분야에서 성공적으로 사용됨
- 레이어 수와 노드 수를 증가시키는 추세이고 dropout을 사용해 오버피팅을 해결
- 영장류 시각 피질의 뉴런 과학 모델의 영감을 받아 서로 다른 크기의 고정된 Gabor filter를 사용
- 다양한 scale을 다루기 위해
- Inception 모듈과 유사
- Gabor filter에서는 고정된 2개 층의 딥러닝 모델을 사용하는 것과 반대로 Inception에서는 모든 필터가 학습됨
- Network-in-Network는 신경망의 표현력을 향상시키기 위해 제안되었다.
- CNN에 적용할 때 해당 방법은 ReLU에 뒤따르는 1*1 합성곱 층으로 볼 수 있다.
- 현재 CNN 구조에 통합하기 쉽다.
- GoogLeNet에서는 1*1 합성곱 레이어는 아래 목적으로 사용되었다.
- 계산 병목 현상을 없애기 위해 차원 축소를 위해 사용
- 신경망의 크기를 제한
- 이는 엄청난 성능 감소 없이 깊이를 증가시킬 뿐만 아니라 신경망의 넓이를 증가시켰다.
- R-CNN
- 전반적인 탐지 task를 두 단계로 분해
- 우선 색상 및 수퍼픽셀의 일관성과 같은 낮은 수준의 신호를 활용
- 그 후 해당 지역에서 CNN 분류기 사용
- 낮은 수준의 신호로 세분화하는 것의 정확성에 이점이 있다.
- CNN 분류기의 SOTA 달성에도 기여
- 해당 구조로 부터 영감을 받아 multi-box 예측을 진행한 후, 그 접근법들을 앙상블
Motivation and High Level Considerations
- 딥러닝의 성능 향상의 정통법은 모델의 크기를 늘리는 것이다.
- 깊이, 넓이 등
- 이 방법은 두 가지의 단점이 존재
- 커다란 크기는 파라미터 수가 많고 오버 피팅에 빠지게 한다.
- 필요한 계산 자원이 증가
- 위 두 가지의 해결법은 fully-connected를 sparsely-connected로 변환하는 것
- ex. CNN
- 만약 dataset의 확률 분포를 sparse한 신경망으로 표현 가능하다면, 입력 layer에서 출력 layer로 향하는 관계를 통계적으로 분석 후, 연관 관계가 높은 것들만 연결하여 최적의 sparse한 네트워크를 만들 수 있다.
- 하지만 오늘날의 계산 구조는 균일하지 않은 sparse 데이터 구조 계산에 관해서는 매우 비효율적이다.
- 초기에는 대칭성을 깨기 위해 CNN에 sparse connection을 적용했지만, 병렬 컴퓨팅에 최적화하기 위해 fully-connected로 트렌드가 바뀌었다.
- ex) sparse(LeNet), dense(AlexNet~)
- 어느 연구에서는 sparse matrix를 clustering해 상대적으로 dense한 submatrix 만드는 것을 제안
- Inception 아키텍처는 sparse한 구조를 시험하기 위해 시작
- Inception 구조가 컴퓨터 비전에서는 성공적이었지만, 위 원리에 의한 결과인지는 의문이다.
Architectural Details
- Inception 구조의 주요 아이디어는 CNN에서 최적의 local sparse 구조가 어떻게 근사화되고 dense한 요소로 덮일 수 있는지 찾아내는 것에 있다.
- 최적의 local 구성을 찾고 공간적으로 반복하는 것이다.
- convolutional building blocks
- Arora는 마지막 레이어의 상관 통계를 분석하고 그들을 높은 상관관계로 군집화하여 층을 구성하는 것을 제안했다.
- 이전 레이어의 각 단위가 입력 이미지의 일부 영역에 해당한다고 가정하고 이러한 단위는 필터 뱅크로 그룹화
- input layer와 가까울 수록 특정 부분에 correlated unit이 local에 집중된다.
- 단일 영역에 많은 클러스터가 집중되고 1*1 conv layer로 처리 가능
- 하지만 조금 더 넓은 영역의 filter에서 correlated unit의 비율이 높아지는 상황이 있을 수 있다.
- 이를 피하기 위해, 1*1, 3*3, 5*5로 필터 크기를 제한했다.
- 이를 조합하여 단일 출력으로 내뱉음.
- pooling 계산이 합성곱 신경망 SOTA에 필수적이므로 pooling path를 추가한다.
- 추상화 정도는 상위 레이어에서 더욱 높으므로 3*3, 5*5 필터가 상위로 갈수록 더욱 높아져야 한다.
- 5*5 필터라도 필터의 수가 많아진다면 계산 복잡도가 매우 높아질 수 있다.
- pooling이 추가되면 이 문제가 더욱 심화됨
- 이 구조가 최적의 sparse 구조를 다룰 수 있지만 매우 비효율적으로 수행하여 몇 단계 내에 계산 폭이 커짐
- 위 문제 해결을 위해 차원 축소, 투영을 시행
- 1*1 합성곱을 사용해 차원 축소를 진행하고 3*3, 5*5 계산을 수행
- ReLU를 통해 비선형적 특징 추가
- 일반적으로 위 구조를 겹쳐 네트워크 구성
- 가끔 stride 2인 max-pooling 레이어를 사용해 그리드의 해상도를 줄이기도 함.
- 메모리 효율성을 위해, 높은 차원 레이어에서만 Inception 모듈을 사용하고 저차원 레이어에서는 일반적인 CNN 사용
- 과도한 연산량 문제 없이 각 단계에서 유닛 수를 상당히 증가(∵ 차원 축소)
- Visual 정보가 다양한 scale로 처리되고 다음 layer는 동시에 서로 다른 layer에서 특징 추출
GoogLeNet
- 모든 합성곱 레이어에는 ReLU 적용
- receptive field는 224*224, RGB 컬러 채널을 가지며, mean subtraction 적용
- 파라미터가 있는 레이어만 세면 22층, pooling 포함하면 27층으로 구성되었다.
- 분류하기 전에 average pooling과 linear layer 사용
- 깊이가 깊어 오차역전파법이 문제였다.(Gradient Vanishing)
- 네트워크 중간에 Auxiliary Classifier을 추가해 초기 레이어의 역전파된 경사의 양을 증가시켜주고 규제의 효과를 준다.
- 여기서 나온 loss는 0.3만큼 가중치를 곱해 최총 loss에 추가된다.
- Auxiliary Classifier는 추론 시에는 고려하지 않는다.
- AVG Pooling → 5*5 conv(stride 3) → 1*1 conv(stride 1) → FC → FC → Softmax
- dropout: 0.7
Training Methodology
- 0.9 momentum SGD
- lr: 8 epoch 마다 4% 감소
- 가로, 세로 비율을 3 : 4와 4 : 3 사이로 유지하며 본래 사이즈의 8% ~ 100%가 포함되도록 다양한 크기의 patch를 사용
- photometric distortion을 사용
- random interpolation method 사용
- bilinear, area, nearest neighbor and cubic, with equal probability)
Conclusion
- sparse 구조를 dense 구조로 근사화해 성능 개선
- 성능은 대폭 상승하지만 연산량은 소폭 상승