Learning/Paper Review

[AlexNet] ImageNet Classification with Deep Convolutional Neural Networks

눈떠보니 월요일 2023. 3. 7. 23:49

Abstract

AlexNet : ImageNet Classification with Deep Convolutional Neural Networks

  • 5개의 Conv층과 3개의 FC로 구성(6천만개의 파라미터, 65만개의 뉴런)
  • 최종 층은 1000-way softmax
  • 학습을 더 빨리 하기 위해 non-saturating 뉴런과 효율적인 GPU 구현을 사용했다.
  • 과적합을 줄이기 위해 정규화 기법인 dropout을 사용했도, 매우 효과적이였다.
contest top-1 top-5
*ImageNet LSVRC-2010 37.5% 17.0%
ImageNet LSVRC-2012 26.2% 15.3%

*1000개의 클래스로 분류된 120만개 고해상도 이미지


Index

1. Intoduction

모델 성능 향상을 위한 접근 방법

  • 더 큰 데이터 셋 수집
  • 더 강력한 모델 학습
  • 과적합 방지를 위한 여러가지 기술

기존의 간단한 객체 인식은 비교적 작은 데이터 셋으로도 human performance에 접근하는것이 가능했다.

(예를 들어, MNIST 숫자 인식의 경우 최상의 에러율, <0.3%)

논문 기준 최근(2012)에는 대규모의 labeled 이미지 데이터 셋 수집이 가능해졌기 때문에, 이를 학습하기 위해서는 학습 능력이 큰 모델이 필요했다.

 

CNN의 장점

  • 깊이와 폭을 변화시켜 제어할 수 있다.
  • 이미지의 특성에 대해 강력하고 대부분 정확한 가정을 한다.
  • 비슷한 크기의 층이 있는 standard feedforward 신경망에 비해 훨씬 적은 연결과 파라미터를 가지고 있다.
  • 고해상도 이미지에 대한 높은 비용이 문제였지만 GPU로 해결

본 paper가 기여한 것

  1. 가장 큰 규모 중 하나의 CNN을 학습하여 대회에 사용된 ImageNet에 대해 최고의 성과 달성
  2. 2D 컴볼루션의 고도로 최적화된 GPU 구현과 공개적으로 사용할 수 있는 CNN 구현
  3. 모델의 성능 향상과 학습 속도 단축을 위한 새롭고 드문 방법 사용
  4. 과적합 방지를 위한 몇가지 효과적인 기술들
  5. 학습에 구현된 어떤 Conv층도 제거하면 성능이 떨어진다는 것을 확인

학습 환경 및 시간 : GTX 580 3GB GPU에서 5~6일 걸림


2. The Dataset

ImageNet

  • 2만 2천개의 카테고리, 1,500만개의 labeled된 고해상도 이미지
  • 아마존의 Mechanical Turk crowd-sourcing tool로 웹에서 수집되었고, 사람들이 레이블링함
  • ILSVRC 대회는 1천개의 카테고리에서 약 120만개의 train-set, 5만개의  valid-set, 15만개의 test-set 사용
error-rate 의미
top-1 error rate 정답 레이블이 가장 확률이 높은 예측 레이블과 다른 비율
top-5 error rate 정답 레이블이 확률이 높은 5개의 예측 레이블과 다른  비율

 ImageNet은 다양한 고화질의 이미지가 있기 때문에 256x256으로 re-sizeing을 함

(가로나 세로 중 짧은 쪽을 먼저 256으로 줄이고 CenterCrop)

각 픽셀을 Centerize하는 것 외에는 다른 전처리를 적용하지 않음


3. The Architecture

  • 8개 층 - 5개의 컨볼루션층과 3개의 전결합층으로  구성

3.1  ReLU Nonlinearity

입력 x의 함수로서 뉴런의 출력 f를 모델링하는 표준 방법은 다음과 같다

경사 하강법을 사용한 학습 시간 관점에서, 이러한 saturating nonlinearities는 Non-saturating nonlinearity 보다 훨씬 느리다.

  • 이러한 nonlinearity를 가진 뉴런을 Rectified Linear Units(ReLUs) 라고 한다.
  • ReLU를 사용하는 CNN은 tanh 단위를 사용하는 것 보다 몇 배 더 빠르게 훈련한다.
  • saturating nonlinearities 함수 : input x가 무한대로 갈 때, 함수 f(x)의 결과 값이 어떤 범위 내에서만 움직이는 함수 ex. Sigmoid, Hyperbolic Tangent
  • non-saturating nonlinearity 함수 : input x가 무한대로 갈 때, 함수의 결과값이 무한대로 가는 함수 ex. ReLU

ReLU(solid line) vs tanh(dashed line)

  • 해당 그래프를 확인해보면 tanh를 사용했을 때 보다 ReLU를 사용했을 때 수렴 속도가 개선된다.
  • 더 빠른 학습 속도는 대규모 데이터 셋에서 모델에 큰 영향을 미친다.

3.2 Training on Multiple GPUs

  • 하나의 GTX 580 GPU는 메모리가 3G밖에 되지 않아서 학습 가능한 네트워크의 최대 크기를 제한함
  • 본 논문에서는 두 개의 GPU에 망을 분산한다.(GPU 병렬화)
  • 이 방법을 통해 top-1, top-5 에러율을 1.7%, 1.2% 감소시켰고 2개의 GPU 넷이 훈련시간이 약간 더 적었다.

3.3 Local Response Normalization

  • ReLU는 saturating 방지를 위한 input normalization을 요구하지 않는 바람직한 특성이 있다. 그러나, local normalization 구조가 일반화에 도움이 된다.
  • ReLU는 양수값을 입력 받으면 그대로 출력하기 때문에 Pooling 등을 할 때 매우 높은 하나의 pixel 값이 주변의 pixel들에 영향을 준다. 이를 방지하기 위해 다른 활성화 맵의 같은 위치에 있는 픽셀끼리 정규화를 해준다.
  • 이 정규화를 적용하여 top-1, top-5 에러율을 1.4%, 1.2% 감소시켰다.

3.4 Overlapping Pooling

  • CNN의 풀링층은 동일한 커널에서 인접한 뉴런 그룹의 출력을 요약해준다.(전통적인 방식은 nonoverlap 방식)
  • top-1, top-5 에러율을 0.4%, 1.3% 감소시켰다.

https://bskyvision.com/entry/CNN-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EB%93%A4-AlexNet%EC%9D%98-%EA%B5%AC%EC%A1%B0

3.5 Overall Architecture

  • 2,4,5번째 Conv층의 커널은 동일한 GPU에 있는 이전 층의 커널 맵에만 연결
  • 3번째 Conv층의 커널은 2번째 계층의 모든 커널 맵에 연결
  • ReLU의 비선형성은 모든 Conv층&FC층의 출력에 적용
  • 첫 번째 Conv층은 크기가 11x11x3인 96개의 커널로 224x224x3 입력 이미지를 stride 4픽셀로 필터링
  • 두 번째 Conv층은 첫 번째 Conv층의 출력을 입력으로 사용하고 크기가 5x5x48인 256개의 커널로 필터링
  • 3,4,5번째 Conv층은 중간 Pooling 또는 정규화 층 없이 서로 연결
  • 세 번째 Conv층은 크기가 3x3x256인 384개의 커널
  • 네 번째 Conv층은 크기가 3x3x192인 384개의 커널
  • 다섯 번째는 Conv층은 크기가 3x3x192인 256개의 커널
  • FC층은 각각 4096개의 뉴런

4. Reducing Overfitting

4.1 Data Augmentation

  • 이미지 데이터에서 과적합을 줄이는 가장 쉽고 흔한 방법은 label-preserving transformation을 사용하여 데이터 셋을 인위적으로 확장하는 것
  • 약간의 코드로 디스크 저장 없이 이미지를 생성할 수 있으므로 계산이 필요하지 않다.(학습을 GPU에서 하는 동안 CPU에서 작업)
  • 첫 번째 방법은 이미지 변형과 수평 반전
  • 두 번째 방법은 이미지의 채도 변경

4.2 Dropout

  • 0.5의 확률로 각 hidden 뉴런의 출력을 0으로 설정하는 것.
  • dropout된 뉴런은 forward pass에 기여하지 않고 back-propagation에 참여하지 않는다.
  • 한 뉴런이 다른 특정 뉴런에 의지할 수 없게 함으로써 뉴런간의 상호적응력을 감소시킨다.
  • 따라서 다양한 뉴런의 조합을 사용하여 특징을 보다 더 강력하게 학습할 수 있다.
  • test시에는 모든 뉴런을 사용했지만 출력에 0.5를 곱해서 사용을 했다.
  • 첫 2개의 FC층에 dropout 적용

5. Details of learning

  • batch-size : 128 / Momentum : 0.9 / weight decay : 0.0005 로 확률적 경사 하강법을 사용하여 모델 훈련
  • 작은 양의 가중치 감쇠(단순한 정규화가 아닌, 모델 학습의 오류를 줄임)가 모델 학습에 중요하다는 것을 발견
  • 표준편차가 0.01인 zero-mean Gaussian 분포에서 각 층의 가중치를 초기화
  • 2,4,5번째 Conv층과 FC층에서 뉴런 bias 상수를 1(나머지는 0)로 초기화 (ReLU에 양수 입력을 하여 초기 단계를 가속화)
  • lr은 0.01로 초기화하고 종료하기 전에 6번 감소시킴

6. Results

각 종 대회에 대한 정성/정량적인 평가(생략)


7. Discussion

  • 층 하나를 제거하면 네트워크 성능이 저하된다는 인사이트를 얻음(예를 들어, 중간 층을 제거 했을때 2%정도의 손실이 발생함) -> 깊이는 결과에 중요한 영향을 끼친다.