Going Deeper with convolutions(GoogLeNet이라고 많이 알려져 있는 network의 원 논문)
# ABSTRACT
본 논문에서는 2014 ILSVRC 대회에서 classification(분류)와 detection(감지)를 위한 새로운 기술의 설정을 담당을 제안한 Inception이란 이름의 CNN(convolutional neural network) Architecture을 소개한다. 이 Architecture의 주요 특징은 네트워크 내부에서의 계산 활용도 향상이다. 컴퓨터의 자원 사용을 일정하게 유지하면서 네트워크의 depth와 width(깊이와 폭)을 늘릴 수 있게 세밀하게 설게되었고, 성능을 최적화하기 위해 architectural decision을 Hebbian 원칙과 다중 스케일 처리를 기초로 하였다. ILSVRC14에 제출된 22 layer의 딥러닝 네트워크를 GoogleNet이라 부르며, 이 네트워크의 성능은 classification과 detection에서 평가된다.
# INTRODUCTION
지난 3년 동안 딥러닝, 구체적으로 CNN 기술의 발전으로 인해 이미지 인식 및 물체 감지 기술이 급격하게 상승되어 왔다. 이러한 진전의 데부분은 더 강력한 하드웨어, 더 큰 데이터셋, 터 큰 모델 뿐만 아니라, 주로 새로운 아이디어, 알고리즘 및 향상된 네트워크 아키텍처의 결과이다. ILSVRC2014에서 상위 수상자들은 주어진 데이터 세트 외에 새로운 데이터 소스를 사용하지 않았다. GoogleNet은 2년 전 우승 모델보다 12배 적은 매개변수를 사용하면서도 훨씬 정확하다. Object detection(물체 감지)의 가장 큰 이점은 더 큰 모델의 활용이 아니라 CNN 알고리즘과 고전적인 Computer Vision의 시너지로부터 비롯된다.
다른 주목할만한 요소는 모바일과 embedded 컴퓨팅에서 알고리즘의 전력이나 메모리 사용에있어서 효율성이 중요하다는 점이다. 이 논문에서 제시한 아키텍쳐는 정확도의 고정성보다는 이러한 요소를 포함시켰다. 대부분의 실험에서 모델은 추론 시 15억번 이하의 연산과정을 유지하도록 설계되어 순수한 학문적 호기심에서 끝나지 않고 합리적인 비용으로 대규모 데이터 셋에서 실제 활용될 수 있다.
이 논문에서는 Inception이라 명명된, 효율적인 딥러닝 architecture에 초점을 맞춘다. 논문에서 단어 ‘deep’은 여러 가지 의미를 갖는다. 첫 번째는 Inception module의 형태로 새로운 레벨의 구조를 도입하는 의미이며, 두 번째는 네트워크의 깊이가 깊어졌다는 뜻이다. 이 Architecture의 장점은 ILSVRC2014 분류 및 감지 문제에 대해서 실험적으로 검증되며, 최신 기술들을 크게 능가한다.
# RELATED WORK
LeNet-5로부터 시작해서, CNN은 하나의 convolution layer가 쌓이고 그 위에 1개 또는 그 이상의 fully-connected layer가 쌓이는 표준적인 구조를 가지고 있다. 이 기본 설계의 변형은 image classification에서 널리 퍼져 있으며, MNIST, CIFAR, ImgaeNet classification 문제에서 최고의 결과를 도출한다. ImageNet과 같은 대규모 데이터셋의 경우 최근 추세는 layer 수와 크기를 늘리는 동시에 dropout을 사용하여 과적합 문제를 해결하는 것이다.
max-pooling layer가 공간 정보의 정확성을 손실할 수 있다는 우려에도 불구하고, AlexNet은 localization, object detection, human pose estimation 등의 분야에 성공적으로 채택되었다. 영장류 시각피질의 신경과학 모델에서 영감을 받아 Inception 모델과 유사하게 여러 scale을 조작하기 위해 다양한 크기의 고정된 Gabor filter를 사용한다, 그러나, Robust object recognition에서는 모델의 2겹의 layer가 고정되어 있어서 Inception model의 모든 filter가 학습된다, 또한, Inception layer들은 수없이 반복되어 GoogleNet의 경우 22 layer deep 모델로 연결된다.
*Gabor filter : 외곽선을 검출하는 기능을 하는 필터(출처 : https://blog.naver.com/windrevo/222229353255)
Network-in-Network는 신경망의 표현력을 증가시기 위해 제안된 방식으로, Convolution layer에 적용할 때, 1x1 convolution layer 뒤에 linear activation을 이어붙여 구현하여 CNN에 쉽게 적용 가능하다. GoogleNet은 이를 기반으로 하지만, 1x1 convoultion은 두가지 목적을 가지고 있다. 가장 큰 목적은 모듈 차원의 축소로 네트워크 연산을 감소시키는 bottleneck 현상을 제거할 수 있다. 두 번째는 신경망 깊이를 깊게할 뿐만 아니라 성능저하 없이 네트워크의 폭을 제한한다.
*bottleneck : 일련의 단계를 따르는 시스템에서 일의 진행이 정체되어 전체 효율을 저해시키는 프로세스
현재 Object detection에서 선도적인 접근 방식은 Regions with Convolutional Neural Networks(R-CNN)이다. R-CNN은 전반적인 감지 문제를 두 가지 하위 문제로 분해한다.
먼저, Category-agnostic(범주 무관) 방식으로 색상 및 superpixel의 일관성과 같은 낮은 수준의 신호를 활용하고 이후에 CNN classifier를 통해 해당 위치에서의 객체의 class를 식별해낸다. 이러한 2단계 접근 방식은 낮은 수준의 단서를 통해 최첨단의 CNN classification 능력을 활용한다. GoogleNet에서는 detection을 위해 비슷한 파이프라인을 사용했지만 각 단계에서의 성능향상을 위해 multi-box prediction과 앙상블 접근법을 탐구했다.
# Motivation and HIgh Level Consideration(탄생 배경)
딥러닝의 성능을 끌어올리는 가장 간단한 방법은 크기를 증가시키는 것이다. 이는 네트워크의 깊이(level 수)와 넓이(각 level에서의 unit 수)를 증가시키는 것을 포함한다. 이는 더 높은 효율로 모델을 훈련시키기 좋은 방법이지만 두 가지 치명적인 약점을 가진다.
더 큰 사이즈는 더 많은 parameter 수를 뜻하고, 이는 학습 데이터의 labeled example 수가 제한되어있다면 overfitting되기 쉽다. Figure 1과 같이, ImageNet에서 시각화된 시각 범주를 구별해야 될 경우 bottleneck 현상이 발생할 수 있다.
다른 단점은 컴퓨터 자원양이 급격하게 증가한다는 것이다. 예를 들어 2개의 convolution layer가 연결되었을 경우, 필터 수가 균일하게 증가할 때 그 결과는 제곱하여 커질 것이다. 만약 대부분의 가중치가 0에 가까워 추가된용량이 비효율적으로 사용될 경우 많은 계산들이 낭비될 것이다. 실제로 컴퓨터 예산은 유한하기 때문에 품질을 높이기 위해 무분별한 크기 증가보다 예산의 효율적인 분배가 선호된다.
두 가지 문제를 해결하는 근본적인 방법은 fully-connected layer에서 sparsely connected layer로, 심지어 convolution layer 내부로 이동하는 것이다. Arora의 연구에서 그들의 결과는 데이터셋의 확률분포가 크고 spare한 deep neural network에 의해 대표된다면, 최적의 네트워크는 마지막 layer의 활성화의 상관관계를 분석하고, 상관관계가 높은 output을 가진 뉴런을 clustering함으로써 계층별로 구성될 수 있다는 것을 보여준다. 물론 엄격한 수학적 증명은 어렵지만, Hebbian 법칙과 공명한다는 사실은 실제 상황과 같이 덜 엄격한 조건에서도 적용할 수 있음을 뜻한다.
오늘날의 컴퓨터는 불균일한 sparse 데이터 구조의 수치 계산에 있어 매우 비효율적이다.
연산의 수가 100배 감소하더라도, lookup과 cache miss의 지배적인 영향으로 희소 행렬로 전환해도 유의미한 효과를 보기는 힘들다. CPU나 GPU 하드웨어의 세부 정보를 활용하여 매우 빠른 속도의 연산을 통해 이러한 격차는 더 벌어지게 된다. 또한, 불균일 희소 모델(non-unifiorm sparse model)은 정교한 엔지니어링과 컴퓨터 인프라를 필요로 한다. 현재 많은 머신러닝들은 convolution을 사용하여 공간에서의 희소성을 활용한다, 그러나, convolution은 이전 layer의 patch에 대한 조밀한 연결의 집합으로 구현된다. Convnets은 학습을 개선하기 위해 무작위 및 희소 연결 테이블을 사용해왔으며, 컴퓨팅을 최적화하기 위해 다시 전체 연결로 추세를 바꿨다. 이러한 구조의 균일성과 많은 수의 필터 및 더 큰 배치 크기로 인해 효율적인 고밀도 계산이 가능하다.
*cache miss : 캐시 메모리에 찾는 데이터가 존재하지 않음
이는 필터 수준에서 추가적인 희소성을 사용하지만 고밀도 행렬에 대한 계산을 통해 현재의 하드웨어를 활용하는 구조에 대해서는 의문을 제기한다. 희소 행렬에 대한 문헌은 희소 행렬을 상대적으로 밀도가 높은 하위 행렬로 clustering하는 것이 실용적임을 보여준다.
Inception 아키텍처는 vision 네트워크에 대해 희소 구조를 근사하고 조밀하게 쉽게 사용할 수 있는 연구로부터 시작되었으며, localization과 객체 탐지에 있어서 유용함을 확인해왔다. 이 구조가 vision 분야에서 큰 성과를 이뤘지만, 이 성능이 구조의 원리에 기인할 수 있는지는 의문이다.
Deep Neural Network에서 뉴런이 많고(넓고), layer가 많으면(깊으면), 인식률이 높아지긴 하지만 과적합과 vanishing gradient problem 등의 문제가 발생한다. 연산량이 많아져서 속도와 메모리 측면에서도 문제점을 가진다. googlenet 발표 당시 이런 문제점을 sparse connection 구조로 해결하는 게 트렌드이다. Dropout방식과 같이 Training 과정에서 일부 노드들의 connection만 고려하였다. Dropout과 달리 관련성이 높은 노드들의 connection만 고려했다. 이 방법을 통해 연산량이 줄어들고 속도가 빨라질 것이라 생각했지만 Network를 sparse하게 만드는 과정에서 더 많은 컴퓨터 자원을 잡아먹는 새로운 문제가 발생했다. (출처 : https://foreverhappiness.tistory.com/113)
최적의 local sparse 구조를 dense component로 근사하는 방법이 바로 inception module이며, GoogleNet은 Inception Module을 통해 이 문제를 해결하려 한다.
# ARCHITECTURAL DETAILS
Inception 구조의 주요 아이디어는 convolution vision 네트워크에서 최적의 local sparse 구조가 어떻게 근사화가 되고, 쉽게 사용될 수 있는 dense component에 의해 커버될 수 있는지에 있다. 논문에서는 마지막 layer의 correlation 통계량을 분석하고 상관성이 높은 단위의 그룹으로 클러스터링하는 layer-by-layer 방식을 제안한다. 이 때의 clustering이 다음 layer의 unit을 이루고, 이전 layer의 unit에 연결된다. 하위 layer에 연결되어 있는 unit은 local region에 집중된다. 이는 하나의 single region에 많은 cluster가 집중되며 다음 계층의 1x1 convolution layer에 의해 커버될 수 있다. 그러나, 더 큰 패치에 대한 convolution으로 커버될 수 있는 cluster가 적을 것이고, 터 큰 region에서는 더 많은 패치의 수가 감소할 것이라 예상될 수 있다. 이러한 patch alignment 문제(패치 정렬 문제)를 피하기 위해 Inception 구조는 1x1, 3x3, 5x5로 필터 크기를 제한하는데, 이는 편의성에 의해 고안되었다. 이러한 구조는 다음 단계에서 input을 형성하는 단일 output 벡터로 연결된 output filter bank를 가진 모든 layer들의 조합을 의미한다. 또한, 그림 2-(a)처럼 CNN에 필수적으로 사용되는 max pooling도 적용된다. 마지막에 이들을 모두 concat을 해주는데 크기가 같아야 하기 때문에 padding을 추가해준다. 위와 같은 방법으로 sparse한 구조를 하나의 dense한 submatrix로 바꾸는 데 성공하였다.
Inception 구조가 서로 겹치면서 쌓이면 correlation statistics는 달라질 수 밖에 없다. 높은 수준의 추상화 특징은 상위 layer에서 포착되기 때문에, 상위 layer로 갈수록 3x3, 5x5 convolution의 비율을 키워 나가야 한다. 문제는 5x5 convolution은 그 수가 적더라도 비용이 엄청 비싸지고, pooling layer 추가 시 이 문제는 더 심화된다. Output 필터의 수는 이전 단계와 같지만 pooling layer의 output과 convolution layer output의 병합으로 output의 수를 필연적으로 증가시킨다. 결과적으로 연산량은 기하적으로 증가하게 된다.
필요한 연산량이 너무 많아 차원의 감소와 예측을 세밀하게 적용해야 한다. 이는 저차원의 임베딩으로도 상대적으로 많은 정보를 포함할 수 있음을 기반으로 하지만, 이런 방향으로의 모델링은 어렵다. 따라서 lxl convolution을 3x3 또는 5x5 convolution 앞에서 사용하여 차원을 축소시킨다. 또한 각 단계 직후 ReLU를 지나게 하여 비선형적 특징을 추가할 수 있다.
일반적으로 Inception 네트워크는 grid 해상도를 절반적으로 감소시키기 위해 stride 2 값을 가지는 max-pooling을 기반으로 한다. 메모리의 효율성으로 인해 전통적인 CNN 방식으로 하위 계층을 유지하면서 상위 계층에만 Inception 모델을 사용하는 것이 유리하다. 그러나 엄밀하지는 않다. 이러한 구조의 이점 중 하나는 계산 복잡도 확대 없이 각 단계에서 unit 수를 늘릴 수 있다는 것이다. 계산 자원의 사용이 개선되었기 때문에 각 단계의 너비는 물론 stage 수 또한 늘릴 수 있다.
요약하자면, 가장 마지막 layer의 correlation 통계를 분석하여 상관관계가 높은 그룹으로 묶어나가는 것을 제안했고, 이렇게 생성된 묶음은 다음 layer의 unit을 만들고 다음 layer의 unit에 연결된다. google은 이전 계층의 각 단위가 이미지의 일부에 해당한다 생각하여 이들을 filter bank로 묶는다. 이 때 input이랑 가장 가까운 layer는 이미지의 특정 부분에 correlated unit이 집중되어 있기 때문에 이는 1x1 convolution layer로 충분히 커버된다. 그러나 커버하려면 너무 많은 패치 크기가 필요한 patch alignment 문제가 발생하기도 한다.
그래서 Inception에서는 편의성에 초점을 맞춰 1x1, 3x3, 5x5를 같이 써서 문제를 해결하고자 했고, pooling 또한 추가했다. layer가 깊어질수록 높은 차원의 추상적인 특징이 잡히기 때문에 3x3, 5x5를 점점 늘려갔다. 이러면 깊어질수록 연산량이 많아지는 문제가 발생하기 때문에 3x3, 5x5를 넣기 전에 1x1 convolution layer를 돌려서 차원을 축소시켰다. 또한, 연산 이후 Relu를 추가해서 비선형적 특징까지 얻을 수 있었다. Googlenet은 기술적 요인으로 인해 Inception 방식으로만 구성하는 것은 아니고, 앞부분의 layer는 전통적인 CNN, 뒷 부분에 Inception 구조를 사용하는 것이 좋다고 한다.
# GoogLeNet
이 논문의 작성자들을 ILSVRC14에 참여하기 위해 GoogLeNet 알고리즘을 작성하였다. GoogLeNet은 기본적으로 Inception을 기반으로 하는데, 더 깊고(deeper, layer 수가 더 많다) 넓은(wider, layer 사이에서 뻗어나가는 node가 더 많다)
상기 table1은 GoogLeNet의 training 과정에서의 차원 축소 과정을 나타낸다. 여기서 receptive field* 의 크기는 mean subtraction(이미지에서 경계 부분을 또렷하게 하는 전처리 과정)을 거친 224 X 224의 RGB 패널이다. “#3x3 reduce”, “5x5 reduce” 등은 축소 레이어(reduction layer)에서 3x3, 5x5 이전에 쓰인 1x1 필터 수를 의미하며, 필터가 클수록
Patch size: 커널이 크기와 간격을 의미한다. 예를 들어, 최초의 convolution에 있는 7x7/2의 의미는 receptive field의 크기가 7x7인 filter을 2픽셀 간격으로 적용한다는 뜻이다.
*receptive field: 출력 레이어의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기
(출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sogangori&logNo=220952339643)
Output size: 얻어지는 feature-map의 크기를 의미하며, 첫 번째 convolution에서는 상기한 7x7 필터를 2픽셀 간격으로 적용하여 112x112x64 크기의 feature map이 출력되었다.
Depth는 연속 적용되는 convolution layer 수를 의미하며, 그 오른쪽의 다양한 필터들에 해당하는 숫자는 차원 축소의 결과를 나타낸다. 예를 들어, inception(4a)에서 이전 max-pooling 단계에서 480개의 feature map을 입력 받아서 1x1 필터를 거치면 192차원으로, 3x3 reduce를 거치면 96차원으로 차원 축소가 발생한다.
GoogleNet은 22개 layer(같은 층의 다른 레이어를 합산 시 약 100개)를 사용하고, 이는 머신 러닝 구조에 따라 달라질 수 있다. 여기에 NIN 구조까지 활용해 average pooling을 시행해주면 GoogleNet의 적용과 fine-tuning이 더욱 용이해진다. 연구팀의 실험 결과, fully-connected layer에 비해 average pooling을 시도했을 때, top-1 정확도(가장 확률 값이 높은 출력 값의 정확도)가 약 0.6% 상승하였다. 다만 더 깊은 network을 사용하기에, back propagation에 문제가 있을 수 있다. 이를 연구진은 전체 layer들에서 중간 층들에 Auxiliary classifier들을 추가하여 중간 단계인 Interception (4a), (4b)등에서 가지를 뻗어나가게 설정하며 이 문제를 해결했다. 학습 단계에서 gradient signal을 증가시켜 back propagation을 용이하게 하며 추가적인 regularization 효과를 주었고, loss를 계산할 때, auxiliary classifier에는 0.3 가중치의 discount weight를 설정하였다.
# Training Methodology
GoogleNet은 DistBelief(J. Dean et al, 2015)를 기반으로 training되었다. 연구진들은 CPU기반으로 etwork를 학습 시켰으나, GPU기반으론 일주일 이내로 학습 가능할 것으로 판단하였다. Training에는 stochastic gradient descent with 0.9momentum을 이용하였고, learning rate는 매 8 세대마다 4%씩 고정적으로 감소하도록 설정하였다. 마지막에는 Polyak averaging (B. T. Polyak et al., 1992)을 사용하여 최종 모델을 결정하였다. 위와 같은 방법으로 생성된 모델들을 몇 달에 걸쳐 training하며 여러 옵션을 추가해보기도 하였고, training data의 crop 수를 변경하며 training도 시도되었다. 여기서 학습한 모델들은 주로 가로세로비가 4:3~3:4사이의 이미지들에서 학습 효과가 잘 나타났다.
# ILSVRC 2014 참가와 결과, 추세
위에서 생성된 모델로 ILSVRC 2014 Competition에 참여하여 120만장의 training data, 5만장의 validation, 10만장의 test data를 이용해 모델을 평가하였고, 7종류의 모델(모두 GoogleNet이지만 세부사항이 다르고 초기 조건은 동일하다) 을 이용하였다. Krizhevsky et al, 2012에 나온 aggressive cropping을 이용하여 이미지들을 256x288x320x352의 4차원 이미지로 재가공한 뒤, 모서리와 가운데 224x224 크기의 이미지와 반전된 이미지를 이용하였다. 즉, 한 이미지를 144개의 crop으로 나누어서 이용하였다. 여기서 aggressive cropping은 일반적으로 필수는 아니다. Final prediction에서는 softmax prob. 을 평균 내어 계산하였다.
대회에서는 200가지의 가능한 이미지 분류들 중에서 bounding box를 형성하는 것으로, 원래 이미지의 실제 분류와 일치하게 예측하면 정분류, 틀리면 오분류로 성능을 평가하였다.
최종적으로, top-5 오차율 6.67%로 2년 전에 발표된 SuperVision의 결과에 비해 오차를 56.5% 감소하는데 성공했다.
여기서 사용된 방법은 R-CNN과 비슷하지만, region classifier로 Inception model이 증강된 형태이다. 또, 위양성(FP, false positive)를 줄이기 위해 superpixel 크기를 2배로 상향하고. 200개 region proposal을 추가하여 coverage 범위를 1%p 향상시켰다. 마지막으로 6개의 앙상블 ConvNets를 각 region을 분류하는데 사용하였다.
이렇게 하여 Mean Average Precision(mAP)기준 2013년 결과에 비해 2배 정도 향상된 결과를 얻었다. 그리고, 또한 대부분 좋은 성능을 내는 모델들 역시 CNN을 사용한 것을 알 수 있다.
# Conclusion
이 연구결과로 이미 완성된 dense한 node들로 모델의 sparse한 부분을 근사해 사용할 수 있는 방법들이 CV를 위한 NN에 이용될 수 있음을 보였다. 이 방법의 가장 큰 장점은, 기존에 비해 계산이 약간 증가함에 비해 상당히 큰 예측 성능을 얻을 수 있다는 것이다(significant quality gain at a modest increase of computational requirements compared to shallower and less wide networks.) 또한, utilizing context나 bounding box regression 없이 neural network를 만들 수 있었고, Inception의 추후 발전에 이용될 수 있을 것이다.
논문 리뷰 참고 블로그들
https://foreverhappiness.tistory.com/113
https://blog.naver.com/tmdwhd619/222897921722
https://blog.naver.com/paragonyun/222914679046
https://blog.naver.com/PostView.naver?blogId=laonple&logNo=221229726012
bskyvision.com/entry/MSCNmean-subtraction-and-contrast-normalization의-이해
[5주차/DL1팀/논문 리뷰] Gated Recurrent Neural Network (0) | 2023.08.09 |
---|---|
[5주차/DL2팀/논문리뷰] LSTM (0) | 2023.08.09 |
[4주차 / DL 1팀 / 논문 리뷰 ] Deep Residual Learning for Image Recognition (0) | 2023.08.03 |
[3주차/DL1팀/논문 리뷰] Batch Normalization (0) | 2023.07.27 |
[3주차/DL2팀/논문 리뷰] Layer Normalization (0) | 2023.07.26 |
댓글 영역