[논문리뷰] Going deeper with convolutions(2014)

My_oyster_house·2024년 11월 3일

0. Abstract

  • 네트워크 내부의 컴퓨터 자원활용 개선
  • 네트워크 내부의 depth(레이어 수)와 width(뉴런 유닛의 수)가 증가하고도 computation 비용은 그대로
  • Hebbian principle & multi-scale processing 덕분

1. Introduction

  • 지난 3년 간(AlexNet 이후 2012,2013,2014 년을 말함) CNN의 발전 덕분에 image classification과 object detection에서 큰 성과가 있었음.
  • powerful hardware나 큰 데이터셋, 큰 모델이 아닌 새로운 아이디어와 알고리즘, 모델 아키텍처 만으로도 큰 성과
  • 구글넷은 아키텍처 만으로 알렉스넷(2012) 보다 12배 적은 파라미터 개수로 더 좋은 accuracy를 기록
  • R-CNN 알고리즘과 시너지를 내며 detection에서도 성과
  • 효율성에서 큰 성과 - real world use가 가능한 합리적인 모델
  • Network in network(2013)와 인터넷 밈에서 deeper network 영감받아 Inception 알고리즘이라고 이름 붙임. Provable Bounds for Learning Some Deep Representations(2013, 이후 Arora’s Bound)에서도 이론적인 영향을 받음.
  • LeNet-5(1998) : 여러 층의 ConV 레이어(필요시 정규화 기법과 맥스풀링)+한 개 층 이상의 FC Layer 구조에서 당연히 영향을 받았다.
  • MNIST,CIFAR,ImageNet 챌린지 관련 논문 등 최근 트렌드는 layer의 수나 사이즈를 증가하고, (그럼 과대적합의 위험이 있으니까)dropout 등의 기법으로 과적합을 방지하는 것이다.
  • Max Pooling은 accurate한 위치정보를 잃을 수 있다는 위험이 있지만, 알렉스넷(classification)을 비롯해서 localization, object detection,human pose estimation 등에 널리쓰이고 있다. Serre의 논문에서 고정된 여러개의 Gabor filter를 써서 multiple scales를 handle 하려고 했음
  • multiple scaled filter를 쓰는 건 Inception도 똑같지만, 인셉션은 learned filter를 쓴다는게 Gabor filter 다른 점이다.
    (Gabor filter는 추출하는 특징이 정해져있는 필터고, 인셉션은 학습하는 필터라는 얘기)
  • object detection 관련해서는 R-CNN을 언급하고 있다. low-level cues에서는 color나 superpixel consistency로 큰 카테고리를 나누고 그 다음에 CNN classifier를 통해 detection을 하는 구조라고 언급하는데 이 부분은 R-CNN 논문을 다시 자세하게 읽어봐야겠다.
  • 인셉션 모델은 R-CNN의 두 구조에 multi-box 예측기법과 앙상블 기법을 추가해 성능을 높였다고 설명

3. Motivation and High Level Considerations

  • deep neural networks의 성능 올리는 방법 : depth 늘리기 & width 늘리기

    • depth는 네트워크의 계층(level) 수를 늘린다는 것이고
    • width를 늘린다는 건 각 level의 유닛의 개수를 늘린 다는 것이다.
    • 그리고 size를 늘린다고하면 depth랑 width를 늘리는걸 통틀어서 말함
  • Bottleneck(모델의 성능 향상에 방해가 되는 문제) 발생

    • Bigger size ➡️ 파라미터 수 ↑ ➡️ 과적합 위험 ↑ 이니까
    • 특히 고품질의 training data 에서 그러함.(시베리안 허스키랑 에스키모 독을 구별하는 어려운 문제 figure1 처럼)
  • computational resources의 증가

    • 컨볼루셔널 레이어 에서 필터의 개수 만큼 연산량은 계속 제곱된다.
    • 2개의 ConV 레이어에서 첫번째 레이어에 N개의 필터가 있다면 N개의 합성곱. 두번째 레이어에서는 M개의 필터가 있다면 연산량은(NMN*M)
    • 0에 가깝거나 0인 weight들이 있다면 계산되는 연산량 만큼 낭비나 마찬가지(웨이트가 0이라는건 아무 영향력이 없다는 뜻이고 아무 정보가 없다는 뜻이니까)
  • bottleneck 문제와 연산자원 해결책: fully-connected ➡️ sparsely connected 아키텍처로 가는 것.

  • large dataset의 확률분포를 깊고 sparse한 deep neural network로 표현할 수 (representable)하다는 가정에서 출발

  • 최적의 신경망 구조를 한 층씩 단계적으로 만들 수 있음 (layer by layer)

  • 각 층을 만들 때 이전 층에서 출력이 비슷한 뉴런들을 묶어서 새로운 층을 구성하면 뉴런들을 효과적으로 그룹화할 수 있고, 드문 연결을 유지하면서 신경망을 더 효율적으로 설계할 수 있다.

  • 그러나 현재의 computing infrastructures 이러한 sparse한 구조를 연산하는데 매우 비효율적임

  • 산술 연산의 수를 100배로 줄여도 overhead of lookups(데이터를 찾는 작업) 나 cache misses(캐시에서 데이터를 찾지 못해 메모리에서 가져오는 상황) 가 상당함

  • 단순히 연산량을 줄이는 것만으로는 성능이 좋아지지 않으며, 데이터 접근 효율성도 중요.

  • CPU나 GPU는 밀집 행렬(dense matrix) 연산(multiplication)을 매우 빠르게 수행할 수 있도록 최적화되어 있음

  • 그러나 non-uniform sparse 모델(비균일한 희소 모델, 즉 데이터가 일부는 밀집하고 일부는 희소한 형태)은 이런 최적화된 방식에 맞지 않아 sophisticated(정교한) engineering과 computing infrastructure가 필요.

  • 전통적인 ConvNets에서는 랜덤하고 희소한 연결을 사용하여 대칭성을 줄였으나 최근에는 병렬 컴퓨팅 최적화를 위해 fully-connected로 돌아섬

  • 인셉션 아키텍처는 1x1, 3x3, 5x5 필터와 같은 여러 크기의 필터를 병렬로 적용해 다양한 크기의 특징을 추출함. 이 방식을 통해 중요한 특징을 놓치지 않으면서도, 모든 가능한 연결을 사용하는 방식(FC layer)보다 계산량을 줄였음.

  • Inception : sparse structrue + dense readily-available component 가 효과적임을입증함

    symmetry (대칭성)는 뉴런 간의 연결이나 학습 방식이 지나치게 규칙적이고 반복적인 상태. 대칭성이 높으면, 네트워크의 뉴런들이 비슷하게 학습되는 경향이 있어 학습의 다양성이 떨어지고, 이를 통해 더 복잡한 특징을 학습하는 데 어려움이 생길 수 있음.


Dense Matrix (밀집 행렬)

모든 원소가 0이 아닌 값으로 채워진 행렬.
예: [1, 2, 3, 4.5, 6, 7, 8, 9]
데이터를 메모리에 전체적으로 저장하며, 저장 공간이 많이 필요함.
데이터가 거의 빈 공간 없이 채워져 있는 경우.

Sparse Matrix (희소 행렬)

대부분의 원소가 0인 값으로 구성된 행렬.
0이 아닌 값과 그 값의 위치만 저장하여 메모리 절약 가능. 메모리를 효율적으로 사용하며, 데이터의 빈 공간이 많은 경우에 적합.


4. Architectural Details

  • Arora’s Bound에서는 이전 레이어 유닛들의 상관 통계 (correlation statistics)를 계산해서 상관관계가 높은 유닛들을 클러스터링하여 그룹화함. 이렇게 형성된 그룹을 다음 레이어의 유닛으로 사용함.
  • 특히 인풋과 가까운 레이어에서 만들어진 그룹은 인풋 레이어의 특정 영역(region)과 관련이 있을 거라고 봄.
  • 하나의 region에 클러스터가 많을 경우, 1x1 컨볼루션 레이어와 ReLU를 사용해 다음 레이어에서 차원을 줄임. 이는 Network in Network에서 영감을 받은 방법임.
  • 넓게 퍼진 특징을 처리하기 위해 넓은 패치를 사용함. 하지만 이 방식은 연산 시간이 오래 걸리는 단점이 있음.(computational blowup) 얘도 1x1 컨볼루션 레이어와 ReLU로 해결.(차원 축소)
  • 여러 층에서 나온 필터의 출력값들을 하나의 벡터로 모아서 다음 층의 입력 벡터로 만듦. 이러면 다양한 필터의 결과를 한 번에 통합해 더 풍부한 표현을 학습할 수 있음.
  • parallel pooling path를 사용해서 여러 종류의 풀링을 동시에 활용함.

    Figure2. 1x1 convolutions are used to
    compute reductions before the expensive 3x3 and 5x5 convolutions.
  • Inception 네트워크는 여러 Inception 모듈을 층층이 쌓아 구성됨.
  • 해상도를 절반으로 줄이기 위해 간헐적으로 stride 2의 max-pooling 레이어를 포함함.
  • 메모리 효율성을 위해 훈련 중 Inception 모듈을 상위 층에서만 사용하고, 하위 층은 전통적인 convolution 방식을 유지함.
  • 이는 필수적이기보다는 현재 구현의 구조적 비효율성으로 인한 조치임.
  • 계산 복잡도의 급격한 증가 없이 각 단계에서 유닛 수를 크게 늘릴 수 있음.

5. GoogleNet


인스턴스 (Instance)

  • 인스턴스는 특정 아키텍처 또는 모델의 구체적인 구현 버전을 의미함.
  • 예를 들어, Inception 아키텍처는 여러 가지 방식으로 구현될 수 있지만, 여기서 언급된 "GoogLeNet"이라는 인스턴스는 특정 설정의 Inception 아키텍처를 가리킴.
  • 인스턴스는 학습된 파라미터, 층의 수, 특정 하이퍼파라미터 조합 등으로 구분되며, 다양한 실험이나 버전에서 사용될 수 있음.

프로젝션 (Projection)

  • 프로젝션 레이어는 주로 차원을 줄이거나 변환하여 다음 레이어로 전달할 때 사용됨.
  • 이 레이어는 1x1 convolution을 통해 이전 레이어에서 온 데이터를 압축하고 변환하여, 계산 효율성을 높이고, 다음 레이어의 입력으로 적절한 형태로 조정하는 역할을 함.
  • 예를 들어, max-pooling 후에 오는 projection 레이어는 데이터를 줄이면서도 특징을 유지하여 연산 비용을 줄임.

  • 팀명 선정: ILSVRC14 대회에서 팀명으로 "GoogLeNet"을 선택. 이는 Yann LeCun의 LeNet-5 네트워크에 대한 경의를 표한 것임.

  • GoogLeNet 정의: GoogLeNet은 대회 제출에 사용된 Inception 아키텍처의 특정 구현을 가리킴.

  • Ensemble에 추가된 깊고 넓은 Inception 네트워크: 약간 성능이 떨어졌으나, 앙상블에 추가했을 때 결과가 조금 향상됨. 이 네트워크에 대한 자세한 내용은 생략함.

  • 성공적인 인스턴스: Table 1에서 GoogLeNet의 가장 성공적인 인스턴스를 설명함.

  • Ensemble 모델 구성: 앙상블의 7개 모델 중 6개는 동일한 토폴로지(다른 샘플링 방법 사용)를 가짐.

  • 모든 convolution: Inception 모듈 내부를 포함하여 모든 convolution 레이어는 ReLU 활성화를 사용함.

  • receptive field: 네트워크의 수용 영역 크기는 224x224로, RGB 색상 채널을 사용하며 평균을 뺌.(RGB 채널의 각 평균값을 계산하여, 각 픽셀 값에서 해당 평균을 빼주는 정규화로 전처리 했음)

  • “#3x3 reduce”와 “#5x5 reduce”: 3x3과 5x5 convolution 전에 사용되는 1x1 필터 수를 의미함.

  • pool proj 열: 내장된 max-pooling 레이어 후에 오는 projection 레이어에서 사용되는 1x1 필터 수를 나타냄. projection 레이어는 max-pooling 이후의 출력에 1x1 convolution을 적용하여 채널 차원을 줄이거나 변환하는 역할을 함. 이를 통해 연산 비용을 줄이고, 다음 레이어로 넘기는 데이터의 크기를 조절하여 네트워크 효율을 높임.

  • 모든 축소/투영 레이어 (Reduction/Projection layers): "축소(reduction)"와 "투영(projection)"이 이루어지는 모든 1x1 convolution 레이어들도 ReLU 활성화 함수를 사용함. 이는 이 레이어들이 비선형성을 유지하여 다양한 패턴을 효과적으로 학습할 수 있도록 돕기 위함임.

  • 네트워크 설계 목표: 계산 효율성과 실용성을 고려하여 설계되었으며, 메모리가 적은 장치를 포함한 개별 장치에서도 추론이 가능하도록 함.

  • 깊이: 파라미터가 있는 레이어만 세면 22층이며, pooling을 포함하면 27층. 전체 레이어 수는 약 100개지만, 이는 머신 러닝 인프라에 따라 달라짐.

  • Average Pooling: 분류기 이전에 average pooling을 사용하여 fully connected 레이어를 대체함. 이를 통해 top-1 정확도가 약 0.6% 향상됨. (각 특징 맵의 평균을 계산해 최종 출력층으로 전달)

  • 드롭아웃: fully connected 레이어를 제거한 후에도 드롭아웃 사용은 필수적임.

  • 보조 분류기(Auxiliary Classifier): 네트워크의 상대적으로 큰 깊이로 인해 모든 레이어를 통해 효과적으로 그래디언트를 역전파할 수 있도록 보조 분류기를 사용함.

    • 보조 분류기는 Inception (4a)와 (4d) 모듈의 출력에 추가된 작은 convolutional 네트워크 형태로, 네트워크 중간의 특징이 구분 가능하도록 돕고, 역전파되는 그래디언트 신호를 증가시키며 추가적인 정규화를 제공함.
    • 훈련 시, 보조 분류기의 손실은 네트워크 전체 손실에 할인 가중치(0.3)를 두어 추가됨.
    • 추론 시: 보조 분류기는 제외됨.

    추가된 네트워크의 정확한 구조 (보조 분류기 포함):

  • Average Pooling Layer:

    • 5x5 필터 크기와 stride 3을 사용하는 average pooling 레이어.
    • 출력 크기:
      • (4a) 단계: 4x4x512 출력.
      • (4d) 단계: 4x4x528 출력.
  • 1x1 Convolution:

    • 128개의 필터를 가진 1x1 convolution 레이어로, 차원을 줄이기 위한 역할.
    • 활성화 함수: Rectified Linear Activation (ReLU).
  • Fully Connected Layer:

    • 1024 유닛을 가진 fully connected 레이어.
    • 활성화 함수: Rectified Linear Activation (ReLU).
  • Dropout Layer:

    • 드롭아웃 비율이 70%인 dropout 레이어 (출력 중 70%를 무작위로 비활성화).
  • Linear Layer with Softmax Loss:

    • Classifier: Softmax 손실 함수를 사용하는 linear 레이어로, 메인 분류기와 동일하게 1000개의 클래스를 예측함.

    • 이 보조 분류기는 학습 시에만 사용되며, 추론 시에는 제거됨.


6. Training Methodology

  • Distributed Training System

    • DistBelief 시스템을 사용하여 네트워크 훈련.
    • 모델 및 데이터 병렬성을 사용했으나, CPU 기반 구현만 사용함.
    • 추정에 따르면 GoogLeNet은 고급 GPU 몇 대를 사용하면 약 일주일 내로 수렴할 수 있음. 메모리 사용량이 주된 제한 요소임.
  • Training Algorithm

    • 비동기 확률적 경사하강법 (asynchronous stochastic gradient descent) 사용.
    • 모멘텀: 0.9.
    • 고정 학습률 스케줄: 매 8 에포크마다 학습률을 4%씩 감소.
    • 최종 모델은 Polyak averaging을 사용하여 추론에 사용됨.

    Polyak averaging:딥러닝 모델의 가중치(weight)를 업데이트할 때 여러 에포크(epoch) 동안 얻어진 가중치의 평균 사용하는 방법. 훈련 데이터에 과적합(overfitting)될 가능성을 줄이고 더 일반화된(generalized) 모델을 생성.


  • Image Sampling Methods

    • 대회 전까지 이미지 샘플링 방법을 여러 번 수정했으며, 수렴한 모델들도 하이퍼파라미터(드롭아웃, 학습률 등)를 바꿔가며 다른 샘플링 옵션으로 추가 학습함.
    • 일부 모델은 상대적으로 작은 크롭을 사용하여 훈련했으며, 다른 모델은 큰 크롭을 사용하여 영감을 받음.
  • 샘플링 방법

    • 대회 후 효과적임이 확인된 샘플링 방법: 이미지 영역의 8%에서 100% 사이 크기의 다양한 패치를 샘플링하고, 가로세로 비율은 3:4에서 4:3 사이에서 무작위로 선택함.
    • Andrew Howard의 포토메트릭 왜곡: 과적합 방지에 유용하게 작용함.
  • 랜덤 인터폴레이션 방법

    • bilinear, area, nearest neighbor, cubic 중에서 랜덤으로 사용하여 이미지를 리사이즈.
    • 이 방법을 비교적 늦게 적용했으며 다른 하이퍼파라미터 변경과 함께 사용되어 최종 결과에 긍정적인 영향을 미쳤는지는 확신할 수 없다고 함.

  • 비동기 확률적 경사하강법 (Asynchronous Stochastic Gradient Descent):

    • 경사하강법: 모델의 손실을 줄이기 위해 가중치를 조정하는 학습 방법으로, 경사를 따라 최적의 값을 찾는 방식.
    • 확률적 경사하강법 (Stochastic Gradient Descent): 훈련 데이터의 일부(미니 배치)를 무작위로 선택해 학습을 수행함. 전체 데이터 대신 일부 데이터를 사용하므로 빠르고 효율적임.
    • 비동기(asynchronous): 여러 컴퓨터나 장치에서 병렬로 작업을 수행하며, 하나의 작업이 끝날 때까지 기다리지 않고 각 작업이 독립적으로 진행됨. 이는 훈련 속도를 높이기 위한 방법임.
  • 샘플링 (Sampling):

    • 샘플링은 전체 데이터에서 일부 데이터(샘플)를 선택해 사용하는 것을 말함.
    • 이미지 샘플링의 경우, 원본 이미지에서 다양한 크기와 비율의 패치를 선택하여 모델이 다양한 특징을 학습할 수 있도록 함.
    • 여기서는 이미지 크기의 8%에서 100%에 해당하는 다양한 크기의 패치를 사용해 훈련 데이터를 준비함.
  • 포토메트릭 왜곡 (Photometric Distortion):

    • 포토메트릭 왜곡은 이미지의 색상, 밝기, 대비 등을 변형하는 기술로, 모델이 다양한 시각적 조건에서 잘 학습할 수 있도록 도와줌.
    • 예를 들어, 이미지의 밝기나 색조를 조정하여 다양한 환경에서 학습한 것처럼 만드는 방식임.
    • 이는 과적합(overfitting)을 방지하는 데 효과적이며, 모델이 특정 데이터 조건에 치우치지 않고 일반화 능력을 갖추도록 함.
  • 인터폴레이션 (Interpolation):

    • 인터폴레이션은 이미지 크기를 조정할 때, 원래 픽셀 간의 값을 새 픽셀 값으로 보간하여 매끄럽게 만드는 방법임.
    • 예를 들어, 작은 이미지를 크게 만들 때 원래 픽셀 간에 새로운 값을 추가하여 자연스럽게 확대하는 방식.
    • 랜덤 인터폴레이션은 다양한 방법(bilinear, area, nearest neighbor, cubic) 중 하나를 무작위로 선택하여 이미지 크기를 조정해, 모델이 다양한 해상도나 크기에서도 효과적으로 학습할 수 있도록 함.

7 ILSVRC 2014 Classification Challenge Setup and Results

  • ILSVRC 2014 분류 챌린지: 이미지넷 계층의 1000개 클래스 중 하나로 이미지를 분류하는 대회. 훈련 데이터 약 120만 장, 검증 데이터 5만 장, 테스트 데이터 10만 장으로 구성됨. 성능은 top-1 정확도top-5 오류율로 평가되며, 랭킹은 top-5 오류율로 결정됨.

  • GoogLeNet 대회 참가: 외부 데이터 없이 훈련된 GoogLeNet을 사용하여 참가함. 성능 향상을 위해 테스트 시 7개의 GoogLeNet 모델을 앙상블하고 다양한 크롭 방식을 사용함.

  • 주요 테스트 방법:

    1. 7개의 모델 앙상블 사용.
    2. 크롭 방식: 다양한 이미지 크기로 조정한 후 144개의 크롭을 추출하여 테스트.
    3. 예측 방식: 모든 크롭과 모델의 softmax 확률을 평균하여 최종 예측 산출.
  • 최종 결과: 검증 및 테스트 데이터에서 top-5 오류율 6.67%로 1위 기록.

8. ILSVRC 2014 Detection Challenge Setup and Results

  • ILSVRC 검출 과제: 200개의 가능한 클래스 중 이미지 속 객체에 바운딩 박스를 생성하는 작업.

    • 객체 검출이 정확한 것으로 간주되는 조건: 바운딩 박스가 ground truth 클래스와 일치하며, Jaccard index 기준으로 50% 이상 겹칠 경우.
    • 과도한 검출은 false positives로 간주되어 패널티를 받음.
    • mAP(mean Average Precision)을 통해 성능을 평가함.
  • GoogLeNet의 접근 방식:

    • R-CNN과 유사한 방식 사용, Inception 모델을 지역 분류기(region classifier)로 활용.
    • 지역 제안(region proposal) 단계에서 Selective Searchmulti-box 예측을 결합해 객체 바운딩 박스의 recall을 높임.
    • False Positive 감소: 슈퍼픽셀 크기를 2배로 늘려 Selective Search의 제안 수를 절반으로 줄임. Multi-box로부터 200개의 추가 제안을 더해, 제안 수를 "R-CNN 논문"의 60% 수준으로 줄였지만, 커버리지는 92%에서 93%로 증가.
    • 이러한 최적화로 단일 모델에서 mAP가 1% 향상됨.
    • 최종적으로 각 지역을 분류할 때 6개의 ConvNet 앙상블을 사용해 정확도를 40%에서 43.9%로 향상.
  • 주요 성능 비교:

    • GoogLeNet은 bounding box regression을 사용하지 않았음 (시간 부족으로 인해).
    • 2013년과 비교해 정확도가 거의 두 배로 증가함.
    • 상위 팀들은 모두 Convolutional Networks를 사용했으며, 외부 데이터 사용, 앙상블 모델, 컨텍스트 모델 적용 여부가 팀 전략에 포함됨 (Table 4).
  • 외부 데이터 사용:

    • 일반적으로 ILSVRC12 분류 데이터를 모델의 사전 학습(pre-training)에 사용하고 이후 검출 데이터로 미세 조정(fine-tuning)함.
    • GoogLeNet은 검출 데이터 학습 전 사전 학습에 localization 데이터를 사용하지 않음.
  • 단일 모델 성능 비교 (Table 5):

    • 상위 성능 모델은 Deep Insight로, 앙상블 사용 시 0.3점 향상에 그쳤으나, GoogLeNet은 앙상블로 더 큰 성능 향상.

LSVRC 대회에서는 localization 데이터가 제공되는데, 이는 객체의 정확한 위치를 나타내는 바운딩 박스 정보가 포함된 데이터이다. 이 데이터를 사용해서 모델이 이미지를 분류할 뿐만 아니라, 객체가 이미지 내에서 정확히 어디에 위치하는지를 학습할 수 있다.

많은 팀들이 localization 데이터를 모델의 사전 학습(pre-training)에 사용한다. 모델이 본격적으로 검출 데이터로 학습을 시작하기 전에, 분류나 위치 정보를 포함한 데이터를 통해 기초적인 특징을 먼저 학습하는 것이다.

하지만 GoogLeNet 팀은 localization 데이터를 사용하지 않고 검출 데이터를 바로 학습에 사용하고도 6개의 ConvNet 앙상블과 Inception 모델을 활용한 최적화로 높은 성능을 기록했다고 자랑하고 있다.


10. Conclusion

  • dense building block을 활용하여 최적의 sparse structure 구현

  • depth와 width 늘리면서 reasonable한 computation 비용

  • detection 에서도 문맥정보(context)나 bounding box regression 없이 꽤 괜찮은 성능

  • 보다 sparse하고 세밀한 구조를 자동화 방식으로 구축하는 것이 유망한 연구 방향임

profile
kwonhs.alice@gmail.com

0개의 댓글