[논문리뷰] AlexNet : ImageNet Classification with Deep Convolutional Neural Networks (1)

김소영·2025년 3월 3일

paper-review

목록 보기
7/7

1. Introduction

최근 "객체 인식" 문제에 "머신러닝" 방식이 필수적

성능 개선을 위해서는

  • 데이터셋 크기 ↑
  • 강력한 모델
  • 오버피팅 방지를 위한 더 나은 기술

데이터셋 크기

  • 간단한 작업의 경우 작은 크기의 데이터로도 해결 가능
  • BUT 현실에서는 다양하기 때문에 적은 크기의 데이터셋의 한계 인지
    → 더 큰 크기의 훈련데이터 필요
  • 새로운 Larger Dataset 등장 ( LabelMe , ImageNet )

강력한 모델

  • Larger Dataset을 다룰 수 있는 모델 필요
  • 엄청나게 복잡한 객체 인식 작업을 위해서는
    • ImageNet과 같이 큰 데이터셋으로도 부족
    • 그래서 모델이 가지지 못한 데이터를 보완하기 위한 많은 prior knowledge 필요
  • CNNs (Convolutional neural networks)
    • 깊이 , 너비 파라미터 조정
    • 이미지에 대해 대부분 올바르게 예측
    • 다른 순방향 신경망에 비해 connection↓ & parameter↓ → 쉬운 훈련

오버피팅 방지

  • 고성능 GPU + 최적화된 2D 합성곱 → 더 큰 CNN 훈련 가능
  • 모델이 커질수록 오버피팅 위험 증가
  • 이를 해결하기 위해 논문에서는 오버피팅 방지 기법 적용

이 논문에서 제안하는 CNN의 특징
1. 성능 개선 & 훈련 시간 감소
2. 오버피팅 방지
3. 5 convolutional layers & 3 fully-connected layers
*깊이(depth) 조정이 성능에 결정적 역할




2. The Dataset

  • 주로 사용한 데이터셋 : ILSVRC-2010
    • ILSVRC : ImageNet의 일부 데이터
    • ILSVRC-2010 : test set label이 가능한 유일한 ILSVRC 버전
    • Train : 1,200,000 / Val : 50,000 / Test : 150,000
  • Pre-Processing
    • 이미지별 resolution이 다양하므로, 모든 이미지를 256 X 256으로 downsample
    • 더 짧은 변을 256px로 rescale → 중앙에서 256×256 패치 자르기



3. The Architecture

  • 8개의 학습된 층 (5 CONV & 3 FCs)

논문에서 제시한 CNN 구조의 새로운 특징

3.1 ReLU Nonlinearity

  • 기존 활성화 함수 (neuron's output , activation function) : Tanh 함수
    • f(x)=tanh(x)f(x) = tanh(x) or f(x)=(1+ex)1f(x) = (1+e^{-x})^{-1}
    • Tanh 함수의 특징
      • 수의 범위 [-1,1]로 압축
      • 0 중심
      • 포화 상태에서 기울기 소실 (Saturated)
  • 훈련 시간 감소를 위해 "비포화 함수인 ReLU 함수" 사용

  • 이전에도 Tanh 함수의 한계 극복을 위해 f(x)=tanh(x)f(x) = |tanh(x)| 제안되었음.
    하지만 이는 오버피팅 방지에 초점을 맞춘 접근법.
  • 위 논문에서는 "학습 속도"에 초점을 맞춰 ReLU 사용
  • 빠른 학습 : 큰 데이터셋을 훈련하는 큰 모델의 성능에 영향↑


3.2 Training on Multiple GPUs

  • 참고로 GPU 성능이 발전되어 최근에는 잘 사용하지 않는 기술
  • 과거에는 GTX 580 GPU는 3GB 메모리밖에 없었기 때문에,
    하나의 GPU로는 1,200,000개의 이미지를 학습하기에 부족함

Cross-GPU Parallelization

  • 2개의 GPU 활용
  • 특정 single layer 내에 2개의 GPU가 존재해 서로 데이터가 공유됨
    (다른 layer와는 공유 X)
  • kernel은 절반으로 나누어 각각의 GPU에 적용
  • 효과 : 1개의 GPU로 학습한 네트워크에 비해 학습 시간↓ & top-1과 top-5 오류율↓


3.3 Local Response Normalization

  • 참고로 LRN 또한 최근에 거의 사용되지 않음. 대신 Batch Normalization 사용..?
  • ReLU는 포화(saturating) 문제를 방지하기 위한 입력 정규화(normalization)은 필요 없음
  • 하지만 LRN은 일반화 성능을 향상시켜줌
  • 실제 뉴런에서 발생하는 "측면 억제(lateral inhibition)"와 같은 기능을 함
  • 큰 활성화 값을 가진 뉴런이 억제되는 효과
    • ReLU 활성화 함수는 음수는 0으로 만들고, 양수는 그대로 전달 → 특정 뉴런이 과도하게 활성화될 가능성이 있음
    • 이러한 문제를 해결하기 위해 각 뉴런의 활성화 값이 주변 kernel의 값들과 비교해 정규화


3.4 Overlapping Pooling

  • s (이동 간격) z (크기)
  • s = z
    • 주로 사용하는 방식
    • non-overlapping
    • 기존 크기 유지
  • s < z
    • overlapping
  • AlexNet의 경우, 모든 pooling unit의 값을 동일하게 값 적용 → s=2, z=3 (s < z)
  • non-overlapping pooling unit에 비해, overlapping pooling unit은 top-1와 top-5 오류율을 각각 0.4%와 0.3% 감소시켜주고, 오버피팅 방지해줌.


3.5 Overall Architecture

  • 5개의 convolutional layers & 3개의 fully-connected layers
  • 마지막 FC layer는 1000개의 클래스 레이블로 분류하는 Softmax 함수
  • AlexNet은 다항 로지스틱 회귀 목적함수를 최대화
    = 정답 레이블이 예측될 확률에 대한 로그확률이 최대가 되도록 학습
  • 한번 AlexNet의 구조에 따라 각 레이어에 따른 output size의 변화를 계산해보았습니다!



0개의 댓글