Deep learning/Algorithms

[논문 리뷰] 딥러닝의 도약: ImageNetClassificationwithDeepConvolutional NeuralNetworks

Hannah_ko 2019. 5. 28. 13:41
SMALL

논문 저자: Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton

 

논문 정리해보기

 

 

1) Introduction

  • ILSVRC-2010과 ILSVRC-2012 대회에서 사용된 데이터 셋을 사용하였다.

  • 2D convolution의 최적화된 GPU를 구현하였다.

  • Dataset에 대한 Overfitting을 해결하려 한다.

  • 최종적으로 5가지의 convolutional layers와 3개의 fully-connected layers를 포함한다.

    → convolution layer를 제거하면 성능이 떨어짐을 확인

  • 두 개의 GTX 580 3GB GPU를 이용하여 5-6일 정도의 training 시간이 소요되었다.

 

2) The Dataset

  • ImageNet은 22,000개로 간략하게 분류된 고해상도의 라벨링된(labeld) 15 million(1500만 개)개의 이미지를 말한다. 이 이미지들은 Amazon의 Mechanical Turk crowd-sourcing tool을 이용해서 사람이 분류했다.
  • ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)는 ImageNet의 이미지 중 1,000개의 이미지를 1,000개의 카테고리로 분류한 것을 사용한다.
  • 120만 개의 training images, 50,000개의 validation images, 150,000개의 testing images가 이용되었다.
  • 논문의 CNN은 동일한 차원의 이미지들이 필요한 반면, ImageNet의 이미지들은 다양한 해상도를 가지고 있다. 따라서 이미지들을 256 x 256으로 다운샘플링(down-sample)* 하였다.
  • 각 픽셀에서 트레이닝 세트의 평균(mean activity)를 빼 주는 경우를 제외하고 다른 이미지 전처리는 하지 않았다.
  • 네트워크의 중심 RGB값을 훈련에 사용하였다.

* down-sampleing: 이미지를 정수배 만큼 축소시키는 것

 

3) The Architecture

3.1 ReLU Nonlinearity

  • 일반적인 뉴런 출력 f를 입력 x의 함수로 모델링하는 방법은 f(x) = tanj(x) 또는 f(x) = (1 + e - x) -1이다. 그러나 이런 방법은 포화 비선형 함수(saturating nonlinearities)로 비포화 비선형 함수(non-saturating nonlinearity)인 f(x) = max(0, x)보다 훈련시간이 오래 걸린다.
  • 따라서, 비포화 비선형 함수인 ReLUs(Rectified Linear Units)를 사용한다.
  • f(x) = |tanh(x)| 함수도 훈련 시간을 단축시킬 수 있지만, 이 논문에서는 overffiting을 방지하여 훈련하는 것이 목표이므로 ReLU함수를 선택하였다.
  • ReLUs함수가 tanh 함수보다 훨씬 빠르게 학습한다는 것을 확인할 수 있는 그래프(DataSet: CIFAR-10)

 

실선: ReLU / 점선: tanh

  • 5개의 convolutional layer, 3개의 fully-connedted layer

3.2 Training on Multiple GPUs

  • NVIDIA의 GTX580 3G GPU 두 개를 사용하였다.

  • 각 GPU는 특정 layer(또는 뉴런)에서만 정보를 교환한다.

    (layer 3의 커널들은 layer 2의 커널 맵을 입력 값으로 받고, layer 4는 같은 GPU안의 layer 3의 커널 맵으로만 입력 값을 받는다.) ?? -> 이 부분이 정확히 이해되지 않았다..ㅠㅠ

3.3 Local Response Normalization

  • ReLU는 입력 값을 정규화 하지 않아도 된다.
  • 그러나, local normalization(정규화)이 일반화에 도움이 된다는 사실을 발견하였다. (네트워크 상의 ReLU 함수를 통과한 ouput들을 같은 위치(x, y)에 인접한 커널 맵을 n개 모아서 정규화 하는 방법이다.)

i = 커널의 갯수 / k, n, a, b = 하이퍼파라미터

  • 이 논문에서는 k = 2, n = 5, a = 10^-4, b = 0.75를 사용했다.

3.4 Overlapping Pooling

  • pooling층은 pooling unit의 위치를 중심으로 하는 z x z 이웃을 정리하는 각 각 의 풀링 유닛을 그리드로 구성한다. (s pixels)

  • s = z의 경우, 일반적인 CNN 로컬 풀링을 가진다.

  • s < z인 경우, 오버랩 풀링이 된다. → overfitting을 막는데 도움을 준다.

    여기서는 s = 2, z = 3일때, top-1, top-5 오류율을 각각 0.4%, 0.3% 정도 줄일 수 있다.

3.5 Overall Architecture

  • CNN의 net은 가중치가 있는 8개의 레이어를 포함한다.
  • 처음 5개는 convolutional 레이어이고, 나머지 3개는 완전히 연결되었다(fully-connected).

  • 마지막 fully-connected 레이어의 출력은 1000 way softmax로 공급되어 1000개의 클래스로 분류된다.

 

4) Reducing Overfitting

4.1 Data Augmentation

  • 데이터의 overfitting을 막기 위해, 레이블은 유지한 채 데이터를 인위적으로 증식시키는 두 가지 방법이 있다.      첫 번째, 이미지를 뒤집고 수평으로 돌리는 방법이다. 이는 training set를 2,048배로 정량화해주지만 늘어난 데이터가 트레이닝 세트와의 의존도도 높게 유지할 수 있다. 두 번째, 트레이닝 이미지에서 RGB 채널의 강도를 바꿔주는 방법이다. 여기서는 ImageNet의 트레이닝 셋 전체에서 RGB 픽셀 값 집합에 대해 PCA***를 수행한다.

 

*** PCA(Principal Component Analysis): 주성분 분석을 뜻하며, 데이터의 값들이 분포해 있을 때 주성분(Principal component)을 찾아주는 방법이다. 주로 영상인식, 통계 데이터 분석(주성분 찾기), 데이터 압축(차원 감소), 노이즈 제거 등에 사용된다.

[출처: https://darkpgmr.tistory.com/110]

 

4.2 Dropout

  • 50%의 확률로 hidden layer의 아웃풋 값을 0으로 출력하는 것이다. 이 때 선택되는(0을 출력하게 되는) 레이어는 랜덤하게 선택된다.
  • 이렇게 drop out된 레이어들은 순방향, 역방향 전파에 참여하지 않음으로써, 입력이 제공될 때 신경망은 다른 아키텍처를 샘플링하지만 모든 검색 알고리즘은 가중치를 공유하게 된다.
  • 이는 뉴런이 다른 특정 뉴런에 의존할 수 없으므로 복잡한 뉴런의 공동적응(co-adaptation)을 감소시킬 수 있다.

 

5) Details of learning

  • batch size 128, momentum 0.9, weight decay 0.0005를 이용하였다.
  • weight decay는 모델의 훈련 오류를 줄인다.

 

6) Results

  • ILSVRC-2010에 대한 결과표

    37.5%, 17.0%의 top-1과 top-5의 테스트 세트 오류율 달성했다.

  • ILSVRC-2012에 대한 결과표

    이 대회의 테스트셋의 라벨이 제공되지 않기 때문에 검증과 테스트 오류율울 서로 바꿔서 사용했다.

 

6.1 Qualitative Evaluations

  • 네트워크의 두 개의 데이터 연결 계층(data-connected layers)에서 학습한 convolutional kernels을 보여준다.
  • 위 네트워크는 다양한 주파수 및 방향 선택성 커널 뿐만 아니라 다양한 색상의 blobs를 학습했다.
  • GPU1의 커널은 색상에 영향을 받지 않았지만, GPU2는 색상에 특화되어 있다.

  • 위 그림의 왼쪽 패널에서는 네트워크가 8개의 테스트 이미지에서 상위 5가지 예측을 계산한 것을 질적으로 평가한 것이다.
  • 왼쪽 위의 작은 진드기의 경우에도, net에 의해 구분되는 것을 보인다.(사물이 사진 중앙에 있지 않아도 구분할 수 있다.)
  • 오른쪽 패널은 세트의 다섯 이미지와 가장 유사한 6가지 이미지를 보여준다.
  • 이미지 라벨이 없는 이미지에 인코더를 적용하는 방법을 모색하기 때문에 이미지와 유사한 패턴을 가진 이미지를 검색하는 경향이 있다.

 


[참고 문헌]

1. Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. "ImageNetClassificationwithDeepConvolutional NeuralNetworks". 2012

 

 

논문의 자세한 이해는 다음 포스팅에서 올려야겠다..ㅠㅠ

LIST