Abstract
본 논문의 모델은 ImageNet LSVRC-2010 대회에서 120만 장의 고해상도 이미지를 1,000개의 클래스로 분류하기 위한 대규모 CNN이다. 모델은 5개의 convolutional layers(일부는 max-pooling layers)과 3개의 fully-connected layers(최종 1,000-way softmax)로 이루어져 있다.
학습 속도를 높이기 위해 non-saturating 함수(ReLU)를 사용하고, 컨볼루션 연산을 GPU로 구현했으며, fully-connected layers의 과적합을 줄이기 위해 Dropout을 적용했다. 그 결과 LSVRC-2010에서 top-1 오류율 37.5%, top-5 오류율 17%를 달성했다. 이어 ILSVRC-2012에서도 15.3%의 오류율로 우승했으며, 2위의 26.2% 대비 큰 격차를 보였다.
1. Introduction
간단한 object recognition은 대규모 데이터셋과 강력한 모델, 과적합을 방지하는 기법을 사용한다면 상당히 좋은 성능을 보였으나(예: MINIST 숫자 인식 작업에서 <0.3% 의 인간의 성능에 근접), 실제 환경에서의 사물은 상당한 변동성을 가지고 있었기에 이를 인식하기 위해서는 더 많은 훈련 데이터가 필요했다. 이미지 데이터셋의 한계점은 인식되어 왔으나, 수백만 장의 라벨링 된 데이터셋을 수집하는 것은 최근에야 가능해졌다(예: LabelMe, ImageNet). 이러한 대규모 데이터셋을 학습시키기 위해서 우리는 대규모 학습 능력을 가진 모델이 필요했다.
CNN은 위 문제를 해결할 수 있었으며, 깊이와 너비를 변경하며 모델의 크기를 조절할 수 있었다. CNN은 feedforward 신경망에 비해 훨씬 적은 connection과 parameter를 가지고 있어 학습하기 더 쉬웠고, 이론상 최고 성능은 약간만 떨어졌다.
이러한 CNN의 특징에도 불구하고, 고해상도 이미지를 대규모로 학습하기에는 엄두도 못 낼 만큼 비용이 많이 들었다. 다행히도 그 당시의 GPU가 2D-CNN 구조는 많은 양의 데이터를 통해 극심한 과적합 없이 모델 학습을 할 수 있도록 도와주었다.
모델의 크기는 GPU에서 사용할 수 있는 메모리 양과 감수할 수 있는 훈련시간에 제한된다. AlexNet은 GTX 580 3GB GPU 두 개로 훈련하는데 5~6일 소요되었으나, 더 빠른 GPU와 더 큰 데이터셋이 등장한다면 결과를 개선할 수 있다고 언급하였다.
2. The Dataset
ImageNet은 약 22,000개 카테고리에 속하는 1500만 장이상의 라벨링 된 고해상도 이미지로 구성된 데이터셋이다. ILSVRC 대회는 ImageNet의 하위 집합을 사용하며, 1000개 카테고리 각각에 약 1000개의 이미지가 포함된다. 약 120만 개의 훈련 이미지, 5만 개의 검증이미지, 15만 개의 테스트 이미지가 제공된다.
ImageNet에서는 일반적으로 top-1과 top-5로 두 가지 오류율을 보고하는데, top-5 오류율은 모델이 가장 가능성이 높다고 판단한 5개의 라벨 중 정답 라벨이 포함되지 않은 테스트 이미지의 비율을 의미한다.
ImageNet은 가변 해상도 이미지로 구성되어 있지만, AlexNet은 고정된 크기의 이미지를 필요로 하기에 256x256의 고정 해상도로 다운 샘플링하였다.
아래는 다운 샘플링 과정이다.

- 직사각형 이미지의 경우 짧은 변의 길이가 256이 되도록 이미지를 재조정한다.
- 결과물에서 중앙을 기준으로 256x256 패치를 잘라낸다.
- 각 픽셀의 RGB값을 전체 훈련 이미지의 RGB 평균으로 빼준다.
3. The Architecture
AlexNet의 아키텍처는 8개의 학습된 레이어로 구성되어 있으며, 5개의 컨볼루션 레이어, 3개의 완전 연결 레이어로 이루어져 있다.
아래 내용은 네트워크 아키텍처의 새롭거나 특이한 특징을 설명하며, 가장 중요한 내용부터 차례로 제시한다.
3.1 ReLU Nonlinearity


일반적으로 활성화함수는 하이퍼볼릭 탄젠트 함수 또는 시그모이드 함수로 사용했다. 그러나, 경사하강법을 사용할 때 이러한 saturating nonlinearities 함수는 non-saturating nonlinearity 함수인 ReLU보다 훨씬 학습 시간이 느리다.
위 그림 1은 four-layer convolutional 네트워크가 CIFAR-10 데이터셋에서 25%의 훈련 오류를 달성하는데 필요한 반복 횟수를 나타낸다. 그림 1과 같이 ReLU를 사용한 결과(실선)는 tanh 뉴런을 사용한 결과(점선)보다 25% 훈련 오차율에 6배 더 빠르게 도달한다. 따라서 saturating 신경망 모델을 사용했다면 대규모 신경망 실험을 할 수 없었을 것이라고 말한다.
non-saturating nonlinearity 함수 사용을 고려한 다른 논문도 있는데, f(x)=|tanh(x)| 형태의 비선형 함수가 과적합 방지에 특히 효과적이라고 언급한 논문이다. 그러나 이와 달리 AlexNet은 빠른 학습 속도를 고려해 다른 함수를 필요로 했다.
3.2 Training on Multiple GPUs
단일 GTX 580 GPU는 메모리가 3GB여서, 네트워크의 최대 크기를 제한한다. 120만 개의 훈련 예제는 모델을 학습시키기에 충분했지만, 하나의 GPU에 담을 수 없다는 문제점이 있었다.
따라서 AlexNet에서는 네트워크를 두 개의 GPU에 분산시켰다. 그 당시의 GPU는 host machine memory를 거치지 않고 서로의 메모리에 직접 읽고 쓸 수 있기 때문에 GPU 간 병렬화에 적합했다.
AlexNet에서는 병렬화를 아래와 같은 방식으로 적용했다. 커널의 절반을 각 GPU에 배치하며, GPU 간 통신은 특정 레이어에서만 이루어지도록 하였다. 예를 들어, 3층의 커널은 2층의 모든 커널, 즉 2개의 결과로부터 입력을 받았다. 그러나 4층의 커널은 동일한 GPU에 위치한 1개의 3층 커널 결과로부터만 입력을 받았다.
이 방식으로 top-1 및 top-5 오류율을 각각 1.7%와 1.2% 감소시켰다.
3.3. Local Response Normalization
ReLU 함수는 saturating를 막기 위해 입력을 정규화할 필요가 없으며, 입력값이 양수가 되기만 한다면 학습이 일어난다. 그럼에도 ReLU의 결괏값이 너무 커져서 국소 정규화(Local Normalization) 기법이 필요했다. 해당 정규화는 특정 층에서 ReLU 비선형성 적용 이후에 적용되었다.
응답 정규화는 top-1 및 top-5 오류율을 각각 1.4%와 1.2% 감소시켰다.
3.4 Overlapping Pooling

기존 CNN은 pooling layer를 겹치지 않게 하여 연산하였다. 그러나, AlexNet에서는 pooling layer를 겹쳐서 연산을 수행한 중첩 풀링을 사용했다.
이를 통해 top-1 및 top-5 오류율을 각각 0.4%, 0.3% 감소시켰으며, 훈련 과정에서 과적합 현상을 덜 보인다는 점을 알아내었다.(s=2, 3x3 크기의 커널 사용)
3.5 Overall Architecture

모델의 전체 구조는 총 8개의 레이어로 이루어져 있으며, 첫 5개의 레이어는 Convolution 레이어이고, 나머지 3개의 레이어는 Fully Connected 레이어이다. Fully Connected 레이어의 마지막 출력은 1000-way 소프트맥스에 입력되어 1000개의 클래스 레이블에 대한 분포를 생성한다. 2,4,5번째 Convolution 레이어는 동일한 GPU에 위치한 이전 레이어의 결과를 그대로 사용하는 반면, 3번째 Convolution 레이어는 이전 레이어의 2개의 결과를 모두 사용한다. (3번째 레이어의 점선이 교차되어 있는 것을 볼 수 있음)
Fully Connected 레이어의 뉴런은 이전 레이어의 모든 뉴런과 연결되며, Response-normalization 레이어는 1,2번째 Convolution 레이어 뒤에서 사용된다. Overlapping Pooling을 사용하는 Max pooling 레이어는 1,2,5번째 Convolution 레이어 뒤에서 사용된다. ReLU 비선형 함수는 모든 Convolution 및 Fully Connected 레이어의 출력에 사용된다.
1번째 Convolution 레이어는 224 ×224 ×3 입력 이미지를 11 ×11 ×3 크기의 커널 96개로 필터링하며, stride 크기는 4픽셀이다.
2번째 Convolution 레이어는 1번째 Convolution 레이어의 출력을 입력으로 받아 5 ×5 ×48 크기의 커널 256개로 필터링합니다.
3,4,5번째 Convolution 레이어는 중간 풀링 또는 정규화 레이어 없이 서로 연결된다. 3번째 Convolution 레이어는 3 ×3 ×256 크기의 커널 384개를 가지며, 2번째 Convolution 레이어의 출력에 연결된다. 4번째 Convolution 레이어는 3 ×3 ×192 크기의 커널 384개를, 5번째 Convolution 레이어는 3×3×192 크기의 커널 256개를 가집니다. Fully Connected 레이어는 각각 4096개의 뉴런을 가집니다.
4. Reducing Overfitting
6천만 개의 많은 매개변수로 인해 과적합이 발생하기 쉽다. 따라서 아래에서는 과적합을 방지하기 위한 주요 두 가지 방식을 설명한다.
4.1 Data Augmentation

과적합을 줄이는 가장 쉽고 흔한 방법은 레이블 보존 변환을 사용하여 데이터셋을 인위적으로 확대하는 것이다.
본 논문에서는 두 가지 형태의 데이터 증강을 사용하며, 두 방식 모두 매우 적은 계산양으로 생성할 수 있어 변환된 이미지를 디스크에 저장할 필요가 없다.
따라서 GPU가 이전 배치의 이미지를 학습하는 동안 CPU에서 Python 코드로 변환된 이미지를 생성한다. 이러한 데이터 증강 방식은 사실상 계산 비용이 들지 않는다.
첫 번째 데이터 증강 방식은 이미지 이동 및 수평 반사 생성으로 구성된다. 256×256 이미지에서 무작위 224×224 패치(및 그 수평 반사)를 추출하고, 추출된 패치로 모델을 학습시킨다. 이는 학습 데이터를 2048배만큼 증가시킬 수 있다. 테스트 시에는 5개의 224×224 패치(네 모서리 패치와 중앙 패치)와 그 수평 반사 이미지(총 10개 패치)를 추출하고, 소프트맥스 레이어가 10개 패치에 대해 산출한 예측값을 평균화하여 예측을 수행했다고 한다.
두 번째 데이터 증강 방식은 RGB 색상 강도를 조절하는 것이다. PCA를 수행하고, 평균 0과 표준편차 0.1을 가진 가우시안 분포에서 추출한 랜덤 변숫값을 원래의 픽셀 값에 곱해주어 색상에 변형을 준다.

여기서 $p_i$와 $λ_i$는 각각 RGB 픽셀 값의 3×3 공분산 행렬의 i번째 고유벡터와 고윳값이며, $α_i$는 앞서 언급한 확률 변수이다.
이 방식은 원래의 라벨을 지키면서 색상의 변형을 일으키는 것이 가능하며, top-1 오류율을 1% 이상 감소시킨다.
4.2 Dropout

Dropout 기법은 뉴런의 출력을 50%의 확률로 0으로 설정하는 방식이다. 이렇게 Dropout 된 뉴런은 전파와 역전파 모두에 참여하지 않는다. 따라서 입력값이 제공될 때마다 신경망은 서로 다른 구조를 만들지만, 모든 구조는 가중치를 공유한다. 이를 통해 모델의 복잡성을 크게 감소시키는 것이 가능하다.
AlexNet에서는 1,2번째 Fully Connected에 드롭아웃을 적용하며, 드롭아웃이 없다면 심각한 과적합을 보인다. 드롭아웃은 훈련 과정의 약 2배 정도의 비용만 드는 매우 효율적인 모델 결합 방식이다.
5. Details of learning
학습은 배치 크기 128, momentum 0.9, weight decay 0.0005을 사용하는 stochastic gradient descent으로 수행되었는데, 이 작은 값의 weight decay가 훈련 오차를 줄이는데 큰 영향을 주었다.
가중치는 평균 0, 표준편차 0.01의 가우시안으로 초기화했고, ReLU의 초기 활성화를 돕기 위해 2·4·5번째 합성곱 층과 모든 Fully Connected 히든 레이어의 바이어스를 1로, 나머지 층은 0으로 설정했다.
모든 레이어에 동일 학습률을 두고 검증 오류율이 개선되지 않을 때마다 학습률을 10배씩 낮추었으며, 초기 학습률은 0.01로 시작해 종료 전까지 총 세 차례 감소시켰다.
6. Results
- ILSVRC-2010에서 37.5/17.0;top-1/top-5
- ImageNet Fall 2009에서 6번째 합성곱 층을 추가한 모델로 67.4/40.9, 당시 최고 기록인 78.1/60.9 보다 크게 향상되었다.
- GPU별로 색상 무관 또는 색상 특화로 커널 특화, off-center 객체 인식, 마지막 4096차 특징 활성 벡터 거리 기반 유사도와 오토인코더로 이진 압축해 검색 효율을 높일 수 있음.
7. Discussion
- AlexNet은 대규모 CNN이 순수한 지도학습만으로도 대규모 데이터셋에서 기록적인 성능을 달성할 수 있음을 입증했다.
- 중간 합성곱 층을 하나만 제거해도 top-1이 약 2% 하락하기에 깊이가 매우 중요한 요소이다.
- 비지도 사전학습은 쓰지 않았지만, 더 큰 모델이나 더 오랫동안 학습할수록 성능이 계속 향상되었다. 따라서 계산 자원이 더 있다면 비지도 학습도 도움이 될 것이라 예상된다.
- 정적 이미지보다 정보가 많은 비디오의 시간적 구조를 활용할 수 있는 더 크고 깊은 CNN으로 확장을 목표로 한다.
[참고]
https://bskyvision.com/421
https://learnopencv.com/understanding-alexnet/