ImageNet Classification with Deep Convolutional Neural Networks - Alex Net, 2012

TEMP·2021년 8월 27일
0

Papers

목록 보기
2/9

https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

1. Introduction

생략

2. The Dataset

생략

3. The Architecture

  • 이는 AlexNet의 구조이다.
    Convolution 5개와 Fully-connected 3개로 이루어져있다.
    다음 설명은 위 논문에서 중요한 순서대로 설명한 것들이다.

3.1 ReLU Nonlinearity

  • CIFAR-10 에서의 25%의 training error를 달성하기 까지의 epoch을 나타낸 그래프로 실선은 Relu 점선은 tanh이다.
  • 보통 Activation function으로 tanh 나 sigmoid를 이용하지만 ( 논문이 제시된 시점에는 그랬다. ) Relu를 사용하는 것이 training time과 gradient를 고려 했을때 더욱 좋다.

3.1 Training on Multiple GPUs

  • 논문에서 사용한 GPU는 GTX 580 3GB이고 network를 train하기 위해서는 120만장의 image가 사용되어야 한다고 판단 했기 때문에 이는 충분하지 않아 GPU를 2개 사용하여 연산을 spread한다. 또한 본 연구에서 사용하는 GPU는 cross-GPU parallelization이 잘되어 host memory를 거치지 않고 GPU상호간의 직접 읽고 쓰는것이 가능하다.

  • 중요하게 생각한 병렬화를 이용한 실험계획은 kernel ( channel of filter ) 을 반반 나누어 각각의 GPU로 보내어 GPU들이 특정 layer에서만 상호 작용 한다는 additional trick을 사용하는 것이다.
    ( 논문에서는 communicate라고 표현 했는데 이는 kernel을 반반 나누어 서로 다른 GPU로 보내고 중간에 서로 합치는 행동을 하는데 이를 표현한것. )

  • 이렇게 하여 단일 GPU에서의 kernel을 반으로 하였을 때 보다 error가 top-1은 1.7%, top-5는 1.2% 줄어들었다.

3.3 Local Response Normalization

Activation을 Relu function으로 사용하는 경우 양수의 값이면 limit가 없으므로 normalization이 필수 이다.
다만 현재는 batch normalization을 사용한다.

  • Relu는 saturating을 예방하기 위한 input normalization을 필요로 하지는 않지만 local normalization을 통해 성능이 좋아지는 것을 확인했다.

    Local Response Normalization의 식은 다음과 같다.

    bx,yib_{x,y}^{i} == ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yi)2)βa_{x,y}^i/\Biggr(k+\alpha\displaystyle\sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^i)^2\Biggr)^{\beta}

    aa : orginal data
    bb : normalized data
    NN : total number of kernels
    ii : 몇 번째 kernel인가
    k,n,α,βk,n,\alpha,\beta는 hyper parameter이다.
    논문에서는 validation set을 통하여 순서대로 2,5,104,0.752,5,10^{-4},0.75를 사용했다.
    복잡해 보이니 아래 그림을 보자.
  • Normally, in statistics, normalization means following equation : XE(X)Var(X)\dfrac{X-E(X)}{\sqrt{Var(X)}}
  • 본 논문에서는 feature을 인접 kernel을 이용하여 normalization하는 방법을 사용한다.
    즉, 처음 파란색이 5개로 connect되는것은 Adjacent 5개의 kernel을 사용하겠다는 의미이다. 이유는 다음과 같다.
    측면억제 ( lateral inhibition )

    인접하는 feature중 강한 부분(검정)이 있으면 상대적으로 약한(흰)부분이 영향을 받는다. 이렇게 하여 top-1과 top-5 error를 각각 1.4% , 1.2% 줄였고, 4-layer CNN을 사용한 CIFAR-10 dataset에서는 normalization을 이용하지 않으면 error가 13%인것에 반해 사용하면 11%이다.

    3.4 Overlapping Pooling

  • Pooling은 주변의 결과들을 summarize하는 효과가 있다.
  • 기존의 Pooling은 중복이 발생하지 않게 window size = stride 라고 하여 widow size만큼 뛰어넘어 summarize 하였는데 여기서는 window size > stride 로 하여 overlap을 발생시킨다.
  • window size = 3 , stride = 2 하였을때가 window size = 2 , stride = 2 보다 top-1과 top-5 error를 각각 0.4% , 0.3% 줄었다.

3.5 Overall Architecture

  • 전반적인 Architecture를 다시 보면

  • 그림 사이사이가 layer. ( input이 227이 맞다. )

  • 순서대로 5개의 Convolutions 3개의 Dense. 다음 1,000개로 구분하는 softmax.

  • 2,4,5번째 layer는 바로이전의 layer에서만 연산을 받고 이는 단일 GPU이다.

  • 1,2번째에는 Response-normalization layer가 적용되었다.

  • 모든 layer의 output에는 Relu가 적용되었다.

4. Reducing Overfitting

  • Overfitting은 보통 parameter가 너무 많거나, 과도하게 train을 할때 train dataset에서만 적합하고 실제 목적인 주어지지 않은 test data set에서는 오히려 적합하지 않는 경우를 말한다.

  • 다음은 overfitting을 방지하기 위한 두 가지 방법이다.

    4.1 Data Augmentation

  • Overfitting을 방지하기 위한 가장 쉬운 방법은 train dataset을 label-preserving하면서 임의로 늘리는 것이다.
    이에는 반전, 색 변화, 회전 등등 여러 방법이 있다.

    이렇게 하면 왜 overfitting이 완화되는지는 쉽게 이해할 수 있다.

    예를들어 image classification 문제라고 생각해보자
    주어진 데이터가 cat image이고 모두 오른쪽을 보고 있다고 해보자. 이렇게 train 시킨 weight는 왼쪽을 보고있는 고양이를 cat이라고 인지하지 못할 확률이 크다. 즉, Overfitting이다.
    따라서 input image을 회전도 시키고 좌우 상하 반전도 시켜서 train 했다고 해보자. 그렇면 input cat image에 대한 다양성이 증가 하게 된다. 즉, original train dataset에는 없는 data가 만들어 지지만 새로운 image가 아니며 보통의 cat image를 학습할 수 있는 재료가 된다.

  • 본 논문에서는 두가지의 augmentation을 사용하였고 이는 아주 작은 계산만을 필요로 하기에 추가적으로 저장량이 늘어나지 않는다.

    • 첫번째는 image translations and horizontal reflection이다.
      256×256에서 224 × 224로 뽑고 좌우반전을 한다.
      따라서 (256-224)×(256-224)×2 = 2,048배 증가하였다.
      ( 227이 맞는데 그럼 이게 안맞음. 그럼 224가 맞고 첫번째 convolution에서 padding을 넣은건가? )

      Test할때도 augmentation을 사용하여 10배로 증가시킨다.
      이후 10개의 image에 대한 average softmax value를 사용하였다.

    • RGB pixel에 PCA ( 주성분 분석 )를 적용.

  • 이렇게 하여 overfitting도 방지하고 top-1 error도 1% 감소하였다.



    4.2 Dropout

  • p=0.5이고 test시에는 다 살리고 data에 0.5.

    5. Details of learning

    SGD , batch size = 128 , momentum = 0.9 , equal learning rate for all layers이고 training하면서 줄였다.

  • Weight decay = 0.0005
    Regulizer의 역할 뿐 아니라 training error도 감소시켰다.

  • zero-mean Gaussian distribution with std = 0.01

    Relu이므로 He initial 쓰면 된지 않냐라고 생각할 수 있는데 이 논문 이후에 He initial 나왔다.
    https://arxiv.org/abs/1502.01852

    6. Results

    생략

    6.1 Qualitative Evaluations

  • 두번째 GPU에서는 첫번째 GPU보다 color에 구애받았다.
    이러한 특성은 initial weight value와 무관한게 계속 나타났다. ?!!!!

0개의 댓글