본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Computer Vision

[2024-2] 황영희 - ImageNet Classificatioin with Deep Convolutional Neural Networks(AlexNet)

by 앵히 2024. 12. 27.

https://papers.nips.cc/paper_files/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html

 

Papers with Code - ImageNet Classification with Deep Convolutional Neural Networks

#4 best model for Graph Classification on HIV-fMRI-77 (Accuracy metric)

paperswithcode.com


1. Introduction

이전의 데이터셋 크기는 수만 장 수준으로 상대적으로 매우 적었다. 따라서 MNIST와 같은 데이터셋에서는 라벨을 유지하면서 데이터 증강(augmentation)을 적용하면 간단한 인식 작업은 높은 성능으로 수행할 수 있었다. 그러나 실제 환경에서의 사물은 다양한 조명, 각도, 배경 등으로 인해 이러한 데이터와는 본질적으로 달랐다. 이를 해결하기 위해서는 더 크고 다양한 데이터셋이 필요하게 되었으며, 이에 따라 ImageNet이 등장하였다. ImageNet은 22,000개 이상의 카테고리에 걸쳐 1,500만 장 이상의 고해상도 라벨링된 이미지를 포함한 대규모 데이터셋이다.

 

데이터셋의 규모가 커짐에 따라 자연스럽게 학습에 필요한 모델의 용량도 증가하게 되었다. CNN(Convolutional Neural Network)은 이러한 요구를 충족하기 위해 설계된 모델로, 계층의 깊이(depth)와 너비(breadth)를 조정하여 용량을 조절할 수 있다. 또한, CNN은 일반적인 feedforward 네트워크와 비교하여 적은 연결 수와 매개변수를 사용하기 때문에 학습이 더 효율적이며, 이미지 분야에서 우수한 성능을 보인다.

 

본 논문에서는 다음과 같은 주요 기여를 하였다.

  1. 대규모 CNN을 학습하여 ILSVRC-2010과 ILSVRC-2012에서 기존의 최고 성능을 크게 초과하는 결과를 달성하였다.
  2. 고도로 최적화된 GPU 기반의 2D convolution 연산과 CNN 학습 연산을 구현하고 이를 공개하였다.
  3. 모델의 성능과 학습 시간을 단축하기 위한 다양한 새로운 방법을 도입하였다.
  4. 과적합(overfitting)을 방지하기 위한 효과적인 기법들을 활용하였다.
  5. 5개의 convolutional layer와 3개의 fully connected layer를 사용하였으며, 각 convolutional layer가 모델 성능에 중요한 영향을 미친다는 것을 실험적으로 입증하였다.

2. The Dataset

ImageNet은 22,000개 이상의 카테고리에 속하는 1,500만 장 이상의 고해상도 이미지를 포함하는 대규모 데이터셋이다. ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)에서는 ImageNet의 부분집합을 사용하며, 약 1,000개의 카테고리에 대한 데이터를 활용한다. 이 데이터셋은 약 120만 장의 학습 데이터, 5만 장의 검증 데이터, 그리고 15만 장의 테스트 데이터로 구성되어 있다.

ImageNet 평가에서는 전통적으로 두 가지 오류율(error rate)을 사용한다.

  • Top-1 error: 모델이 예측한 가장 높은 확률의 라벨이 정답 라벨과 일치하지 않는 비율.
  • Top-5 error: 정답 라벨이 모델이 예측한 상위 5개의 확률 라벨 중 포함되지 않는 비율.

ImageNet 데이터는 다양한 해상도로 이루어져 있다. CNN 모델에는 일정한 크기의 입력이 필요하므로, 모든 이미지를 전처리하여 동일한 입력 차원으로 변환한다. 이를 위해, 이미지를 가로와 세로 중 짧은 쪽이 256 픽셀이 되도록 비율에 맞게 조정한 후, 256×256 크기의 중앙 영역을 잘라(CenterCrop) 모델 입력으로 사용한다. 각 픽셀 값은 학습 데이터셋의 평균 값을 기준으로 중심화(centerize)하지만, 이 외의 추가적인 전처리는 수행하지 않는다.

 

3. The Architecture

이 장에서는 AlexNet의 구조와 학습 과정에서 사용된 주요 기법들을 상세히 설명한다. AlexNet은 5개의 컨볼루션 계층(Convolutional Layers)과 3개의 완전 연결 계층(Fully Connected Layers)으로 총 8개의 계층으로 구성되어 있으며, 네트워크의 성능을 극대화하기 위해 여러 방법을 도입하였다.

 

3.1. ReLU Nonlinearity

기존의 활성 함수로 자주 사용되던 sigmoid와 tanh는 출력이 포화(saturatioin)되는 문제가 있다. 출력이 포화된다는 것은 입력값이 특정 범위를 벗어나면 출력값이 거의 변하지 않고 일정하게 유지되는 현상을 의미한다. 이로 인해 역전파(Backpropagation) 과정에서 그래디언트 소멸(Gradient Vanishing) 문제가 발생한다.

그래디언트 소멸 문제란, 활성 함수의 출력 기울기(Gradient)가 거의 0에 가까워짐으로써 가중치가 업데이트되지 않는 현상을 말한다. 이는 네트워크의 학습을 방해하고, 특히 심층 신경망에서 심각한 문제를 초래한다.

 

이러한 문제를 해결하기 위해 본 논문에서는 ReLU(Rectified Linear Unit)를 활성 함수로 사용하였다.

ReLU는 아래와 같은 비포화(non-saturating) 활성 함수이다.

\[ f(x) = \max(0, x) \]즉, 입력 $x$가 0보다 작으면 0을 출력하고, 0보다 크면 입력 값을 그대로 출력한다.

ReLU의 주요 장점은 다음과 같다.

 

1. 그래디언트 소멸 문제를 방지: ReLU는 출력이 포화되지 않아 기울기 값이 0으로 수렴하는 문제가 적다. 따라서 역전파 과정에서 그래디언트 값이 안정적으로 전달된다.

2. 학습 속도 향상: 네트워크가 빠르게 수렴하며, 이는 아래 그래프에서 확인할 수 있다. ReLU를 사용한 경우(solid line)는 tanh를 사용한 경우(dashed line)에 비해 훨씬 빠르게 수렴한다.

3.2. Training on Multiple GPUs

AlexNet은 하나의 GTX 580 GPU로는 처리할 수 없을 만큼 큰 네트워크이다. 이를 해결하기 위해 두 개의 GPU를 사용해 네트워크를 나누어 학습시킨다.

 

  • 구조
    • 네트워크의 각 계층을 GPU 두 대에 분할하여 배치하고, 특정 계층(layer)에서만 두 GPU 간 통신이 발생하도록 설계한다.
    • 예를 들어, layer 3는 이전 층(layer 2)의 모든 커널 맵과 연결되지만, layer 4는 같은 GPU에서 생성된 커널 맵과만 연결된다.
  • 효과
    • 두 GPU를 병렬로 사용하여 학습 시간을 단축시키고, 네트워크 크기에 따른 메모리 부족 문제를 해결한다.

3.3. Local Response Normalization

ReLU는 활성 함수의 포화 문제가 없어 입력 정규화(input normalization)가 필요하지 않다. 하지만 LRN(Local Response Normalization)은 뉴런 간의 상호작용을 통해 네트워크의 일반화 성능을 높이는 데 기여한다. 

\[ b_{x,y}^i = a_{x,y}^i \left( k + \alpha \sum_{j=\text{max}(0, i-\frac{n}{2})}^{\text{min}(N-1, i+\frac{n}{2})} \left( a_{x,y}^j \right)^2 \right)^{-\beta} \]

LRN은 특정 뉴런의 활성값이 주변 뉴런들의 활성값과 상호작용하여 경쟁하도록 설계된 정규화 기법이다.

  • 이 방법은 생물학적 뉴런 간의 측면 억제(lateral inhibition) 원리를 모방하여, 뉴런의 과도한 활성화를 방지하고 뉴런 간 균형을 유지한다.
  • 특히, AlexNet에서는 ReLU와 함께 사용되어 과적합 방지 및 일반화 성능 향상에 기여한다.

\[ a_{x,y}^i : \text{$i$-번째 커널 맵의 $(x, y)$ 위치에서의 출력값} \]

\[ k, \alpha, \beta, n : \text{하이퍼파라미터로, 본 논문에서는 } k = 2, \, \alpha = 10^{-4}, \, \beta = 0.75, \, n = 5 \text{ 로 설정} \]

 

a^i_(x,y)는 i번째 커널의 (x,y) 위치의 출력이 ReLU를 통과한 것입니다. sum은 n만큼의 인접한 커널에서 이루어집니다. 이러한 종류의 response normalization은 lateral inhibition을 구현한 형태라는데, 다른 커널에서 계산된 출력과 경쟁을 일으키는 것입니다. 아래 이미지는 lateral inhibition의 예인 헤르만 격자입니다.

 

3.4. Overlapping Pooling

컨볼루션 신경망에서 풀링 계층(Pooling Layer)은 이웃 뉴런의 출력을 요약하여 특성 맵(feature map)을 줄이는 역할을 한다.  일반적으로 풀링 윈도우는 서로 겹치지 않도록 설정되지만, 본 논문에서는 오버랩 풀링(Overlapping Pooling)을 사용하였다.

예를 들어, 풀링 윈도우 크기(zz)를 33, 스트라이드(ss)를 22라고 가정했을 때, 풀링 윈도우가 이동할 때 일부 영역이 겹치게 된다. 이는 일반적인 풀링에서 윈도우가 겹치지 않도록 설계하는 경우와 차별점을 만든다.

풀링 윈도우가 겹침으로 인해 동일한 픽셀이 여러 번 계산에 포함될 수 있으며, 이를 통해 출력값의 다양성을 높이고 네트워크의 일반화 성능을 향상시키는 데 기여한다.

 

3.4. Overall Architecture

AlexNet의 네트워크는 5개의 컨볼루션 계층(conv layer)과 3개의 완전 연결 계층(fully-connected layer)으로 구성되어 있다.
2,4,5번째 컨볼루션 계층은 같은 GPU에서만 연결되도록 설계되었으며, 3번째 컨볼루션 계층은 2번째 컨볼루션 계층의 모든 커널 맵에 연결되어 있다. 

1. 1번째 컨볼루션 계층은 224x224x3 크기의 입력 이미지를 11x11x3 크기의 커널 96개로 처리하며, 스트라이드 4를 사용한다. 이 계층의 출력은 55x55x96 크기의 특성 맵으로, 이후 맥스 풀링(Max Pooling)을 적용해 27x27x96으로 줄인다.

2. 2번째 컨볼루션 계층은 27x27x96 입력을 5x5x48 크기의 크기의 커널 256개로 처리하며, Local Response Normalization(LRN)과 맥스 풀링을 거친다. 최종 출력 크기는 13x13x256이다.

3. 3번째 컨볼루션 계층은 3x3x256 크기의 커널 384개를 사용하며, 크기는 13x13x384로 유지된다. 여기서는 정규화와 풀링 없이 다음 계층으로 연결된다.

4. 4번째 컨볼루션 계층은 3x3x192 크기의 커널 384개로 처리하며, 크기는 동일하게 13x13x384로 유지된다.

5. 5번째 컨볼루션 계층에서는 3x3x192 크기의 커널 256개를 사용하며, 최종 출력 크기는 13x13x256이다. 이후 맥스 풀링을 적용해 6x6x256으로 크기를 줄인다.

6. 완전 연결 계층에서는 특성 맵을 펼처 첫 번재와 두 번째 계층에서 각각 4096개의 뉴런으로 처리하고, 마지막 계층에서 1000개의 클래스를 예측한다.

AlexNet은 GPU 분할을 통해 작업을 효율적으로 처리하며, ReLU 활성 함수, 정규화, 맥스 풀링을 활용해 대규모 데이터셋에서 뛰어난 성능을 보였다.

 

4. Reducing Overfitting

AlexNet은 약 6천만 개의 매개변수를 포함하고 있어, 학습 데이터가 충분하지 않을 경우 과적합(Overfitting)이 발생할 가능성이 매우 크다. 본 논문에서는 과적합을 방지하기 위해 데이터 증강(Data Augmentation)과 드롭아웃(Dropout)이라는 두 가지 주요 기법을 도입하였다. 

4.1.  Data Augmentation

데이터 증강(Data Augmentation)은 오버피팅을 줄이기 위해 데이터의 양을 인위적으로 늘리는 가장 간단하면서도 효과적인 방법이다. 본 논문에서는 다음 두 가지 데이터 증강 방식을 사용하였다.

 

1. RandomResizedCrop 및 RandomHorizontalFlip

  • 학습 데이터인 256×256 이미지에서 224×224 크기의 패치를 무작위로 잘라내는 RandomResizedCrop과 좌우 반전을 적용하는 RandomHorizontalFlip 기법을 사용하였다.
  • 이 과정을 통해 하나의 이미지에서 최대 2048개의 변형된 이미지를 생성할 수 있다. 이는 데이터의 다양성을 높이고, 모델이 데이터에 과도하게 의존하지 않도록 학습을 유도한다.
  • 테스트 과정:
    • 테스트 단계에서는 좌측 상단, 좌측 하단, 우측 상단, 우측 하단, 중앙의 다섯 가지 위치에서 각각 224×224 크기의 패치를 얻는다.
    • 각 패치에 좌우 반전을 적용하여 총 10개의 이미지를 생성한다.
    • 각 이미지에서 계산된 Softmax 출력값의 평균을 최종 결과로 사용한다. 이 접근법은 단일 테스트 이미지에 대해 모델의 예측을 안정적이고 일반화되게 만든다.

2. RGB 채널 강도 변형

  • 학습 데이터의 RGB 픽셀 강도를 변화시켜 데이터에 색상 다양성을 추가하였다.
  • 구체적으로, PCA(Principal Component Analysis)를 RGB 픽셀 값에 적용하여 데이터의 색상 정보를 변형하였다.
  • 수식:
    • 각 RGB 픽셀 \( I_{xy} = \begin{bmatrix} I^R_{xy}, I^G_{xy}, I^B_{xy} \end{bmatrix}^T \) 에 대해, 추가값은 다음과 같다.

      \[
      \text{추가값} = \begin{bmatrix} p_1, p_2, p_3 \end{bmatrix} \cdot \begin{bmatrix} \alpha_1 \lambda_1, \alpha_2 \lambda_2, \alpha_3 \lambda_3 \end{bmatrix}^T
      \]

      - \( p_i \): RGB 픽셀 공분산 행렬의 \(i\)-번째 고유벡터(Eigenvector).
      - \( \lambda_i \): \(i\)-번째 고유값(Eigenvalue).
      - \( \alpha_i \): 평균이 0이고 표준편차가 0.1인 가우시안 분포에서 추출된 랜덤 변수.
      이 변환은 조명과 색상 강도가 달라지더라도 물체의 정체성을 유지할 수 있도록 모델을 학습시킨다.

4.2. Dropout

드롭아웃(Dropout)은 뉴런 간의 복잡한 상호 적응(co-adaption)을 줄이고, 과적합을 방지하기 위한 정규화 기법이다. 본 논문에서는 처음 두 개의 완전 연결 계층(Fully Connected Layers) 뒤에 드롭아웃을 적용하였다.

 

Dropout의 원리

1. 학습 단계

 

  • 각 학습 단계에서 은닉층의 뉴런 출력 값을 0.5의 확률로 0으로 설정한다.
  • 0으로 설정된 뉴런은 해당 단계에서 비활성화되며, 순전파(Forward Pass)와 역전파(Backward Pass)에 참여하지 않는다.
  • 이는 매번 입력 데이터에 따라 활성화되는 뉴런이 달라지므로, 여러 뉴런 간의 복잡한 상호 적응을 방지하고 네트워크의 일반화 성능을 높인다.

2. 테스트 단계

  • 테스트 단계에서는 학습된 네트워크를 평가하기 위해 모든 뉴런을 활성화한다.
  • 그러나, 학습 단계에서는 뉴런의 절반만 활성화되었기 때문에, 테스트 단계에서는 출력값에 0.5를 곱해 보정한다. (각 뉴런의 기여도를 절반으로 조정한다는 뜻)
  • 이는 학습 단계에서 뉴런의 평균 활성화를 반영하는 방식으로, 테스트 시 과도한 출력이 발생하지 않도록 조정한다.

5. Details of Learning

 

이 장에서는 AlexNet의 학습 과정에 사용된 하이퍼파라미터, 가중치 및 바이어스 초기화 방법 등을 소개한다. AlexNet은 대규모 데이터셋과 네트워크의 특성을 고려하여 학습의 안정성과 성능을 극대화하기 위해 세심하게 설계된 하이퍼파라미터와 초기화 전략을 사용하였다.

 

1. 학습에 사용된 주요 설정

  1. 최적화 알고리즘 (Optimizer): 확률적 경사 하강법(Stochastic Gradient Descent, SGD)을 사용.
  2. 배치 크기 (Batch Size): 128
  3. 모멘텀 (Momentum): 0.9
    • 학습 과정에서 이전 단계의 그래디언트를 일정 비율 반영하여 수렴 속도를 빠르게 하고, 지역 최적해에 갇히는 문제를 완화.
  4. 가중치 감소 (Weight Decay): 0.0005
    • 가중치 크기를 제어하여 과적합을 방지하는 규제항 역할을 수행.
  5. 가중치 초기화 (Weight Initialization):
    • 가중치를 평균(μ)이 0이고 표준편차(σ)가 0.01인 가우시안 분포에서 샘플링하여 초기화.
  6. 바이어스 초기화 (Bias Initialization):
    • 2번째, 4번째, 5번째 컨볼루션 계층과 완전 연결 계층의 바이어스는 1로 초기화.
    • 1번째와 3번째 컨볼루션 계층의 바이어스는 0으로 초기화.
    • 이러한 차이는 ReLU 활성 함수가 초기 학습 단계에서 더 잘 작동하도록 하기 위한 설계.
  7. 초기 학습률 (Initial Learning Rate): 0.01
    • 학습률은 학습 과정에서 검증 오류(validation error)가 개선되지 않으면 10배씩 줄인다.
  8. 학습 기간 (Epochs): 약 90번의 데이터셋 반복.

2. 가중치 갱신 수식

SGD와 모멘텀을 활용하여 가중치를 갱신하는 수식은 다음과 같다.

- \( v_i \) : 현재 학습 단계에서의 모멘텀 변수.
- \( w_i \) : 현재 단계의 가중치.
- \( \epsilon \) : 학습률(Learning Rate).
- \( \frac{\partial L}{\partial w_i} \) : 현재 가중치  \(w_i \)에서의 손실 함수 \(L\) 의 그래디언트. 
- \( D_i \) : 배치 크기 i에서 계산된 데이터 샘플.

 

3. 수식의 의미

- 모멘텀 반영\( (0.9⋅v_{i}) \) : 이전 단계에서 모멘텀 변수 \(v_i\)를 90% 반영하여 현재 단계의 변화량에 영향을 미친다. 이는 학습 속도를 안정화하고 진동을 줄이는 데 기여한다.

- 규제항 적용 \( (-0.0005 ⋅ ϵ ⋅w_i)\) : 가중치 감소(Weight Decay)를 통해 가중치 크기를 줄이고, 과적합을 방지한다.

- 그래디언트 적용 (\( \frac{\partial L}{\partial w_i}) \) : 현재 배치의 그래디언트를 사용하여 가중치를 업데이트한다.

- 가중치 업데이트 \((w_{i+1} := w_i + v_{i+1})\) : 이전 단계의 가중치 \(w_i\)에 새로운 변화량 \(v_i\)을 더하여 다음 단계의 가중치를 계산한다.

 

3. 학습의 주요 특징

 

  • 모멘텀 활용:
    • 모멘텀은 경사 하강법의 단점인 느린 수렴과 지역 최적해에 갇히는 문제를 완화한다. 이를 통해 학습 속도를 높이고 수렴 과정을 안정화한다.
  • 가중치 감소:
    • 규제항(Weight Decay)은 모델이 과적합하지 않도록 가중치 크기를 제어한다. 이는 특히 파라미터 수가 많은 AlexNet에서 필수적인 요소이다.
  • 초기화 전략:
    • ReLU 활성 함수는 초기 바이어스 값에 따라 학습 성능이 달라질 수 있다. 이 때문에 일부 계층에서 바이어스를 1로 초기화하여 초기 학습을 돕는다.
  • 학습률 조정:
    • 학습률을 수동으로 감소시키는 전략은 학습 후반부에서 최적의 결과를 얻는 데 중요한 역할을 한다.

6. Results

ILSVRC-2010에서 Top-1 오류율 37.5%, Top-5 오류율 17.0%를 기록하여, 기존 최고 성과인 Top-1 오류율 47.1%와 Top-5 오류율 28.2%를 대폭 개선하였다. ILSVRC-2012에서도 Top-5 오류율 16.4%로 성능을 크게 향상시켰으며, 여러 모델을 결합한 방식으로 15.3%라는 뛰어난 결과를 얻었다. 이러한 성과는 대규모 데이터셋에서 컨볼루션 신경망의 우수한 성능을 입증하며, 특히 이미지 분류 분야에서 획기적인 진전을 나타낸다.