바위타는 두루미
[ 2012,Alexnet] ImageNet Classification with Deep ConvolutionalNeural Networks 논문 리뷰 본문
[ 2012,Alexnet] ImageNet Classification with Deep ConvolutionalNeural Networks 논문 리뷰
DoRoMii 2021. 5. 15. 18:07오늘 리뷰해볼 논문은 2012년에 Alex Krizhevsky 님께서 작성한 "ImageNet Classification with Deep ConvolutionalNeural Networks " 입니다. 저자의 이름을 따서 AlexNet으로 더 유명한 CNN 네트워크 구조를 소개하고 있습니다.
[Abstract]
- ILSVRC 대회는 약 1.2million 고해상도 이미지를 1000개의 class로 분류해 내는 대회인데, 2010년 대회기준 test set에서 top-1, top-5 error rate이 각각 37.5%, 17.0%로 앞선 SOTA보다 확실히 더 나은 성적을 갖는 neural network를 구성함.
- 그 neural network는 60 milion 파라미터랑 650,000 뉴런을 으로 구성되어있는데, 네트워크 구성은 5개의 CNN 레이어(일부 레이어는 max pooling 적용)와 3개의 Fully connected 레이어(마지막은 1000class에 대한 softmax 연산 적용)로 되어 있음.
- 학습을 빠르게 하기 위해 non-saturating neuron ( non-saturationg 되는 activation function (ReLU) ) 를 적용하고, GPU로 연산할 수 있도록 구현함.
- overfitting을 방지하기 위해서 FC(fully connected)레이어에 dropout 기법을 적용함.
- 결국 ILSVRC 2012대회에서 top-5 error를 15.3%로 달성하며 2위인 26.2%와 상당한 격차로 1등을 차지함.
[ 1. Introduction ]
Machine learning method 에서 성능을 높이기 위해서는 1. 많은 dataset이 필요하고 , 2. 강력한 모델로 학습시키고 , 3. overfitting을 방지하기 위한 기술을 적용해야한다.
- 큰 dataset의 등장
이전에는 공개된 데이터셋의 양도 많지 않은 편이였고, 인식 task도 간단한 편이였으나 실제 물체를 인식하려고 했을때에는
variability가 크기( 형체나 모습이 다양함 )때문에 더 큰 데이터셋이 필요했는데 최근 LabelMe 나 ImageNet 과 같은 방대한 데이터셋이 등장하고 사용할 수 있게 되었다.
- CNN
큰 데이터셋을 학습시켜도 그 많은 지식을 가지고 있을만한 모델이 필요하다. CNN은 넓이나 깊이를 통해 모델의 크기를 조절할 수 있고,
stationarity of statistics and locality of pixel dependencies (이미지의 한 부분에 대한 통계가 어떤 다른 부분들과 동일하다는 특징 and 이미지를 구성하는 특징들은 이미지 전체가 아닌 일부 지역에 근접한 픽셀들로만 구성되고, 근접한 픽셀들끼리만 종속성을 가지는 특징
) 이라는 이미지의 특성을 잘 살려서 연산할 수 있다. 또한 일반적인 feed-forword (모든 픽셀이 각 node와 연결되어있는 형태)에 비해 연결이 적기 때문에 학습이 쉽다는 특징이 있다.
ref : https://seongkyun.github.io/study/2019/10/27/cnn_stationarity/
- GPU
gpu가 2d conv net 을 연산하기에 최적화되어 있고, 큰 CNN architecture를 학습시키기에 충분히 좋다.
따라서 이 논문의 주요 contribution은 다음과 같다.
1. 가장 큰 CNN architecture 구성했고 그 모델로 ILSVRC 2010, 2012 대회 기준 최고의 성적을 얻었다.
2. 2D convolution에 최적화한 GPU 연산을 구현했다.
3. 성능을 향상시키기 위한 기법과 학습 시간을 줄이기 위한 기법을 적용했다. -> section 3
4. overfitting을 방지하기 위한 기법을 적용했다. -> section 4
[ 2. The Dataset ]
ImageNet은 15 million장의 label된 고해상도 이미지와 약 22,000 categorie로 구성된 거대한 데이터 셋입니다.
ILSVRC 대회는 ImageNet데이터에서 각 카테고리당 약 1000장의 이미지를 갖는 1000개의 label에 대해서 classificaton을 하는 task에 대해 경쟁을 하는 대회입니다.
ImageNet 에서는 2개의 error rate을 이용해 구분을 합니다 : top-1 , top-5.
각 class 에 대한 confidence score을 sort했을때 가장 높은 score을 가진 1개의 class가 정답이 아닌경우의 비율 : top-1
상위 score에 대해서 5개의 class들 중 정답이 아닌 경우의 비율 : top-5 입니다.
ImageNet은 다양한 resolution을 갖는 이미지들이 있지만, 여기서는 256x256으로 down sampling을 진행해서 이미지를 사용했고.
직사각형 형태의 이미지는 짧은 쪽에 대해 256으로 맞추고 중앙을 기준으로 crop 하여 256x256으로 변환하여 사용했다고 한다.
픽셀 값에 대해서 평균값을 각 픽셀에 대해 빼주는 연산을 제외하고는 따로 preprocessing하지는 않았다고 한다.
[3. The Architecture ]
이 네트워크의 구조는 5개의 conv레이어와 3개의 fc레이어로 구성되어 있고, 이 구조를 이용해서 더 나은 성능과 빠른 학습 속도를 위해 적용한 기술들을 알아보자.
3.1 ReLU Nonlinearity
기존의 네트워크들은 전통적으로 sigmoid 나 tanh 함수를 이용하여 각 레이어의 Nonlinearity 를 부여했지만, 이 네트워크에서는 Relu라는 연산을 이용했다. Relu 는 f(x) = max(0,x) 형태를 띄며 기존에 saturating nonlinearity 방식이 아닌 양수에 대해서는 saturating하지 않는 특징을 갖으며, 학습속도가 매우 빠르다.
이 그래프는 CIFAR-10 데이터 셋을 4개의 conv 레이어로 구성된 네트워크로 실험한 것을 보여주는데, 이경우 error-rate 가 0.25에 도달하는데 Relu가 tanh에 비해 6배정도 빠름을 알 수 있습니다.
사실 여기서 처음으로 전통적인 activation fucntion이 아닌 새로운 방식을 도입한 것은 아니다. contrast nomalization과
local average pooling 과 함께 f(x) = | tanh(x) |를 적용해서 Caltech-101에 대해 잘 작동하도록 시도한 적이 있지만 이경우에는 overfitting을 막고자 하는게 주 목적이였고, 빠른 학습속도를 만들고자 하는 우리의 목적과는 다름을 알 수 있다. 빠른 학습속도는 큰 데이터셋을 큰 규모의 모델에서 학습시킬때 좋은 효과를 주기 때문입니다.
3.2 Training on Multiple GPUs
1개의 GTX 580 GPU 는 3GB of memory 뿐이기 때문에 모델의 최대 크기는 거기에 맞춰서 제한적일 수 밖에 없습니다.
1.2 milion 개의 뉴런들을 1개의 GPU에 맞추기에는 너무 많았고, 그래서 2개의 GPU로 나눠서 학습시키기로 했습니다.
또한 다른 GPU의 memory에 직접 읽고 쓸 수 있기때문에 GPU병렬화에 잘 맞았습니다.
그래서 전체 커널의 반씩 각 GPU 에서 연산할 수 있도록 나누었고, layer 3의 커널만 layer2의 모든(다른 GPU에 있는 것까지 포함한) output을 가지고 연산할 수 있도록 추가적인 기술을 첨가했습니다. 나머지는 같은 GPU에 있는 커널의 output만 가지고 연산합니다.
이 방식은 GPU 한개만 사용한 것에 비해 top-1 and top-5 error rated을 각각 1.7% 과 1.2% 감소시켰습니다.
[ 4.Reducing Overfitting ]
이어서,,,,