[논문 리뷰 | CV] ImageNet Classification with Deep Convolutional Neural Networks (AlexNet)(2012)

윤주한·2025년 1월 24일

Abstract

ImageNet LSVRC-2010 대회에서 120만 개의 고해상도 이미지를 1000개의 서로 다른 클래스로 분류하기 위해 대규모 deep convolutional neural network를 훈련시켰다.

테스트 데이터에서 top-1 error rates는 37.5%, top-5 error rates는 17.0%를 달성했고, 이전의 기술보다 훨씬 우수한 결과였다.

6천만 개의 파라미터와 65만 개의 뉴런으로 구성된 신경망은 5개의 convolutional layers(일부는 max-pooling layers) + 최종 1000-way softmax로 연결된 3개의 fully-connected layers 까지 총 8개의 layers로 구성된다.

훈련 속도를 높이기 위해 non-saturating neurons(ReLU 함수)를 사용하고 convolution 연산을 GPU로 매우 효율적으로 구현했다.
또한 과적합을 줄이기 위해 dropout 정규화 방법을 사용했고 이는 매우 효과적인 것으로 입증되었다.

이 모델의 변형으로 ILSVRC-2012 대회에서 top-5 test error rate 15.3%로 우승했다. (2위는 26.2%)

top-1 error : 가장 높은 확률로 예측된 클래스가 정답이 아닌 비율
top-5 error : 예측률이 높은 상위 5개의 클래스 내에 정답이 없는 비율


1. Introduction

객체 인식에서 머신러닝 기법이 필수적으로 사용되고 있으며 성능을 높이기 위해 더 큰 데이터셋, 더 강력한 모델, 과적합 방지 기술이 필요하다.

  • 기존 데이터셋의 한계
    • 이전의 레이블이 있는 이미지 데이터셋은 수만 개 수준으로 크기가 작았다.
    • 간단한 인식 작업은 이 정도의 데이터셋으로도 해결 가능했으나, 현실적인 객체의 다양성을 처리하기에는 부족했다.

  • 대규모 데이터셋의 등장
    • 작은 데이터셋의 단점은 널리 알려져 왔지만 수백만 개 이상의 라벨링 된 데이터셋 수집이 최근에야 가능해졌다.
    • LabelMe : 수십만 개의 완전히 분할된 이미지로 구성
    • ImageNet : 22,000개 이상의 카테고리가 있는 1,500만 개 이상의 라벨링 된 고해상도 이미지로 구성

수백만 개의 이미지에서 수천 개의 객체를 학습하려면 학습 용량이 큰 모델이 필요하다. 하지만 객체 인식의 복잡성은 ImageNet처럼 큰 데이터셋으로도 충분히 해결할 수 없기 때문에, 모델에 사전 지식이 추가적으로 요구된다.

  • CNN의 특징과 장점
    • 가변적인 깊이와 너비를 통해 모델 용량 조절 가능
    • 이미지의 특성에 대한 강력하고 정확한 가정을 기반으로 설계
    • 일반적인 feedforward neural networks 보다 연결과 매개변수가 훨씬 적어 학습이 더 쉽지만 이론적으로 최적의 성능은 약간 떨어질 가능성이 높다.

  • 이 논문의 구체적인 기여
    • ILSVRC-2010, ILSVRC-2012 대회에서 사용된 가장 큰 규모의 CNN을 훈련했으며 가장 우수한 결과를 달성했다.
    • 네트워크의 성능을 개선하고 훈련 시간을 단축하는 새롭고 특이한 기능이 다수 포함되어 있다. (section 3)
    • 네트워크 크기와 많은 데이터로 인한 과적합을 방지하기 위한 기법 (section 4)
    • 5개의 convolutional layers와 3개의 fully-connected layers가 중요하며 convolutional layer를 제거하면 성능이 저하된다.

결국 네트워크의 크기는 현재 GPU에서 사용할 수 있는 메모리 양과 감내할 수 있는 훈련 시간에 의해 제한된다. GTX 580 3GB GPU로 훈련하는 데 5~6일이 걸렸으며, 모든 실험을 통해 더 빠른 GPU와 더 큰 데이터셋이 제공되면 결과를 개선할 수 있다.


2. The Dataset

  • ImageNet Dataset
    • 약 22,000개의 카테고리에 속하는 1,500만 개 이상의 라벨링된 고해상도 이미지로 구성된 데이터셋
    • ImageNet Large-Scale Visual Recognition Challenge (ILSVRC)에서는 1000개의 카테고리 각각에 약 1000개의 이미지가 포함된 ImageNet 하위 집합을 사용 (총 120만 개의 훈련 이미지, 5만 개의 검증 이미지, 15만 개의 테스트 이미지)

  • ILSVRC
    • ILSVRC-2010은 테스트셋 레이블을 사용할 수 있는 유일한 버전이고 대부분의 실험을 이 버전에서 수행했다.
    • ILSVRC-2012 대회는 테스트셋 레이블을 사용할 수 없는 버전으로 이에 대한 결과는 section 6에서 보고한다.
    • ImageNet에서는 top-1 and top-5 error rates를 보고하는 것이 일반적이며, top-5 error rates는 예측률이 높은 상위 5개의 클래스 내에 정답이 없는 비율이다.

  • 이미지 전처리
    • ImageNet은 가변 해상도 이미지로 구성되어 있기 때문에 256 x 256의 고정 해상도로 down-sampling했다.
    • 주어진 직사각형 이미지의 짧은 변의 길이를 256px로 만들고, 이미지 중앙 256 x 256 영역을 사용했다.
    • 훈련 세트의 평균값을 각 픽셀에서 빼는 작업 외에는 다른 전처리 없이 원시 RGB 값으로 학습을 진행했다.

3. The Architecture

Section 3.1~3.4는 중요도에 따라 가장 중요한 것 부터 순서대로 정렬되어있다.

3.1 ReLU Nonlinearity

  • 기존 활성화 함수 vs ReLU
    • 기존에는 활성화 함수로 f(x)=tanh(x)f(x)=tanh(x) 또는 f(x)=(1+ex)1f(x)=(1+e^{-x})^{-1}을 사용했으며 이런 포화 활성화 함수는 기울기 소실 문제로 인해 경사 하강법 학습 속도가 느리다.
    • 비포화 활성화 함수인 f(x)=max(0,x)f(x)=max(0,x)는 학습 속도가 훨씬 빠른 함수로 이를 Rectified linear Units(ReLU)라고 부른다.

  • ReLU의 학습 속도
    • ReLU를 사용하는 CNN은 tanh를 사용하는 CNN보다 학습 속도가 몇 배 더 빠르다.
    • CIFAR-10 데이터셋에서 ReLU 기반 CNN이 25% 훈련 오류에 도달하는데 필요한 반복 횟수가 훨씬 적다. 따라서 ReLU 함수를 사용하지 않았다면 대규모 신경망 실험을 수행하기 어려웠을 것이다.

    •                                  Figure 1 (실선:ReLU, 점선:tanh)
    • 위 그림과 같이 ReLU를 사용하면 25% 훈련 오류에 6배 빠르게 도달할 수 있고, 빠른 학습은 대규모 데이터셋에서 훈련된 모델의 성능에 큰 영향을 미친다.

3.2 Training on Multiple GPUs

  • GPU 메모리 한계 해결 방법
    • GTX 580 GPU의 3GB 메모리 제한으로 인해 120만 개의 훈련 샘플을 학습하기에는 네트워크 크기가 너무 컸다.
    • 따라서 네트워크를 두 개의 GPU에 분산하여 병렬 학습을 수행했다.

  • GPU 간 병렬 처리 방식
    • 최신 GPU는 서로의 메모리를 직접 공유할 수 있어 효율적인 병렬 처리가 가능하다.
    • 각 GPU에 커널(또는 뉴런)의 절반을 할당하여 병렬 연산을 수행한다.
    • 하나의 추가 트릭
      • GPU가 특정 계층에서만 통신한다.
      • Layer 3의 커널은 Layer 2의 모든 커널 맵을 입력으로 받는다.
      • Layer 4의 커널은 같은 GPU에 있는 Layer 3의 커널 맵에서만 입력을 받는다.
    • 이런 연결 패턴을 설정하는 것은 교차 검증 문제이며, 통신 비용을 조절하여 계산량 대비 효율적은 비율을 찾는다.

  • 1-GPU net 대비 2-GPU net의 성능 향상
    • top-1 error rates 1.7% 감소
    • top-5 error rates 1.2% 감소
    • 훈련 시간이 약간 더 짧음

3.3 Local Response Normalization

  • ReLU의 특성
    • 입력 정규화 없이 학습 가능하지만, 추가적인 정규화 기법이 일반화 성능을 향상시킨다.

  • Local Response Normalization(LRN)
    • bx,yi=ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yi)2)βb_{x,y}^{i}=a_{x,y}^{i}/\left(k+\alpha\sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^{i})^2 \right)^\beta
      • ax,yi:a_{x,y}^{i}: ReLU를 적용한 뉴런의 활성화 값
      • bx,yi:b_{x,y}^{i}: 정규화된 뉴런의 활성화 값
    • 정규화 과정
      • 동일한 공간 위치 (x,y)(x,y)에서 인접한 nn개의 커널 맵을 대상으로 정규화 수행
      • ax,yia_{x,y}^{i}를 해당 영역의 제곱 합을 포함한 정규화 계수로 나눔
    • 하이퍼 파라미터 값
      • k=2,n=5,α=104,β=0.75k=2, n=5, \alpha=10^{-4}, \beta=0.75

  • LRN의 역할 및 효과
    • 실제 뉴런의 측면 억제(lateral inhibition) 매커니즘을 모방하여 뉴런 간 경쟁을 유도한다.
    • 기존 Local Contrast Normalization(LCN) 기법과 유사하나, 평균을 빼지 않으므로 밝기 정규화(Brightness Normalization)에 더 가깝다.
    • ImageNet에서 top-1 error rates 1.4% 감소, top-5 error rates 1.2% 감소
    • CIFAR-10 실험에서 test error rate 13%에서 11%로 감소

3.4 Overlapping Pooling

  • Pooling Layer의 역할
    • CNN에서 Pooling Layer는 같은 커널 맵 내에서 이웃 뉴런들의 출력을 요약하는 역할을 한다.
    • 일반적으로 인접한 영역을 겹치지 않게(non-overlapping) 풀링한다.

  • Overlapping Pooling 기법
    • 풀링 크기 zzz*z, 스트라이드 ss가 같으면 (s=zs=z) 전통적인 풀링 방식이다.
    • s<zs<z 로 설정해서 풀링 영역을 겹치게 했다. (Overlapping Pooling)
    • s=2,z=3s=2,z=3 으로 설정했고, 결과적으로 전통적인 풀링 방식(s=2,z=2s=2, z=2) 대비 top-1, top-5 error rates를 0.4%, 0.3% 감소시켰으며 과적합 방지 효과도 있다.

3.5 Overall Architecture

  • 입력 크기 227x227x3, 그림에서 잘못 표현된 것이라고 함
  • 네트워크 구조
    • Convolutional Layers 5개, Fully-Connected Layers 3개 총 8개의 가중치 레이어로 구성된다.
    • 마지막 Fully-Connected Layer의 출력은 1000-way softmax로 전달한다. (1000개의 확률 분포 생성)
    • Multinomial Logistic Regression 목표 함수를 최적화 (정답 레이블의 로그 확률 최대화)

  • 레이어별 연결 방식
    • 두 번째, 네 번째, 다섯 번째 Convolutional Layer는 같은 GPU 내의 이전 레이어 커널 맵에만 연결한다.
    • 세 번째 Convolutional Layer는 이전 레이어의 모든 커널 맵과 연결한다.(점선이 교차되는 부분)
    • Fully-Connected Layers는 이전 레이어의 모든 뉴런과 연결한다.

  • Response Normalization & Pooling 적용
    • Response Normalization → 첫 번째 & 두 번째 Convolutional Layer 이후 적용
    • Max-Pooling → Response Normalization 이후 & 다섯 번째 Convolutional Layer 이후 적용
    • ReLU 활성화 함수 → 모든 레이어에 적용

4. Reducing Overfitting

과적합을 방지하는 두 가지 주요 방법을 설명한다. (Data Augmentation, Dropout)

4.1 Data Augmentation

이미지 데이터에서 Overfitting을 줄이는 가장 쉬운 방법은 Label을 유지하는 변환을 적용하여 데이터를 인위적으로 확장하는 것이다. 이를 위해 두 가지 Data Augmentation 기법을 사용하였고, 두 가지 모두 아주 적은 계산으로 원본 이미지에서 변환된 이미지를 생성할 수 있으므로 변환된 이미지를 디스크에 저장할 필요가 없다.

1. Image Translation & Horizontal Reflection

  • 랜덤한 224x224 패치 및 수평 반사된 이미지 추출
    • 원본 256x256 이미지에서 랜덤한 224x224 크기의 패치와 수평 반사된 패치를 추출하여 학습 데이터를 생성한다.
    • 이 방법을 적용하면 학습 데이터 크기가 2048배 증가하지만, 데이터 간 높은 상관관계가 있다.

  • 테스트 단계
    • 5개의 패치(네 개의 모서리 + 중앙)와 수평 반사된 패치를 추출하여 총 10개의 패치를 사용한다.
    • 10개 패치의 softmax 결과를 평균하여 최종 예측을 결정한다.

2. RGB Intensity Alteration(RGB 강도 변화)

  • 역할
    • 이미지의 RGB 채널 강도를 조정하여 데이터 증강을 수행한다.
    • 훈련 이미지의 색상 및 밝기를 변형하여 모델이 특정 조명이나 색상에 과적합되는 것을 방지한다.

  • 기법
    • PCA를 수행하여 RGB 픽셀 값의 주요 패턴을 분석한다.
    • 계산된 주성분(고유 벡터)에 고윳값을 반영한 랜덤 변수를 곱해 픽셀 값에 추가한다.
    • 이런 과정은 이미지의 원본 레이블을 유지하면서도 색상과 밝기를 다양하게 변형할 수 있도록 해준다.

이런 Data Augmentation 기법들은 top-1 error rates를 1% 이상 줄인다.


4.2 Dropout

여러 개의 모델을 결합하면 테스트 오류를 줄이는 데 효과적이나, 대형 신경망에서는 연산 비용이 매우 크다. 그래서 새로운 기법인 Dropout을 적용했다.

  • 동작 원리
    • 학습 시 각 은닉층 뉴런의 출력을 50% 확률로 0으로 설정한다.
    • 비활성화된 뉴런은 순전파와 역전파 과정에서 제외된다.
    • 입력 데이터가 들어올 때마다 다른 구조의 신경망이 샘플링된다. → 모델이 특정 뉴런에 의존하는 것을 방지한다.
    • 테스트 시에는 모든 뉴런을 사용하지만, 출력을 0.5배 감소시켜 학습 시의 확률적 Dropout을 보정한다.

  • 효과
    • 뉴런 간 복잡한 공적응(co-adaptation)을 감소 → 더 일반적인 특징을 학습하도록 유도
    • 학습 속도 저하 → 수렴(iteration)까지의 학습 횟수가 약 2배 증가
    • 본 연구에서는 Fully-Connected Layer의 처음 두 개에 Dropout을 적용하여 과적합 문제를 해결했다.

5. Details of learning

  • SGD(Stochastic Gradient Descent) 사용
    • batch size : 128 한 번의 학습에서 사용할 데이터 샘플의 개수
    • momentum : 0.9 SGD의 업데이트 과정에서 이전 단계의 움직임을 고려하여 관성을 부여하는 기법
    • weight decay : 0.0005 모델이 너무 큰 값을 가지지 않도록 가중치에 패널티를 부여하는 정규화 기법
    • weight decay는 단순한 정규화 역할이 아니라 모델 학습을 돕는 요소로 작용한다.

  • 가중치 및 바이어스 초기화
    • 가중치는 평균 0, 표준편차 0.01인 가우시안 분포에서 초기화한다.
    • 두 번째, 네 번째, 다섯 번째 convolutional layers와 fully-connected hidden layers의 바이어스는 1로 설정하여 ReLU에 양의 입력을 제공함으로써 초기 학습을 가속화한다.
    • 나머지 층의 바이어스는 0으로 초기화했다.

  • 학습률 설정
    • 모든 층에 동일한 학습률을 적용하고 학습 중 수동 조정
    • 검증 오류 개선이 멈추면 학습률을 10배 감소시키는 휴리스틱 적용
    • 초기 학습률은 0.01이고 최종적으로 3번 감소했다.

  • 걸린 시간
    • 약 90번의 epoch을 반복하여 학습 진행
    • 총 120만 개의 이미지 데이터셋 사용
    • NVIDIA GTX 580 3GB GPU 두 개를 사용하여 5~6일 소요

6. Results

제안된 CNN 모델(AlexNet)은 ILSVRC-2010과 ILSVRC-2012 데이터셋에서 최상의 성능을 기록했다.

  • ILSVRC-2010 결과
    • top-1 error rates : 37.5%
    • top-5 error rates : 17.0%

  • ILSVRC-2012 결과
    • top-5 error rates : 18.2%

  • 앙상블 효과
    • 마지막 풀링 층 위에 여섯 번째 합성곱 층을 추가한 CNN을 전체 ImageNet Fall 2011 데이터셋(1,500만 이미지, 22,000 카테고리)으로 학습 후 ILSVRC-2012에 파인튜닝 : 16.6%
    • 사전 학습된 두 개의 CNN과 앞서 언급한 다섯 개 CNN의 예측을 평균 : 15.3%

7. Discussion

  • 대규모 CNN의 가능성
    • 깊고 큰 CNN이 어려운 데이터셋에서도 최상의 성능을 달성할 수 있음을 입증
    • Convolutional Layer를 제거하면 성능이 저하된다. 따라서, 네트워크의 깊이는 성능에 중요한 요소임을 확인

  • 향후 연구 방향
    • 현재까지 네트워크 크기를 키우고 학습을 오래할수록 성능이 향상되었다.
    • 하지만 인간의 시각 시스템에 도달하려면 아직 갈 길이 멀다.
    • 미래에는 영상 데이터에 CNN을 적용하여, 정적인 이미지에서는 얻기 어려운 시간적 정보를 활용하는 것이 목표이다.

0개의 댓글