이 논문은 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 2012년 우승을 차지한 모델로 AlexNet이라 불립니다. 기존에 우승을 차지하던 얕은 구조의 모델과는 다르게 처음으로 등장한 CNN 기반 딥러닝 알고리즘이 우승을 차지한 것입니다.
간단히 살펴보고 시작하자면 CNN과 크게 다른 점은 없지만 gpu 2대를 병렬 처리하여 사용해 상, 하 2대가 있습니다. 총 8개의 레이어로 5개의 Convolutional Layer와 3개의 Fully-connected Layer로 구성되어 있습니다. 또한 softmax를 사용하여 마지막에 1000개의 class가 나타나게 됩니다.
Dataset에 대해 살펴보면, ILSVRC-2010 데이터를 주로 사용하였다고 나와있으며 1000개의 이미지 카테고리로 나뉘어져있다고 합니다. ImageNet에서 제공되는 이미지의 경우, 크기가 각각이 상이하기에 모든 이미지의 크기를 256x256으로 맞추었습니다(직사각형 사진의 경우, 짧은 쪽을 기준으로 256x256으로 맞춘 후 가운데를 잘라서 만듦). Resizing 이외의 데이터 pre-processing은 없다고 나와있습니다.
구조에 대해 살펴보면 기여를 많이 한 순서로 4가지를 소개합니다. 첫 번째는, ReLU 함수입니다. 이 논문 이전에는 대부분이 tanh 또는 sigmoid와 같은 활성화 함수를 사용하였습니다. ReLU를 간략히 소개하자면 0 이전에는 쭉 0이다가 0 이후부터 max(0,x)가 되는 함수입니다. 위 그림을 보면 실선이 ReLU, 점선이 tanh를 나타냅니다. 위 그림과 같이 ReLU를 사용하여 error가 0.25에 도달하는데 6배 빠르게 수렴한 것을 볼 수 있습니다(정규화하지 않은 CIFAR-10 데이터셋을 사용, 학습률은 각자 최적으로 사용).
두 번째는, GPU를 2대 사용한 것인데 시간 단축을 위해서보다는 더 많은 데이터셋을 사용하기 위해, 즉 메모리 부족 문제 해결을 위해 사용했다고 합니다. 1,2,4,5번째 layer의 경우 같은 GPU 내에서의 Kernel만 사용할 수 있고(Intra GPU connection), 3번쨰 layer와 3개의 fc layer에서는 GPU에 상관없이 모든 Kernel을 다 끌어쓰고 있습니다(Inter GPU connection). 이를 논문에서는 additional trick(특정 layer에서만 GPU에 관계없이 모든 kernel을 가져다 쓸 수 있는 것)을 사용했다고 합니다. 이로 인해 Top5 error는 1.2%, Top1 에러는 1.7%정도 감소했습니다.
세 번째는, Local Response Normalization(LRN)입니다. 인공지능과 관련된 것이 아닌 실제 뇌세포의 증상을 말합니다. 교차로 사이 사이 회색 점이 보이는데 강한 뉴런(검정색)의 활성화가 주변 뉴런의 활동을 억제시키는 것을 말합니다. 예를 들어, 주변이 모두 0인데 한 곳만 10이라면 그 부근의 값이 전체적으로 높아질 것입니다. 이와 같이 특정 값에 의해 과대적합되는 것을 방지하고자 LRN을 사용했다고 합니다.
위의 식이 이 LRN의 식입니다. 예를 들어 설명드리자면, 10번째 커널의 경우 8~12번째 커널까지의 제곱합으로 나눠주어 정규화를 진행하는 방식입니다. 이를 통해 Top5 error는 1.2%, Top1 error는 1.4%까지 감소할 수 있었습니다.
마지막으로, Overlapping Pooling입니다. Traditional Pooling의 경우, Pooling window의 크기와 stride의 크기가 같아 겹치지 않고 2칸씩 줄였습니다. 하지만 Overlapping의 경우, Pooling window의 크기가 stride의 크기보다 크도록 하여 1~3, 2~4과 같이 겹치게 구현하였습니다. 두 방식 모두 나오는 output 크기는 같지만 overfitting이 덜 되고 Top5 error는 0.3%, Top1 error는 0.4%까지 줄일 수 있었습니다.
구조도를 보면 위의 그림과 같습니다. 논문과 위의 그림을 보면 input image가 224라고 되어 있는데 224로 계산을 하면 다음 사이즈가 55가 나오지 않습니다. 이는 잘못 표기된 것이고 227이 맞습니다.
AlexNet에 대해 간단히 정리하자면 활성화함수로는 ReLU를 사용하였으며 GPU는 2대, Local response normalization을 하였으며 Overlapping pooling을 도입하고 Data augmentation과 Dropout을 사용했다고 말할 수 있습니다.