AlexNet은 2012년 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)에서 우승을 차지한 CNN 모델로, 2012년 Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton에 의해 개발되었다. 논문명은 'ImageNet Classification with Deep Convolutional Neural Networks' 이며, 논문의 첫번째 저자인 Alex Krizhevsky의 이름을 따서 AlexNet라고 부른다.
AlexNet의 기본구조는 LeNet의 구조와 비슷하다.
두 모델 다 Convolution과 Pooling을 반복하며 마지막에 Dense layer을 통해 이미지를 분류 하는 작업을 수행한다.
LeNet
우선, LeNet은 1998년 얀 르쿤(Yann Lecun)연구팀이 개발한 CNN 알고리즘으로,
"Gradient-based learning applied to document recognition"이라는 이름으로 논문이 발표 되었다.
위의 그림처럼, 32X32크기의 인풋 이미지를 가지며, C1, C3, C5 3개의 컨볼루션 레이어 S2, S4 2개의 서브샘플링 레이어를 통과한 뒤, 1개의 FC레이어 (F6)으로 구성이되어있고, 각 층의 활성화 함수는 tanh를 사용한다.
AlexNet
AlexNet는 8개의 레이어로 구성이 되어 있으며, 5개의 컨볼루션 레이어, 3개의 FC레이어로 구성이 되어있습니다.
2개의 GPU로 병렬 연산을 수행하기 위해서 병렬적인 구조로 모델이 설계가 되어있습니다.
22000개의 카테고리로 이루어져 있고, 150만개의 라벨링된 고해상도의 이미지 데이터셋인 ImageNet데이터 중 ILSVRC에서 쓰인 1000개의 클래스, 120만개의 훈련데이터, 5만개의 검증데이터, 15만개의 테스트 데이터로 이루어진 데이터셋을 사용하였다.
ReLU Nonlinearity
4개의 CNN계층을 가진 신경망에서 ReLU를 사용한 경우가 tanh를 이용하였을때보다 매우 빠르게 25%의 에러율에 도달하였다.
Training on Mulitple GPUs
120만개의 셈플을 학습시키기에는 GTX580 GPU는 3GB의 메모리는 부족하다.
그래서 2개의 GPU를 병렬화 하여 활용하였다.
각 GPU에 특정한 layer만 할당하고, 각각 절반의 뉴런들을 할당하였다.
layer3의 layer2의 모든 커널에서 받지만, layer4의 입력은 같은 GPU에 있는 layer3에서 입력을 받는다.
Local Response Normalization
현재는 많이 사용되지 않는 방법, 활성화 함수가 ReLU로 구성이 되어있는데, ReLU는 양수의 값을 그대로 사용한다. 그렇게 되면 Convolution이나, Pooling 레이어 통과 시 매우 높은 하나의 값이 주변에 영향을 미치게 되는데, 이것을 방지하기 위해 정규화를 수행해주는 것
현재는 Batch Normalization을 더 많이 사용한다.
Overlapping Pooling
일반적인 방법으로는 인접한 뉴런들은 중복되지 않게 풀링을 진행하지만 뉴런의 중복을 허용하여 풀링을 진행 하였다.
이 방법을 통해 Top-1, Top-5 에러율을 0.4%, 0.3%씩 감소 시켰고, 과대적합을 방지할 수 있다는것도 발견하게 되었다.
[참고자료]
https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
https://velog.io/@lighthouse97/AlexNet%EC%9D%98-%EC%9D%B4%ED%95%B4
https://bestkcs1234.tistory.com/52
https://oi.readthedocs.io/en/latest/computer_vision/cnn/alexnet.html
잘 봤습니다. 좋은 글 감사합니다.