AlexNet은 이미지 분류를 위해 설계된 합성곱 신경망 아키텍처로, ImageNet 대규모 시각 인식 챌린지(ILSVRC)에서의 성과를 통해 특히 유명해졌다. 이 네트워크는 이미지를 1,000개의 서로 다른 객체 범주로 분류하며, 대규모 시각 인식에서 심층 합성곱 신경망의 최초로 널리 인정받은 적용 사례로 간주된다.
2012년 Alex Krizhevsky가 Ilya Sutskever 및 그의 박사 지도교수 Geoffrey Hinton과 함께 토론토 대학교에서 개발했으며, 이 모델은 6천만 개의 매개변수와 65만 개의 뉴런을 포함한다. 원래 논문의 주요 결과는 모델의 깊이가 높은 성능에 필수적이며, 이는 계산 비용이 많이 들지만 훈련 중 그래픽 처리 장치(GPU)를 활용함으로써 실현 가능했다는 점이었다.
구조
AlexNet은 8개의 층으로 구성된다: 처음 5개는 합성곱 층이며, 일부는 최대 풀링 층이 뒤따르고, 마지막 3개는 완전 연결 층이다. 네트워크는 마지막 층을 제외하고 두 개의 복사본으로 나뉘며, 각각 하나의 GPU에서 실행되는데, 이는 네트워크가 단일 Nvidia GTX 580 3GB GPU의 VRAM에 맞지 않았기 때문이다. 전체 구조는 (CONV → RN → MP)2 → (CONV3 → MP) → (FC → DO)2 → Linear → softmax로 작성할 수 있으며, 여기서 CONV = 합성곱 층(ReLU 활성화 포함), RN = 지역 응답 정규화, MP = 최대 풀링, FC = 완전 연결 층(ReLU 활성화 포함), Linear = 완전 연결 층(활성화 없음), DO = 드롭아웃을 의미한다.
특히, 합성곱 층 3, 4, 5는 풀링이나 정규화 없이 서로 연결되었다. 이 네트워크는 비포화 ReLU 활성화 함수를 사용했으며, 이는 tanh 및 sigmoid보다 더 잘 훈련되었다. 이 아키텍처는 이후 딥러닝 분야, 특히 컴퓨터 비전에 신경망을 적용하는 많은 후속 연구에 영향을 미쳤다.
훈련
ImageNet 훈련 세트는 120만 개의 이미지를 포함했다. 모델은 두 개의 Nvidia GTX 580 GPU(각각 3GB)를 사용하여 5~6일 동안 90 에포크로 훈련되었다. 이 GPU는 float32에서 이론적 성능이 1.581 TFLOPS이며 출시 당시 가격은 미화 500달러였다. AlexNet의 각 순방향 패스는 약 1.43 GFLOPs가 필요했다. 이러한 값을 기반으로 두 GPU는 이상적인 조건에서 초당 2,200회 이상의 순방향 패스를 이론적으로 수행할 수 있었다.
데이터 세트 이미지는 JPEG 형식으로 저장되어 디스크에서 27GB를 차지했다. 신경망은 훈련 중 각 GPU에서 2GB의 RAM과 약 5GB의 시스템 RAM을 차지했다. GPU는 훈련을 담당했고, CPU는 디스크에서 이미지를 로드하고 이미지 데이터 증강을 담당했다.
AlexNet은 배치 크기 128개 예제, 모멘텀 0.9, 가중치 감쇠 0.0005의 모멘텀 경사 하강법으로 훈련되었다. 학습률은 10−2에서 시작하여 검증 오류가 더 이상 감소하지 않을 때마다 수동으로 10배 감소시켰으며, 훈련 중 세 번 감소하여 10−5로 끝났다.
두 가지 형태의 데이터 증강을 사용했으며, 둘 다 CPU에서 즉시 계산되어 "계산상 무료"였다:
- ImageNet의 각 이미지는 먼저 짧은 변의 길이가 256이 되도록 크기가 조정되었다. 그런 다음 중앙 256×256 패치를 잘라내어 정규화했다(픽셀 값을 0과 1 사이에 오도록 나눈 다음 [0.485, 0.456, 0.406]을 빼고 [0.229, 0.224, 0.225]로 나눔). 이는 ImageNet의 평균과 표준 편차이므로 입력 데이터를 백색화한다.
- 256×256 크롭에서 무작위 224×224 패치(및 수평 반전)를 추출하면 훈련 세트 크기가 2048배 증가한다.
- 각 이미지의 RGB 값을 픽셀 RGB 값의 세 가지 주요 방향을 따라 무작위로 이동시킨다.
해상도 224×224는 256 - 16 - 16 = 224이므로 선택되었으며, 즉 256×256 이미지가 주어지면 네 변에 너비 16을 프레임으로 잡으면 224×224 이미지가 된다.
지역 응답 정규화와 드롭 확률 0.5의 드롭아웃 정규화를 사용했다. 모든 가중치는 평균 0, 표준 편차 0.01의 가우시안으로 초기화되었다. 합성곱 층 2, 4, 5 및 모든 완전 연결 층의 편향은 죽은 ReLU 문제를 피하기 위해 상수 1로 초기화되었다.
테스트 시 훈련된 AlexNet을 사용하여 이미지의 클래스를 예측하려면 먼저 해당 이미지의 짧은 변의 길이가 256이 되도록 크기를 조정한다. 그런 다음 중앙 256×256 패치를 잘라낸다. 그런 다음 다섯 개의 224×224 패치(네 모서리 패치와 중앙 패치)와 그 수평 반전을 계산하여 총 10개의 패치를 만든다. 네트워크의 예측 확률을 10개 패치 모두에서 평균내어 최종 예측 확률로 사용한다.
ImageNet 대회
2012년 ImageNet 대회에 참가하는 데 사용된 버전은 7개의 AlexNet 앙상블이었다. 구체적으로, 이전에 설명된 아키텍처(5개의 CONV 층 포함)의 AlexNet 5개를 ILSVRC-2012 훈련 세트(120만 개 이미지)로 훈련했다. 또한 마지막 풀링 층 위에 추가 CONV 층 하나를 추가하여 얻은 변형 AlexNet 2개를 훈련했다. 이들은 먼저 전체 ImageNet Fall 2011 릴리스(22K 범주에서 1,500만 개 이미지)로 훈련한 다음 ILSVRC-2012 훈련 세트로 미세 조정하여 훈련되었다. 최종 시스템은 7개의 AlexNet의 예측 확률을 평균내어 사용되었다.
세 명은 SuperVision 팀을 구성하여 2012년 9월 30일 ImageNet 대규모 시각 인식 챌린지에 AlexNet을 제출했다. 네트워크는 top-5 오류율 15.3%를 달성하여 대회에서 우승했으며, 준우승자보다 10.8% 이상 앞섰다.
역사
이전 연구
1980년 Kunihiko Fukushima는 비지도 학습 알고리즘으로 훈련된 초기 CNN인 neocognitron을 제안했다. LeNet-5(Yann LeCun 외, 1989)는 역전파 알고리즘으로 지도 학습으로 훈련되었으며, 구조는 본질적으로 AlexNet과 동일하지만 소규모였다. 최대 풀링은 1990년 음성 처리(본질적으로 1차원 CNN)에 사용되었고, 이미지 처리에서는 1992년 Cresceptron에서 처음 사용되었다.
2000년대 동안 GPU 하드웨어가 개선되면서 일부 연구자들은 이를 신경망 훈련을 포함한 범용 컴퓨팅에 적용했다. K. Chellapilla 외(2006)는 동등한 CPU 구현보다 4배 빠른 GPU에서 CNN을 훈련했다. Raina 외(2009)는 Nvidia GeForce GTX 280에서 1억 개의 매개변수를 가진 심층 신뢰 네트워크를 CPU 대비 최대 70배 속도 향상으로 훈련했다. IDSIA의 Dan Cireșan 외(2011)의 심층 CNN은 동등한 CPU 구현보다 60배 빨랐다. 2011년 5월 15일부터 2012년 9월 10일 사이에 그들의 CNN은 네 개의 이미지 대회에서 우승했고 여러 이미지 데이터베이스에서 최첨단 성능을 달성했다. AlexNet 논문에 따르면 Cireșan의 이전 네트워크는 "다소 유사"하다. 둘 다 GPU에서 실행하기 위해 CUDA로 작성되었다.
컴퓨터 비전
1990~2010년 기간 동안 신경망은 커널 회귀 및 서포트 벡터 머신과 같은 다른 머신 러닝 방법보다 우수하지 않았다. 2012년 ILSVRC에서 AlexNet의 성공은 전환점을 표시했으며, 심층 CNN이 전통적인 접근 방식을 큰 차이로 능가할 수 있음을 입증하여 컴퓨터 비전 및 그 이상에서 딥러닝의 광범위한 채택으로 이어졌다.