cs
[paper review] ImageNet Classification with Deep Convolutional Neural Network (AlexNet)
DL·ML

[paper review] ImageNet Classification with Deep Convolutional Neural Network (AlexNet)

Abstract

  • participated in LSVRC-2010 contest
  • classify 1.2 million high-resolution images into the 1000 different classes
  • on the test data, acheived top-1 and top-5 error rate of 37.5% and 17.5%
  • architecture has 60 million parameters and 650,000 neurons consists of 5 Conv layer, 3 FC layer
  • Used non-saturating neuron and GPU implementation

1. Introduction

지금까지의 machine learning method를 이용한 object recognition은 작은 크기의 dataset에서는 꽤 좋은 performance를 보여줬다. 그러나 좀 더 큰 이미지 학습에서는 Variability가 큰 상황이다. 최근 들어서 LabelMe과 같은 큰 데이터가 사용 가능해졌다. 22,000개의 카테고리 안에 1500만 개의 고해상도 이미지가 포함된 ImageNet도 이에 해당한다.

 

여기서는 CNN을 사용해서 복잡한 ImageNet을 학습하는 신경망의 크기와 parameter의 크기를 줄여서 학습에 용이하게 했다. CNN은 Fully-connected network보다 훨씬 가볍지만 이론적 최대 성능은 비슷하다.

 

그럼에도 불구하고 큰 계산량은 어마어마한데, GPU 2대를 이용하여 2D convolution을 계산함으로써 최적화하였다. 또한 다른 참신한 feature들을 사용하여 신경망을 최적화하였다. 또한 overfitting을 방지하기 위한 방법도 사용하였다.

 

이 논문에서는 GTX 580 3GB GPU 두 대를 사용했지만, 더 빠른 GPU와 더 큰 dataset으로 성능이 향상될 수 있을 것 같다고 서술되어 있다.


2. The Dataset

ImageNet은 대략 22,000개의 카테고리에 1500만개의 고해상도 이미지를 포함하는 dataset이다. ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)에서는 1000개의 카테고리마다 각각 1000개 정도의 이미지를 사용한다. 전체에서는 120만개의 학습 이미지, 5만 개의 validation 이미지, 150,000개의 테스트 이미지가 있다.

 

top-1 rate와 top-5 rate를 평가를 위해 사용하였다. [각주:1]

 

ImageNet은 다양한 크기의 이미지가 있어서 256x256 고정 크기로 down-sample해서 사용하였다. 이 사이즈가 아닐 경우 height와 weight 중 작은 쪽이 256이 되도록 rescale하고, 중간의 256x256 image를 crop해서 사용하였다.

 

preprocessing은 centering 외에는 사용하지 않았다.


3. The Architecture

3.1 ReLU Nonlinearity

이전까지는 sigmoid나 tanh function을 activation function으로 사용했지만, 여기서는 ReLU를 사용하였다. Figure 1는 CIFAR-10을 학습시킬 때 training error가 0.25에 도달할 때까지 걸린 iteration을 보인 것이다. ReLU를 사용한 경우가 실선이고, tanh neuron을 사용한 경우가 점선이다. ReLU unit을 사용한 경우가 6배 빨리 25% training error에 도달하는 것을 볼 수 있다.

Figure 1

 

3.2 Training on Multiple GPUs

신경망을 두 개의 GPU에 나누어 학습시켰다. 이 GPU는 메인 메모리를 거치지 않고 바로 서로의 메모리에 읽기와 쓰기가 가능해서 GPU 병렬화에 유리하였다. 또한, 각 GPU는 특정 layer와만 communicate하였다. 즉, layer2 -> layer3에서는 둘다 모든 kernal map을 입력받지만 그 이후 layer3 -> layer4 이후로는 같은 GPU 안에 있는 kernal map에서만 input을 받았다.

 

connectivity 선택은 cross validation에 문제가 될 수 있지만, communication의 양이 전체 computation에서 받아들일 수 있는 정도의 부분으로 남도록 정확히 조절할 수 있었다.

이 방법은 top-1과 top-5 error rate를 1.7%, 1.2% 줄여주었다.

 

3.3 Local Response Normalization

이 local normalization이 generalization을 향상시켰다.

[각주:2]

 

$$b_{x,y}^i =a_{x,y}^i/ \left( k + \alpha \sum^{\min (N-1,i+n/2)}_{j=\max (0,i-n/2) } (a^j_{x,y})^2 \right)^\beta$$

 

=> 수식이 복잡해 보이지만, 내용은 간단하다. lateral inhibition이란 걸 억제하기 위한 방법이라고 서술되어 있다. later inihibition은 부분의 자극이 너무 강할 경우 주변의 자극이 잘 들어오지 못하게 하는 것을 의미한다. 즉, 한 map에서의 값이 너무 클 경우 학습에 문제가 될 수 있으므로 주변 n개의 map의 값을 가지고 정규화를 시켜준다는 의미이다.

 

=> 수식의 의미는 다음과 같다. 현재 보고 있는 kernel map i 주변으로 각 방향 n/2개, 즉 총 n개의 adjacent한 kernel에서 같은 위치에 있는 값을 제곱한 뒤 hyperparameter $k, \alpha, \beta$를 설정하여 원래 kernel 값을 계산된 값으로 나누어주어 정규화한다.

 

AlexNet에서 사용한 hyperparameter 값은 $k=2, n=5, \alpha=10^{-4}, \beta=0.75$이다.

 

이 scheme은 "brightness normalization"이라고 이름붙여졌으며, top-1와 top-5 error rate를 각각 1.4%와 1.2% 감소시켰다.

 

3.4 Overlapping Pooling

max pooling layer를 사용하였는데, 여기서는 window size를 3, stride를 2로 설정하여 pooling이 overlapping되도록 하였다. 이 scheme은 top-1, top-5 error rate를 각각 0.4%, 0.3% 감소시켰다.

 

3.5 Overall Architecture

Figure 2

AlexNet의 architecture은 총 8개의 layer로 구성되어 있다. 5개는 convolutional layer이고 3개는 fully-connected layer이다. 마지막 FC layer의 output은 softmax에 들어간다. input은 150,528 dimension이다.

 

첫 번째 conv layer는 55x55x96이다. 224x224x3의 input에서 (실제로는 227x227x3일 것으로 생각된다. 거꾸로 계산해 보면 $(55-1)\times 4 + 11 = 227$이므로 어떤 형태로든 padding을 붙였을 것으로 짐작할 수 있다.) 11x11x3의 kernel을 stride 4로 사용해 55x55x96 kernel map을 만든다. 이 output은 RN layer와 Pooling layer를 거친다.

 

두 번째 conv layer는 27x27x256이다. 55x55x48x2의 input에서 5x5x48 kernel을 256개 사용한다. 그 후 RN layer와 Pooling layer를 거친다.

 

세 번째, 네 번째, 다섯 번째 conv layer는 이전 map의 모든 kernel에 연결되어 있다. 또한 RN layer와 Pooling layer 없이 다음 layer와 연결된다.

 

다섯 번째 layer 뒤에는 pooling layer가 연결되고, 세 개의 FC layer 가 연결되어 있다.


4. Reducing Overfitting

4.1 Data Augmentation

AlexNet에서는 두 종류의 data augmentation을 수행한다. 이 data augmentation들은 GPU가 이전 batch를 학습하는 동안 CPU의 python으로 계산되므로 computationally free하다.

 

첫 번째는 image translation과 horizontal reflection이다. 각 이미지 당 224x224 크기의 patch를 random하게 1024개 뽑아내고, 그 horizontal reflection까지 1024개, 총 2048개의 이미지를 학습한다. test time에는 test image의 좌상, 우상, 좌하, 우하, 중앙의 다섯 개의 patch와 그 horizontal reflection의 10개의 patch를 가지고 softmax layer의 average로 평가한다.

 

두 번쨰는 RGB channel의 intensity를 PCA를 이용하여 바꾸어 준 것이다. training set에 대해서 PCA를 수행하고, 각 RGB 이미지 $I_{xy}=[I_{xy}^R, I_{xy}^G, I_{xy}^B]^T$에 다음 값을 더해주었다 :

 

$$ [\bf{p_1}, \bf{p_2}, \bf{p_3}][\alpha_1\lambda_1, \alpha_2\lambda_2, \alpha_3\lambda_3] $$

 

$ \bf{p_i}, \lambda_i $는 각각 RGB pixel의 3x3 covariance matrix의 eigenvector와 eigenvalue이고, $\alpha_i$는 mean이 0이고 standard deviation이 0.1인 Guassian distribution의 random variable이다. 이 값을 더해주어서 중요한 feature 값들을 강조시킨 것이다.

 

4.2 Dropout

이 모델에서는 dropout을 사용한다. probability는 0.5이다. dropout은 복잡한 co-adaptation을 줄이고, neuron들이 공통적으로 robust한 feature를 학습할 수 있도록 한다. 학습에 필요한 시간은 1/2로 줄어들지만 converge에 필요한 iteration은 두 배가 된다. 또한 overfitting을 상당히 줄여준다.


5. Details of learning

Stochastic gradient descent를 이용해서 학습한다. momentum은 0.9이고 batch size는 128이며 weight decay는 0.0005이다. 눈여겨 볼 점은, weight decay가 regularization의 역할만 한 것이 아니라 training error를 줄여주었다는 점이다.

 

update rule은 다음과 같다.

 

$$ v_{i+1} := 0.9 \cdot v_i - 0.0005 \cdot \epsilon \cdot w_i - \epsilon \cdot \left < {\partial L \over \partial w}|_{w_i} \right > _{D_i}$$

$$ w_{I+1} := w_i + v_{i+1} $$

 

$\left < {\partial L \over \partial w}|_{w_i} \right > _{D_i} $ 는 $i$번째 batch D에 대한 derivative의 평균 값을 의미한다.

initialization

모든 weight는 $~N(0,(0.01)^2)$으로 initialize되었고, biases는 2nd, 3rd, 5th conv layer과 모든 fc layer는 1, 나머지는 0으로 initialize되었다. learning rate는 0.01을 초기값으로 쓰고, validation error의 improving이 없으면 1/10을 곱해주는 휴리스틱을 사용했다.


6. Results

Table 1

ILSVRC-2010의 test set으로 비교한 테이블이다. 당시 1위를 했던 모델인 Sparse coding에 비해 top-1과 top-5 error rate에서 10% 이상 차이를 보이고 있다.

 

Table 2

ILSVRC-2012에 참가하였을 때는 AlexNet이 우승하였다. 5개의 CNN의 평균값으로 prediction했을 때는 top-5 test error가 16.4%까지 줄어들었고, ImageNet 2011 fall로 미리 학습시킨 2개의 CNN까지 포함하여 평균을 냈을 때에는 test error가 15.3%까지 줄어들었다.

 

6.1 Qualitative Evaluations

Figure 3

위 Figure은 첫 conv layer에서 각 GPU의 96개 kernel이 학습한 것을 보여준다. 1-3 row가 GPU 1, 4-6 row가 GPU 2이다. GPU 1의 kernel은 색상을 별로 학습하지 않았고, GPU 2는 색상까지 학습하였다. 이러한 특징은 매 시행 관측되었다.

 

Figure 4 left

Figure 4 left에서는 신경망이 object가 이미지 중앙에 있지 않은 경우(mite)에도 올바르게 인식함을 보여준다. top-5 안의 class로 인식한 것들은 대부분 사진을 보면 어느정도 reasonable하다고 볼 수 있다.

 

틀린 이미지의 경우에도 그렇다. cherry 이미지를 보면, 비록 틀렸지만, 이미지가 무엇을 의미하는지 사람도 알기 어렵다.

 

Figure 4 right

Figure 4 right는 마지막 hidden layer, 즉 4096-dimensional FC layer에서 feature vector로 Euclidean distance를 계산해서 가까운 이미지들을 보여준 결과이다. 이미지를 보면 픽셀 단위에서는 유사성이 별로 없는 경우에도 올바르게 같은 객체를 인식했음을 알 수 있다.

 


7. Discussion

=> 이 연구는 CV 분야에서 deep learning의 가능성을 연 것에 큰 의미가 있다.

 


 

  1. 이에 대해서는 https://bskyvision.com/422 에 잘 나와있으니 참조하면 좋다. [본문으로]
  2. 요즘은 batch normalization을 사용하고, 이 방법은 잘 사용하지는 않는다. [본문으로]

'DL·ML' 카테고리의 다른 글

[DL] Hierarchical Softmax  (0) 2022.07.01
[ML] Reduced Error Pruning  (0) 2022.03.18
[DL] RNN(Recursive Neural Network)의 이해  (0) 2021.12.26
Xavier initializer  (0) 2021.12.22
경사하강법(Gradient Descent)  (0) 2021.06.21