2012 Imagenet Challenge에서 1위를 차지한 네트워크에 대한 논문이다. 

 

요약 

  • 학습에 사용된 데이터셋 : 1.2 million high-resolution images, (ImageNet LSVRC-2010), 1000 classes,
  • 모델의 파라미터 : 60 million, 650,000 neurons
  • 모델의 구성 ; 5conv, maxx-pooling, 3 FCL(Fully-Connected Layers), 1000 softmax, dropout  with 2GPU

 

1. 데이터셋 

  • 대회에서 사용된 데이터셋은 ImageNet dataset에서 각 카테고리별 대략 1000장의 이미지를 이용하여 총 대략 1.2 million의 학습 이미지와 5만 장의 validation, 15만 장의 testset을 기준으로 한다 
  • 해당 데이터의 size는 256x256이다 
  • 해당 논문에서는 이미지에서 각 픽셀 별로 전체 픽셀의 평균값을 빼는 전처리를 제외하고는 다른 전처리를 하지 않았다 
  • 3 채널의 RGB 데이터를 사용하였다 

2. 아키텍처 

  • ReLu (Rectified Linear Unit : 정류 선형 유닛) : 이전의 모델의 경우 sigmoid나 tanh(x)를 사용하지만 이 모델에서는 ReLu를 사용하였다. 
    - 이런 대규모 데이터셋을 학습시킬 때는 빠른 학습 속도도 중요하다. ReLu 같은 Non-saturating non-linearities 함수가 기존의 saturating non-linearities 함수보다 빠른 학습 속도를 가진다. 
    - 여기서 Non-saturating Non-linearities 함수는 입력 X가 무한대로 갈 때 함수의 값이 무한대로 가는 것을 의미하고 
      saturating Non-linearities 함수는 입력 X가 무한대로 갈 때 함수의 값이 어떤 범위 내에서만 움직이는 것을 의미한다 
    - 추가적으로 ReLu는 위에서 설명했듯이 함수의 값이 어떤 범위 내에서만 움직이는 것이 아니기 때문에 Gradient Vanishing에 강하다. 이런 깊은 신경망을 학습시킬 때 좋다 
  • 병렬 GPU 사용 
    - 저자가 사용한 GPU는 GTX 580이고 3GB의 memory를 가지고 있다. 이런 대용량의 데이터를 하나의 GPU에서 학습시키기에는 너무 대용량이다 - 깊은 신경망을 학습시키기에 충분하다. 그렇기 때문에 병렬 GPU 처리를 사용하였다
    - 학습을 시작할 때 첫 convolution에서 kernel별로 절반씩 서로 다른 GPU에 할당하여 각각 다른 영역을 계산하고 특정 layer에서는 각 output을 합쳐서 계산을 진행한다.
  • LRN( Local Response Normalization )
    - ReLu의 특성상 입력에 대해 positive 한 input이 생성되지만 저자는 일반화에 더 집중하고 싶어 해당 기능을 추가하였다.
    - Kernel의 특정 좌표 x, y에 pixel이 주변의 값들보다 너무 크지 않게 정규화하는 작업이다. 모든 좌표에서 앞 2, 뒤 2 커널들에 해당 좌표의 값들의 제곱합을 이용하여 해당 좌표의 값을 주변보다 너무 튀지 않게 변경한다 
  • Overlapping Pooling 
    - 이전에는 stride와 kernel size를 같게 하여 겹치는 영역이 없이 pooling을 진행했지만 수많은 이미지와 ReLu에서 특정 영역에 치중한 학습(Overfit)할 수 있어 해당 기능을 사용한 것 같다 
    - 예 : 차량의 경우 밝은 헤드라이트만을 보고 그 이미지가 차량이라고 예측할 수 있지만 겹치는 영역을 사용하면 라이트와 주변 값들에 대해서 더 고려하여 예측할 것이다.
    Overlapping pooling
    LRN(Local Response Nomalization)
    Sigmoid tanh ReLu
    전체적인 네트워크 구조

첫번째 Conv의 Kernel의 가중치를 시각화한 모양


3. 오버 피팅 감소 

  • Data Augmentation 
    - 256x256 이미지를 224x224 이미지로 랜덤 하게 Crop 하여 데이터를 생성하고 수평 반전을 이용하였다 
    - 추론에서는 이미지에서 각 코너별로 4개, 중앙 1개의 patch를 생성한 후 수평 반전을 하여 총 10개 의 이미지를 예측한 후 output의 평균을 최종 예측으로 하였다 
  • Normalization 
    - 모든 트레이닝 셋에 대하여 각 픽셀 RGB에 대하여 PCA를 진행하여 고윳값, 고유 백터와 평균 0, 표준편차 0.1을 가지는 가우시안 분포를 따르는 랜덤 값을 각 픽셀에 더하여 Normalization 하였다 
    - p : 고유 벡터, λ : 고윳값, α : 가우시안 랜덤 값 
    각 픽셀별 Normalize 공식 - 모든 RGB에 해당 값을 합
  • Dropout - 해당 시대에는 최신 기법

4. 학습 파라미터 

  • SGD 사용 
  • batch size = 128
  • momentum = 0.9
  • weight decay = 0.0005
  • learning rate = 0.01 - validation error가 계속 변하지 않으면 10으로 나눔 - 실험 중 3번 변경됨 
  • epoch = 90
  • 2개의 GTX 580 3GB로 5~6일 걸림 

+ Recent posts