논문 - Going deeper with convolutions, Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir, Dumitru Erhan Anguelov, Vincent Vanhoucke, Andrew Rabinovich
Abstract
ImageNet Large-Scale Visual Recognition Challenge 2014 (ILSVRC14)에서 classification과 detection을 위한 최첨단 기술 Inception, deep convolution neural network architecture,를 제안한다.
이 아키텍쳐의 주요 특징은 네트워크 내 컴퓨팅 리소스이 활용률을 향상시킨 점이다. 이는 computational budget은 일정하게 유지하면서 네트워크의 깊이와 넓이를 증가할수 있게 설계되었기 때문에 가능하다. 품질 최적화를 위해 Hebbian 원리와 multi-scale processing의 직관에 기초했다.
ILSVRC14에 제출한 모델은 GoogLeNet으로 22계층 deep network이다. classification과 detection 분야로 평가된다.
1. Introduce
최근 3년간 딥러닝, 구체적으로 convolution network의 발전으로 이미지 인식 및 객체 탐지 분야가 빠르게 발전했다.
이러한 발전은 더 강력한 하드웨어, 더 큰 데이터 세트 및 더 큰 모델의 결과일 뿐만 아니라 새로운 아이디어, 알고리즘 및 개선된 네트워크 아키덱쳐의 결과라는 것이다.
(ILSVRC14 2014에 제출된 GoogLeNet은 2년 전에 우승한 Krizhevsky의 아키텍쳐보다 12배 적은 파라미터를 사용해 더 나은 성능을 보였다.
또 주목할 점은 모바일과 임베디드 컴퓨팅의 지속적인 유치로 인해 알고리즘의 효율성, 특히 전력 및 메모리 사용이 점차 중요해진다는 것이다.
따라서 본 논문에서 제시된 심층 아키텍쳐 모델은 15억 번의 연산을 넘치 않도록 설계되었다.
본 논문은 컴퓨터 비전을 위한 효율적인 심층 신경망 아키텍쳐아키텍처(Deep convolution neural network architecture)인 Inception에 초점을 맞출 것이다. 여기서 "deep"은 두가지 의미를 가진다.
1. 새로운 수준의 조직인 "Inception module"을 도입한다.
2. 네트워크의 깊이를 증가시킨다.
Inception 모델은 Arora 등 이론적 연구에 영감과 가이드라인을 얻은, Network-in-Network의 논리적 정점으로 볼 수 있다.
2. Related Work
LeNet-5를 시작으로, Convolution neural network(CNN)은 일반적으로 표준 구조를 가지고 있다. - 쌓인 convolution layer(선택적으로 contrast normalization과 max pooling이 따라온다)는 하나 이상의 fully-connected layer가 뒤따른다.
(이런 기본 설계의 변형은 image classification 문헌에 다양하게 존재하며, MNIST, CIFAR 및 ImageNet classification에서 현재까지 최고의 결과를 보여준다. )
최근 ImageNet과 같은 큰 데이터셋의 경우 layer 수와 사이즈를 증가시키고 dropout으로 overfitting 문제를 해결하는 추세이다.
Max-pooling layer는 정확한 공간 정보의 손실 우려에도 불구하고 , AlexNet과 동일한 convolution 네트워크 아키텍처가 localization, object detection, human pose estimation에 성공적으로 사용되었다.
Cortex-like algorithm은 Inception 모델과 유사하게 다양한 스케일을 처리하기 위해 여러 크기의 고정 Gabor 필터들을 사용한다. 하지만 [15]의 고정 2층 심층 모델과 달리 Inception 모델의 모든 필터는 학습된다. 또한 Inception layer는 여러번 반복된다.(GoogLeNet의 경우22 계층 심층 모델로 구성된다.)
Network-in-Network는 neural network의 표현력을 증가시키기 위해 Lin 등이 제안한 방식이다. convolution layer에 적용할 때, 이 방법은 일반적으로 1X1 convolutional layer가 추가되며 ReLU activation이 뒤따르게 된다. 이를 통해 현재의 CNN 파이프라인에 쉽게 통합할 수 있다. 우리는 아키텍처에서 이 접근 방식을 많이 사용한다.
본 논문에서 1X1 convolutional layer는 두 가지 목적을 갖는다.
1. computational bottlenecks 제거를 위한 차원 축소 모듈로 사용
2. 네트워크 사이즈 제한
이를 통해 큰 성능 저하 없이 네트워크의 깊이뿐만 아니라 폭도 넓힐 수 있다.
Object detection에서 현재 선도적 방식은 Girshick 등이 제안한 R-CNN이다. R-CNN은 전체 detection 문제를 두 가지 하위 문제로 분해한다:
1) 먼저 카테고리를 분류하지 않고 잠재적인 object proposals를 위한 color와 superpixel consistency와 같은 low-level 단서를 활용하고
2) CNN classifier로 해당 위치에서 객체의 카테고리를 분류한다.
이러한 2단계 접근 방식은 low-level에서 bounding box segmentation의 정확성과 CNN의 강력한 classification 능력을 활용한다.
우리는 유사한 파이프라인을 채택했고 성능 향상을 시도해보았다.(더 높은 object bounding box recall을 위한 multi-box prediction과 앙상블)
3. Motivation and High Level Consideration
Deep neural network의 성능을 향상시키는 가장 간단한 방법은 크기를 늘리는 것이다. - 깊이 증가(the number of levels), 폭 증가(the number of units at each level)
이 방법에는 두가지 단점이 있다.
1. 크기가 커질수록 매개변수 수가 증가해, 특히 훈련 데이터셋의 수가 적을 경우 overfitting 되기 쉽다.
(이는 고품질 훈련 세트를 만드는 것이 까다롭고 비용이 많이 들기때문에 bottleneck이 될 수 있다.)
2. computational resource의 사용이 급격히 증가한다.
실제로 컴퓨팅 리소스는 유한하기 때문에, 네트워크 크기를 무차별적으로 늘리는 것보다 컴퓨팅 자원의 효율적인 분배가 중요하다.
위 두 문제를 해결하는 근본적인 방법은 convolution안에서 fully-connected 아키텍처를 sparsely connected 아키텍처로 바꾸는 것이다.
하지만 현재의 컴퓨팅 인프라는 불균형한 sparse 데이터 구조 계산에 매우 비효율적이다. 연산량이 100배가 줄어도 lookup 오버헤드와 cache miss 때문에, sparse metrics로 변형해도 효과가 없다.
계속해서 발전하는 빠른 dense matrix 계산을 가능하게 하는 라이브러리를 사용하면 그 차이는 더 커진다.
대부분의 vision 머신러닝 시스템들은 convolution을 채택해 sparsity를 활용한다. 그러나 convolution은 이전 layer의 패치에 대한 dense connection으로 구현된다.
대칭성을 깨고 학습을 개선하기 위해, ConvNets는 전통적으로 랜덤 하고 sparse 한 connection table을 사용했다. 병렬 컴퓨팅을 최적화하기 위해 트렌드가 다시 fully-connected로 바뀌었다.
이는 아키텍처가 filter level에서 sparsity를 활용하면서 현재 하드웨어를 사용해 dens matrics 계산을 수행할 수 있는지 의문을 갖게 한다.
spase matrix 계산에 관한 많은 문헌에서 sparse matrix를 상대적으로 dense submatrix로 클러스터링 하는 것이 실용적인 성능을 제공한다고 시사한다.
4. Architecture Details
Inception 아키텍처의 주요 아이디어는 convolution vision network에서 최적의 local sparse structure를 dense components를 통해 근사하는 방법을 찾는 것이다. (네트워크를 convolutional block으로 구축하는 것)
우리가 해야 하는 것은 최적의 local construction을 찾고 그것을 반복하는 것이다.
(네트워크 크기를 무차별적으로 늘리면 overfitting과 계산량 증가 문제가 발생한다. 따라서 네트워크를 spase 하게 구성해야 한다.
그러나 sparse structure는 하드웨어 계산에서 비효율적이기 때문에 sparse structure를 dense components로 구성한다.)
Arora 논문은 last layer의 상관 통계를 분석해 상관관계가 높은 것 끼리 그룹화하는 layer-by layer 구성을 제안한다.
(이 클러스터는 다음 계층의 구성요소가 되고 이전 계층의 구성요소와 연결된다.)
우리는 이전 layer의 각 구성요소가 input image의 일부 영역에 해당한다 가정하고, 이것을 filter bank로 그룹화한다,
하위 layer에서 관계 있는 구성요소들이 특정 지역에 집중하게 된다. 한 영역에 많은 클러스터가 집중되고 그것은 다음 계층에서 1X1 convolution로 커버된다. 그러나 더 큰 패치로 다루어지는 공간적으로 분산된 클러스터의 수는 적어지고, 더 큰 영역에 걸쳐 패치의 수는 줄어들 것이다.
Patch alignment issue를 피하기 위해 현재 Inception 아키텍처에서는 1X1, 3X3, 5X5로 필터 사이즈를 제한한다.(편리성을 위해)
제안된 아키텍처는 output filter bank를 가진 모든 layer의 조합으로 단일 output vector를 형성하고 이는 다음 단계의 입력이 된다. 또한 pooling 연산은 convolution network의 성공에 필수적이기 때문에, pooling path를 추가한다.
Inception module이 서로 겹겹이 쌓이면서 출력 상관 통계는 다양해진다:
고차원의 추상화는 상위 layer에서 포착되기 때문에, 공간적 집중도가 낮아져 상위 계층으로 갈수록 3X3과 5X5 convolution layer의 비율이 높아져야 한다.
위 모듈들의 큰 문제는 적은 수의 5X5 convolution이라도, 많은 수의 필터가 있는 convolution layer 위에서 (연산) 비용이 엄청나게 크다는 것이다. (Pooling 연산의 output filter 개수는 이전 단계의 filter 수와 같기 때문에, pooling layer의 출력과 convolution layer의 출력을 합하면 출력수의 증가는 피할 수 없다.)
이 아키텍처는 최적의 sparse strucutre를 포함할 수는 있지만, 매우 비효율적이다.
따라서 두 번째 아이디어가 등장한다:
dimension reduction과 projection을 연산량이 커지는 곳에 적용하는 것이다. (1X1 convolution을 통한 차원 축소)
우리는 대부분에서 신호를 sparse 하게 유지하고 집계할 때만 신호를 압축하려고 한다. 즉, 1X1 convolution을 3X3과 5X5 convolution 전에 연산량 감소를 위해 사용한다. 그 외에도, rectified linear activation을 위해 사용한다.
일반적으로 Inception network는 이 모듈과 max-pooling layer가 서로 쌓여 구성된 네트워크이다. training 단계에서 메모리의 효율을 위해, 하위 layer에서 전통적인 convolution 방식을 유지하고 상위 계층에서 Inception module을 사용했다.
이 아키텍처의 주요 이점 중 하나는 연산량의 큰 증가 없이 각 단계의 요소들을 늘릴 수 있다는 것이다.
(연산량을 크게 증가시키지 않고, 네트워크 크기를 늘릴 수 있다.)
다른 유용한 측면은 시각적 정보가 다양한 스케일로 처리된 후, 다음 단계에서 다른 크기에서 온 feature들을 집계하여 동시에 처리할 수 있다는 직관과 일치한다는 것이다.
5. GoogLeNet
GoogLeNet의 구조는 다음 테이블에서 볼 수 있다.
Inceptioon 모듈 내부뿐만 아니라 모든 convolution은 rectified linear activation(ReLU)을 사용한다.
recption field의 크기는 224x244이다.(mean subtraction을 적용한 RGB color channel을 사용)
"#3x3 reduce"와 "#5x5 reduce"는 3x3, 5x5 convolution 전에 사용되는 reduction layer의 1x1 filtet 개수를 의미한다.
pool proj는 내부 max pooling 다음에 있는 projection layer의 1x1 fiter 개수를 의미한다.
이 projection/reduction layer 모두 ReLU을 사용한다.
rectified linear activation(ReLU, 정류 선형 유닛): 입력값이 0보다 작으면 0으로 출력, 0보다 크면 입력값 그대로 출력하는 유닛 |
이 네트워크는 계산 효율성과 실용성을 염두하여 설계되었으며, 컴퓨팅 리소스가 제한적인 개별 장치에서도 동작할 수 있다.(특히 메모리 공간이 적은 장치)
네트워크 깊이는 22 layers이다.(pooling을 포함하면 27 layers) 전체 네트워크에 사용된 layer의 수는 100개이다. 이는 머신러닝 인프라 시스템에 따라 다르다.
Network-in Network에 기초하여 classifier 이전에 average pooling을 사용했지만, 구현에서는 linear layer를 추가했다.
네트워크의 큰 깊이로 인해 모든 layer로 back propogation이 가능할지가 문제였다.
한 가지 흥미로운 인사이트는 상대적으로 깊이가 얕은 네트워크의 강력한 성능은 네트워크 중간 layer에서 생성된 feature가 매우 차별적이어야 한다는 것을 시사한다.
따라서 중간 계층에 보조 classifier를 추가해 classifier의 하위 단계에서 차별화를 추구하고, 역전파되는 gradient 신호를 증가시키고, 추가적인 정규화를 기대한다.
보조 분류기를 포함한 네트워크 구조는 다음과 같다:
- filter size 5x5, 스트라이드 3인 average max pooling layer([4a]는 4x4x512, [4d]는 4x4x528 출력을 낸다.)
- 128개 filter를 가진 1x1 convolution(dimension reduction과 ReLU 목적)
- 1024개 유닛과 ReLU activation을 가진 fully-connected layer
- dropout 출력 비율이 0.7인 dropout layer
- classifier 역할의 sortmax loss linear layer(1000개 클래스를 예측)
6. Training Methodology
소량의 모델과 데이터 병렬화를 사용해 DistBelief 분산 머신러닝 시스템을 사용하여 네트워크를 training 했다.
이미지 샘플링 방법:
크기가 이미지 영역의 8%와 100%에 고르게 분포되어있고 가로 세로 비율이 3/4와 4/3 사이에서 랜덤하게 선택된 다양한 크기의 패치를 샘플링한 것이 좋은 성능을 보였다.
또 Andrew Howard의 photometric distortions이 overfitting을 방지하는데 유용하다는 것을 발견했다.
7. ILSVRC 2014 Classification Challenge Setup and Results
8. ILSVRC 2014 Detection Challenge Setup and Results
(그냥 결과의 나열이라 제외함)
9. Conclusions
본 논문의 결과는 dense building block으로 근사한 최적의 sparse structure로 컴퓨터 비전을 위한 neural network 개선이 가능함을 보여준다.
이 방법의 장점은 상대적으로 얕은 네트워크에 비해 계산량의 큰 증가 없이 상당한 성능 증가를 보인다는 것이다.
또 이러한 접근법은 sparser architecture로 가는 것이 실현 가능하다는 증거를 보여준다.
리뷰
Motivations/Problems
Deep neural network의 성능을 향상을 위해 네트워크 깊이/폭을 늘려야 하는데, 이는 매개변수의 증가로 overfitting의 위험이 높아지고 컴퓨팅 리소스 부족의 문제가 발생한다.
Key ideas
새로운 심층 컨볼루션 신경망 아키텍처인Inception 네트워크를 제안
1. 네트워크 내 fully-connected 아키텍처 대신 sparse structure 사용
2. sparse structure 계산의 비효율을 해결하기 위한 1x1 convolution 사용 (dimension reduction)
Design
*4. Architecture Detai에 자세히 기술되어 있음
Performance
GoogLeNet은 AlexNet보다 12배 적은 개수의 parameter를 사용하여 더 좋은 성능을 보였다.
참고문헌:
Going deeper with convolutions, Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir, Dumitru Erhan Anguelov, Vincent Vanhoucke, Andrew Rabinovich