AlexNet 논문읽기 및 논문구성요소

AlexNet 성능개선 전략

모델 아키텍처

  1. Relu
  2. Duel GPU
  3. LRN
  4. Overlapping pooling

오버핏 해소 전략

  1. Augmentation(증강) - 데이터 수 높인다. Random crop, RGB shift
  2. Drop-out - 동일 모델로, 실제 학습에 참여한 파라미터의 조합이 바뀐다.

디테일 파라미터 3가지

  1. 모멘텀
  2. Weight decay
  3. 초기화: 정규분포 - std:0.01
  4. Learning rate 스케줄: reduce LR on pleatu - 0.01 -> 1/10

추가전략 2가지

  1. 앙상블
  2. 미세조정(Fine-tuning)

논문구성요소

Abstract(초록)

논문으로 얻고 싶은 목록을 작성한다.

목록을 작성하지 못하면, 모델구조, 학습방식, 성능개선전략 만 뽑아내자

  • 모델구조:
    • 6천 만개의 파라미터, 65만 뉴런
    • 5개의 합성곱계층(pooling 계층 포함)
    • 3개의 완전연결계층(65만개 뉴런)
    • 최종 1000개

  • 학습방식:


  • 성능개선전략
    • non-saturating 뉴런 사용
    • gpu 이용한 효율적인 cnn연산
    • 과적합 방지, 드롭아웃 이용 

Introduction

굳이 읽을 필요 없다.


2. The dataset

  • ImageNet: 22,000개의 카테고리, 150만개 라벨링 이미지 데이터셋

  • 기존 이미지 크기가 다양하므로 256 x 256 크기의 이미지로 다운샘플링 작업 실시. (Head의 완전 연결층 때문)

  • Zero 센터링 실시

3. The Architecture

3.1 ReLU Nonlinearity
  • tanh(x) 혹은 1/(1+e^-x) (=Sigmioid 함수)를 사용하면 training error가 잘 떨어지지 않는다. (train이 잘 안되기 때문에 underfit)(기울기 소실 문제)
  • non-saturating nonlinearity 즉 ReLU 함수를 쓰면 training error가 더 잘 떨어진다. 

3.2 Training on Multiple GPUs
  • two GPUs (GTX 580 GPU has only 3GB of memory)

3.3 Local REsponse Nomalization
  • Convolution(ReLU) 결과에 정규화를 한다.
  • 입력 데이터가 아닌, 결과 피처맵에 정규화하는 것을 말한다.
  • top1, top-5 error가 각각 1.4%, 1.2% 감소했다.
    • top1: n개의 label 예측 값 중 상위 1개가 정답인가?
    • top5: n개의 label 예측 값 중 상위 5개에 정답이 있는가?

3.4 Overlapping Pooling
  • Overlap: 겹치는 것.
  • Non-Overlap: 일반적인 Pooling, 사이즈 = stride

  • Overlap: s(stride)=2, z(size)=3, Pooling 결과 피처맵 사이즈는 s(stride)의 영향을 받으므로 s=2, z=3, Non-Overlap의 결과 피처맵과 유사하다.
  • Overlap Pooling으로 약간 Overfit을 방지했다.

  • Overlap은 더 일반화(추상화)된 피처맵을 만든다.
    • 4개의 최대값과 4개의 최대값이 같을 확률보다 9개의 최대값과 9개의 최대값이 같을 확률이 더 높다. 겹치는 갯수가 많아질수록 추상화가 잘 된다.
    • 데이터가 추상화 된다는 것은 단서가 더 추상화되므로 정답을 맞추기 어렵다.
    • Overfit을 방지했다. 

3.5 Overall Architecture
  • 227 x 227 x3 
    • Convolution: 11 x 11 x 3, n=96, s=4, padding=none
    • prameter = 364 x 96 = 34,944
  • 55 x 55 x 96
    • Pooling: 3 x 3, s=2
  • 27 x 27 x 96
    • Convolution: 5 x 5 x 96, n=256, s=1, padding=same
    • prameter = 2,401 x 256 = 614,656
  • 27 x 27 x 256
    • Pooling: 3 x 3, s=2
  • 13 x 13 x 256
    • Convolution: 3 x 3 x 256, n=384, s=1, padding=same
    • prameter = 2,305 x 384 = 885,120
  • 13 x 13 x 384
    • Convolution: 3 x 3 x 384, n=384, s=1, padding=same
    • prameter = 3,457 x 384 = 1,327,488
  • 13 x 13 x 384
    • Convolution: 3 x 3 x 384, n=256, s=1, padding=same
    • prameter = 3,457 x 256 = 884,992
  • 13 x 13 x 256
    • Pooling: 3 x 3, s=2
  • 6 x 6 x 256 (Flat 9216)
    • prameter = 9217 x 4096 = 37,752,832
  • fc1 4096
    • prameter = 4097 x 4096 = 16,781,312
  • fc2 4096
    • prameter = 4097 x 1000 = 4,097,000
  • fc3 1000

  • total prameter = 62,378,344

4. Reducing Overfitting

  • 파라미터: 6000만 -> 데이터 120만개로는 overfit
  • 4.1 Data Augmentation: 데이터가 많을 수록 어려워지므로, 데이터를 늘린다. 
    • 다양한 이미지를 256 x 256으로 바꿨다.
      • RandomCrop을 224 x 224로 한다. 2048개를 추가로 만든다.
    • RGB channels 의 강도를 변경했다.
  • 4.2 Dropout: 모델 복잡도를 낮춘다. 파라미터 수를 줄인다.
    • 단일 모델로 앙상블(여러 모델 합치기) 효과를 낸다.
    • 0.5의 확률로 뉴런의 결과 값을 0으로 만든다. (training에 사용하지 않는다.)
    • input이 들어올 때마다, 활성화 되는 뉴런들이 바뀐다.
      • 각 배치마다 시행에 사용된 모델 자체는 동일하지만, 실제 학습에 참여한 파라미터의 조합은 바뀐다.
    • drop out은 fc1 과 fc2에 사용한다.
    • drop out은 epochs를 2배 더 필요로 한다. training error가 더 늦게 떨어지게 했다. overfit을 해결하기 위해 underfit화 하다.
    • train 할 때만 Dropout 하고, test할 때는 Dropout 하지 않는다.

5. Details of learning

  • Weight update
    • SGD(stochastic gradient descent)
    • momentum:
      • 0.9 * V(i)
    • weight decay (억제 파라미터):
      • W(i): 모델 복잡
      • - 0.0005 * lr * W(i)
    • W(i+1) = W(i) - lr * G 과 비교
      • 앞부분에 추가된 부분 0.9 * V(i) - 0.0005 * lr * W(i)
  • 정규분포 - zero-mean Gaussian distribution

  • learning rate 스케줄:
    Callback - 3) ReduceLROnPlateau:

  • 1batch당 0.5초~ 0.6초

6. Results

  • 앙상블:
     비슷한 CNN 5개의 예측을 평균한 모델은 16.4%를 기록했다.
    • ex1: dropout을 각각 다르게 준 모델 생성 (은닉층 노드는 동일)
      • models = [
      •     CNNModel(1024, 0.5),
      •     CNNModel(1024, 0.6),
      •     CNNModel(1024, 0.7),
      •     CNNModel(1024, 0.8),
      •     CNNModel(1024, 0.9)
      • ]
    • 각 모델을 학습
    • 예측 값을 평균 냄
    • ex2: 은닉층 노드를 다르게 준 모델 생성 (dropout은 동일)
      • additional_models = [
      •     CNNModel(512, 0.5),
      •     CNNModel(256, 0.5)
      • ]

  • 미세조정:
    ImageNet 2011 Fall 데이터를 분류하기 위해 만든, 풀링계층 이후에 6개의 합성곱 계층을 추가한 CNN 모델을 미세조정(fine-tuning) 시켰을 때 16.6% 에러율을 달성했다. 

  • 앙상블 + 미세조정:
    방금 언급한 미세조정한 모델과 CNN5개의 예측을 평균한 모델을 더해 또다시 예측을 평균하였더니 15.3%의 에러율을 기록하였다.

7. Discussion

layer 깊이가 늘어날수록 에러율이 낮아지지만, 8층까지만 함. 


논문 팁

논문 보조툴

1) typeset.io
2) scite.ai
3) explainpaper.com
4) notebookLM 

번역기

1) 구글 번역기
2) DeepL 번역기

댓글 쓰기

다음 이전