본문 바로가기

[논문 리뷰]Alexnet- Image Classification with Deep Convolutional Neural Networks 본문

AI/논문 Review

[논문 리뷰]Alexnet- Image Classification with Deep Convolutional Neural Networks

점핑노루 2021. 7. 24. 10:29

이번 포스트는 Alexnet에 대한 정리를 할 것이다. 해당 논문을 읽으면서 정리했던 부분들을 업로드할 것이다. 

 

1. Introduction


Alexnet은 2012년에 출시된 딥러닝 프레임워크이다. 당시에는 dataset이 클 때 recognition task를 효율적으로 하기 어려웠다. 특히 Imagenet 같은 1500만 개의 이미지와 22,000개의 카테고리가 있는 대량의 데이터 저장소에서는 기존 MLP(Multi-Layer Perceptron) 기법의 비용적, 기술적 한계가 존재하였다. 물론 LeNet같은 기존의 CNN 기술이 존재하기는 했다. Neural network의 depth나 이미지 자체를 조절할 수도 있었고, MLP 보다 적은 parameter을 가져 계산도 용이했다. 하지만 비용이 엄청나다는 단점이 존재하였다. Alexnet은 기술의 발달로 비용적 한계를 어느 정도 극복하였다. GTX580 3GB GPU 2개로 5-6일 동안 image recognition task를 학습시킬 수 있게 되었다. 그러나 2021년 현재는 GPU의 발달로 몇 시간 이내에 alexnet을 학습할 수 있다고도 한다...

 

2. The dataset


데이터셋으로는 Imagenet을 활용하였고, ILSVRC(Imagenet Large Scale Visual Recognition Challenge)에서 제공된 데이터를 가지고 alexnet을 훈련시켰다.

 

3. Architecture


Alexnet의 구조는 기본적으로 5개의 convolutional layers와 3개의 fully-connected layers로 구성되어 있다.  구체적인 구조는 아래에서 계속 살펴보자. 

 


3.1 ReLU non-Linearlity

ReLU라는 함수를 활용하면 기존 tanh(x) / sigmoid 함수의 saturating non-linearlities의 문제를 해결할 수 있다. 처리시간도 감소하였고, error rate를 감소시키는 데에 걸린 시간도 줄어들었다. ReLU함수의 식은 max(0,x)이며, 그 개형은 아래에 있다. 

desmos 활용, 정의역이 0 미만이면 0을 출력하고, 그 외의 경우에는 정의역의 수를 그대로 출력한다.
ReLU 함수를 활용하면 epoch가 짧더라도 training error rate가 빠르게 감소한다.


 

3.2 Training on Multiple GPUs

앞서 설명했듯이 GPU의 한계를 극복하기 위해 2개의 GPU를 사용하였다. 이 때 모든 neuron들은 2개의 GPU에 분산되어 있다. 그리고 특정 층에서만 소통을 하고, 그 외의 층에서는 각자의 연산을 진행한다. GPU를 여러 개 사용함으로 인해서 처리 시간도 감소하고, error rate도 줄어드는 것을 확인할 수 있다. 또한 각각의 GPU는 특정 분야에 특화 되어있음을 확인할 수 있다. 예를 들어 첫 번째 GPU는 color-agnostic적인 면을 처리할 수 있고, 두 번째 GPU는 color-specific한 면을 처리할 수도 있다.

 

 


 

3.3 Local Response Localization (LRN)

앞서 3.1 ReLU non-linearlity를 살펴보았을 때, ReLU의 값이 양수일 때에는 그 값이 그대로 출력되었다. 그러나 양수값이 너무 클 때에는 주변의 값에 영향을 미쳐 그 값들도 커질 수 있다(Lateral Inhibition). 예를 들어 '고양이' 사진을 인식할 때, 고양이의 귀가 고양이를 인식하는 데에 큰 영향을 끼친다고 하자. 그렇다면 귀가 있는 부분은 ReLU의 값이 엄청 큰 양수로 출력될 것이고, 그 주위의 값들도 귀의 근처에 있기 때문에 convolution layer을 통과하면 큰 값을 출력하게 될 것이다. 이를 방지하기 위해 normalization을 진행하여 큰 값을 축소시키는 역할을 한다. 그렇지 않으면 overfitting의 문제가 발생할 수 있기 때문이다. LRN의 식은 아래와 같으며, k, n α, β는 hyperparameter이다.

 

 

 

그러나 현재는 LRN의 효과가 미비하다며 잘 사용하지 않는다...


3.4 Overlapping Pooling

Overlapping pooling은 쉽게 말해 pooling에 중복을 허용하는 것이다. 기본 CNN강의 (대표적으로 Stanford University의 cs231n)는 pooling에 중복을 허용하지 않은 채 진행한다. 그러나 중복을 허용함으로써 0.3~4% 정도의 error rate을 감소시킬 수 있다고 한다.


3.5 Overall Architecture

 

보다시피 5개의 convolutional layers와 3개의 fully connected layers가 있고, 끝에는 1000way softmax로 1000개의 이미지 분류를 진행한다. 또한 2개의 GPU로 작동하면서 두 번째 층에서 depth가 48, 48로 나누어진다. Max pooling은 총 3번 이루어지며, pooling이 일어나는 곳에는 LRN도 진행된다. 

 

4. Reducing Overfitting


Overfitting(과적합)을 막기 위하여 2가지 방법이 사용되었다. 


4.1 Data Augmentation

Data Augmentation은 CPU를 통하여 진행하였기 때문에 GPU의 계산비용을 방해하지 않는다는 장점이 있다. 해당 방법은 크게 image translation & horizontal reflection과 altering intensities of RGB channels in training images로 분류할 수 있다. 

 

먼저 Image translation & horizontal reflection 같은 경우, 기존 256*256 픽셀 이미지에서 랜덤하게 224*224 patch와 그것을 가로로 좌우반전한 patch를 추출한다. 무작위로 픽셀을 선정함으로써 overfitting의 문제를 어느 정도 해결할 수 있다고 한다. Testing을 할 때에는 이미지의 각 모서리 및 한가운데에서 224*224픽셀 이미지를 추출한 다음, 그것을 각각 가로로 좌우반전하여 한 이미지에 대하여 10개의 patch를 가지고 각각 계산한 다음 그 값에 대한 평균을 낸다고 한다. 

 

두 번째 방법은 altering intensities of RGB channels in training images이다. 이는 training set 이미지의 RGB에 PCA를 진행하는 방식으로 이루어진다. 기존 이미지에다가 고유값 * 평균 0, 표준편차 0.1 크기 가지는 임의의 변수를 더한다. 해당 방식은 이미지의 밝기나 특정 색의 강도가 recognition task에 미치는 영향을 제거한다. 


4.2 Dropout

Dropout을 진행하면 0.5의 확률로 특정 neuron이 활성화되지 않는다. 그리고 dropout된 neuron들은 forward-pass 및 backpropagation에서 연산되지 않는다. 그러므로 dropout을 반복할 때마다 다른 architecture이 생성될 것이다. 다만 weight은 서로 공유된다. 이는 neuron들이 다른 neuron에 의존하여 결과값을 출력하는 것을 방지할 수 있다. Testing시에는 모든 neuron들이 활용되며, 각각 neuron들의 output에다가 0.5를 곱한다. Dropout을 통해 생성된 네트워크들의 geometric mean을 구하는 방법이기 때문이다. Alexnet에서 dropout은 FC layer의 첫 두 layer에서만 쓰인다. 

  

5. Details of Learning


  • Stochastic Gradient Descent 활용
  • Batch Size - 128
  • Momentum - 0.9
  • Weight Decay - 0.005
  • Weight Initialization - zero mean Gaussian distribution 활용, 표준편차 0.01
  • Bias Initialization - Layer에 따라 1 또는 0으로 설정, 1로 설정한 이유는 ReLU값에 양수를 부여하면서 학습을 촉진시키는 역할을 하기 때문이다.
  • Learning Rate - 0.01로 진행하면서 training시 조정. 조정 방법은 0.01을 10씩 나누면서 진행되었음.

6. Conclusion


결론적으로 Alexnet은 2012년 ILSVRC에서 우승하였다. 물체가 가운데에 있지 않아도 detection이 용이했다는 점, Euclidean distance를 계산하여 거리가 짧을 수록 유사한 사물로 인지했다는 점은 괄목할 만한 성과였다. 그러나 당시 GPU들의 성능이 좋지 않았다는 점, layer 하나하나가 결과를 도출하는 데에 큰 영향을 미쳤다는 점 등에서 한계가 존재했다. 그럼에도 불구하고 Alexnet은 CNN 분야의 초석이며, CNN의 혁신을 불러일으켰다고 보아도 무방하다. Alexnet의 기본적인 구조를 바탕으로 하여 추후 프레임워크들도 발전하였기 때문이다. 

 

내용 및 이미지 출처:

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

 

Comments