AlexNet은 논문 ImageNet Classification with Deep Convolutional Neural Networks 에서 소개된 모델입니다. 이 글에서는 해당 논문의 주요 내용을 리뷰하였으며, 논문을 바탕으로 구조를 직접 구현한 내용을 여기에 정리하였습니다.
Abstract
- ImageNet LSVRC-2010의 120만 장 high-resolution 이미지를 1000개 클래스로 분류하는 DNN을 학습함
- test 데이터에서 top-1 error rate 37.5%, top-5 error rate 17.0%를 기록하며 기존 SOTA보다 우수한 성능 기록
- 5개의 convolutional layer와 3개의 fully-connected layer로 구성, 총 60 million parameter와 650,000 neuron을 가짐
- fully-connected layer에서 overfitting을 줄이기 위해 dropout을 사용하고, 학습 속도 향상을 위해 GPU 최적화와 non-saturating neuron을 사용함
1. Introduction
이 논문은 object recognition의 성능을 향상시키기 위한 핵심 요소로 세 가지를 제시한다: 대규모 데이터셋의 활용, 모델의 표현력 강화, 그리고 overfitting을 방지하기 위한 정규화 기법의 개선이다. 기존의 데이터셋은 수만 장 수준에 불과하여, 단순한 인식 과제에는 충분했으나, 실제 환경에서 발생하는 객체의 높은 다양성과 복잡성을 반영하기에는 한계가 있었다.
최근 들어 수백만 개의 레이블된 이미지로 구성된 대규모 데이터셋(LabelMe, ImageNet 등)이 등장하면서, 복잡한 객체 인식을 위한 학습이 가능해졌다. 그러나 이러한 대규모 데이터셋에서도 객체 인식 문제의 복잡성을 완전히 설명하기는 어렵기 때문에, 모델은 prior knowledge도 함께 가져야 한다고 본다.
이 논문은 Convolutional Neural Network (CNN)을 그 해법으로 제시한다. CNN은 이미지의 stationarity of statistics와 locality of pixel dependencies라는 성질을 활용해 parameter 수를 줄이면서도 높은 성능을 보인다. 그럼에도 불구하고, 고해상도 이미지에 대한 대규모 CNN 훈련은 계산 비용이 많이 드는 문제점이 있었다. 본 연구는 이를 해결하기 위해 고도로 최적화된 GPU 기반 2D convolution operation 구현을 개발했고, ImageNet 하위셋을 이용해 당시 기준으로 가장 큰 CNN 중 하나를 훈련시켰다.
모델은 다섯 개의 convolutional layer와 세 개의 fully-connected layer로 구성되며, depth를 줄일 경우 성능 저하가 발생함을 실험적으로 확인했다. 120만 개의 학습 샘플에도 overfitting 문제가 발생했으며, 이를 해결하기 위해 다양한 regularization techniques을 적용했다. 훈련은 두 개의 GTX 580 GPU에서 5~6일이 소요되었으며, 향후 더 빠른 GPU와 더 큰 데이터셋이 성능을 더욱 향상시킬 수 있음을 시사한다.
2. The Dataset
ImageNet은 약 1,500만 장의 labeled high-resolution images로 구성되며, 총 22,000 categories를 포함한다. 본 논문에서 사용된 ILSVRC 하위셋은 1,000 categories에 대해 각각 약 1,000장의 이미지를 포함하며, 총 120만 장의 training set, 5만 장의 validation set, 15만 장의 test set으로 구성된다.
본 논문은 ILSVRC-2010을 중심으로 실험을 수행했으며, ILSVRC-2012 결과도 함께 보고하였다. 성능 평가는 일반적으로 top-1 error rate와 top-5 error rate를 사용하며, 후자는 모델이 예측한 상위 5개 라벨에 정답이 포함되지 않은 비율이다.
ImageNet의 원본 이미지는 해상도가 일정하지 않기 때문에, 모든 이미지를 입력 차원이 고정된 모델에 맞추기 위해 짧은 변을 기준으로 256으로 resize한 후 central 256×256 crop을 적용하였다. 전처리는 mean subtraction만 수행하였고, 입력은 centered raw RGB values를 그대로 사용하였다.
3. The Architecture
네트워크 구조는 Figure 2에 요약되어 있으며, 총 8개의 learned layers로 구성된다. 이 중 5개는 convolutional layers, 3개는 fully-connected layers이다. 아키텍처의 novel or unusual features는 중요도 순으로 Section 3.1~3.4에서 설명된다.
3.1 ReLU Nonlinearity
전통적인 뉴런 모델은 보통 다음과 같은 saturating nonlinearities를 사용한다:
\[ f(x) = \tanh(x) 또는 f(x) = (1 + e^{-x})^{-1} \]
하지만 이러한 함수들은 gradient descent를 이용한 학습에서 속도가 느리다. 본 연구는 대신 non-saturating nonlinearity인 \( f(x) = \max(0, x) \)를 사용하며, 이를 따르는 뉴런을 Rectified Linear Units (ReLUs)라 한다.
ReLU를 사용한 deep convolutional neural networks는 \( \tanh \) 유닛을 사용한 동일 구조보다 몇 배 빠르게 학습되며, Figure 1은 CIFAR-10 데이터셋에서 25% training error에 도달하기 위한 iteration 수 차이를 보여준다. 기존에도 대체 비선형 함수가 제안된 바 있으며, 예를 들어 Jarrett et al.은 다음과 같은 비선형성 \( (x) = |\tanh(x)| \)이 contrast normalization 및 local average pooling과 함께 잘 작동한다고 보고했다. 그러나 이 경우는 overfitting 방지가 주된 목적이었으며, 본 연구가 보고한 학습 속도 향상과는 다른 효과이다. 학습 속도의 향상은 large models를 large datasets에서 효과적으로 학습시키는 데 있어 중요한 요소이다.
3.2 Training on Multiple GPUs
단일 GTX 580 GPU는 메모리 3GB로 인해 학습 가능한 네트워크 크기에 제한이 있다. 그러나 학습 샘플이 약 120만 개 정도면 하나의 GPU에 수용되지 않을 정도로 큰 네트워크 학습이 가능하므로, 이를 두 개의 GPU에 분산해 학습하는 방식을 채택하였다.
GPU 간에는 host memory를 거치지 않고 직접 메모리 접근이 가능하여, cross-GPU parallelization에 적합하다. 본 연구는 각 GPU에 절반의 커널을 배치하고, 특정 layer에서만 서로 통신하도록 제한함으로써 통신 오버헤드를 줄이는 것이 핵심이다.
예를 들어, 3번째 층의 커널은 2번째 층의 모든 커널 맵을 입력으로 받지만, 4번째 층의 커널은 같은 GPU 상에 있는 3번째 층의 커널 맵만 입력으로 사용한다. 이러한 연결 패턴 선택은 cross-validation을 통해 조정되며, 통신량을 연산량의 허용 가능한 수준이 되도록 정교하게 조절된다.
이 구조는 이 아키텍처는 Cireșan 등이 제안한 columnar CNN 구조와 유사하지만, 완전히 독립된 column은 아니다(Figure 2 참고). 이러한 두-GPU 기반 구조는 단일 GPU로 각 층에 절반 커널만 사용했을 때보다 top-1 오류율을 1.7%, top-5 오류율을 1.2% 감소시켰으며, 학습 속도도 다소 향상되었다.
3.3 Local Response Normalization
ReLU는 입력이 양수일 때에만 gradient를 전달하므로, 해당 뉴런이 학습되기 위해서는 최소한 일부 학습 샘플에서 양의 입력이 발생해야 한다. 이처럼 ReLU는 입력 정규화 없이도 saturation 문제를 피할 수 있는 장점을 가진다. 그럼에도 불구하고, 본 논문에서는 local response normalization (LRN) 기법이 모델의 일반화 성능을 향상시키는 데 도움이 된다고 보고 이를 도입하였다.
LRN은 커널 \( i \)를 위치 \( (x, y) \)에 적용한 뒤 ReLU를 거쳐 계산된 뉴런의 활성값을 \( a^i_{x,y} \)라고 할 때, 정규화된 출력 \( b^i_{x,y} \)는 다음과 같이 계산된다:
\[ b^i_{x,y} = \frac{a^i_{x,y}}{\left( k + \alpha \sum_{j = \max(0, i - n/2)}^{\min(N - 1, i + n/2)} (a^j_{x,y})^2 \right)^\beta} \]
여기서
- \( i \): kernel index
- \( (x, y) \): 공간 위치
- 합: 동일 위치에 있는 주변 kernel들의 출력을 대상으로 함
- \( N \): 해당 layer의 전체 kernel 수
- \( k, n, \alpha, \beta \): validation set을 통해 결정된 하이퍼파라미터로 각각 \( 2 \), \( 5 \), \( 10^{-4} \), \( 0.75 \)로 설정됨
이 정규화는 생물학적 뉴런에서의 lateral inhibition(측면 억제)에서 영감을 받아, 서로 다른 kernel들이 계산한 뉴런 출력 사이에서 높은 활성값에 대한 경쟁을 유도한다. ReLU 이후 특정 layer에만 적용되며(Section 3.5 참고), Jarrett et al.의 local contrast normalization과 유사하지만 평균을 빼지 않기 때문에 brightness normalization에 가깝다.
이 기법은 ImageNet에서 top-1 오류율을 1.4%, top-5 오류율을 1.2% 감소시켰다. 또한, CIFAR-10에서 4-layer CNN 기준 정규화 없이 13%였던 테스트 오류율이 정규화 적용 시 11%로 개선되었다.
3.4 Overlapping Pooling
AlexNet에서는 pooling layer에서 overlapping pooling을 사용했다는 점이 특징적이다. 일반적인 CNN에서는 pooling unit이 겹치지 않도록 구성(s = z)하는 non-overlapping pooling, 즉 traditional local pooling이 보편적이지만, 본 논문에서는 stride s = 2, window size z = 3인 설정으로 overlapping pooling(s<z)을 도입하였다. 이는 adjacent pooling units 간의 receptive field가 부분적으로 중첩되도록 하여 학습 과정에서 regularization 효과를 유도한다. 실험 결과, 동일한 output 크기를 유지하면서도 s = z = 2인 비중첩 방식 대비 top-1 error는 0.4%, top-5 error는 0.3% 감소하는 개선을 validation set에서 확인하였다. 또한, 학습 과정에서는 overfitting이 상대적으로 덜 발생하는 경향을 보였다고 기술하며, 이는 overlapping pooling이 모델의 일반화 능력을 향상시킨다는 점에서 중요한 설계 선택임을 보여준다.
3.5 Overall Architecture
AlexNet의 전체 구조는 Figure 2에 제시되어 있으며, 총 8개의 학습 가능한 레이어로 구성된다. 이 중 앞의 5개는 convolutional layer, 뒤의 3개는 fully-connected layer이며, 마지막에는 1000-way softmax를 통해 ImageNet의 1000개 클래스에 대한 확률 분포를 출력한다. 학습 목표는 multinomial logistic regression objective의 최대화로 정의되며, 이는 정답 라벨에 대한 log-probability의 평균을 최대화하는 것과 같다.
구조적 특징 중 하나는 dual-GPU 분산 구조로, 2·4·5번째 convolutional layer의 kernel은 동일 GPU 상의 feature map에만 연결되며, 3번째 convolutional layer는 모든 map에 연결된다. 이는 당시 하드웨어 제약 속에서 계산 병렬화를 위한 실용적 해법이었다.
각 convolutional layer에는 ReLU가 적용되며, 첫 번째와 두 번째 layer 뒤에는 response normalization과 max-pooling이 결합되어 있다. 특히, 본 논문은 앞서 Section 3.4에서 설명된 overlapping pooling을 사용하며, 이는 일반적인 non-overlapping 방식보다 overfitting을 방지하고 성능을 소폭 향상시킨다. 이후 fully-connected layer는 각기 4096개의 뉴런을 포함하며, 앞선 layer의 출력과 완전 연결된다.
레이어 구성은 다음과 같다:
- Conv1: 96개의 11×11×3 kernel, stride 4, 입력은 224×224×3 이미지
- Conv2: 256개의 5×5×48 kernel, normalized & pooled Conv1 output
- Conv3~5: 모두 3×3 kernel 사용, 중간에 pooling이나 normalization 없음
- FC1~3: 4096 neurons × 2 + softmax
4. Reducing Overfitting
모델 파라미터 수가 약 6천만 개에 달하는 AlexNet은, ILSVRC의 1000개 클래스가 개별 샘플당 약 10비트 수준의 제약을 제공함에도, 이 정보량만으로는 overfitting 없이 학습하기에 충분하지 않다. 이에 따라 본 논문에서는 이러한 과적합 문제를 완화하기 위한 두 가지 주요 기법을 제안한다.
4.1 Data Augmentation
과적합 완화를 위한 첫 번째 기법은 data augmentation으로, label-preserving transformation을 통해 학습 데이터를 인위적으로 확장하는 방법이다.
첫 번째 증강 방식은 image translation 및 horizontal flipping이다. 256×256 크기의 입력 이미지로부터 무작위 224×224 패치와 그 수평 반사본을 추출하여 학습에 사용하며, 이 방식만으로도 학습 데이터 크기를 2048배 확장하는 효과를 낸다. 물론 생성된 패치들은 상호 의존적이지만, 이 기법이 없으면 모델은 심각한 overfitting을 겪고, 훨씬 더 작은 네트워크를 사용할 수밖에 없었을 것이라고 언급한다. 테스트 시에는 4개 모서리와 중앙에서 추출한 총 5개 패치 및 그 수평 반사본(총 10개)을 이용하여 softmax 출력 평균으로 최종 예측을 수행한다.
두 번째 형태의 데이터 증강은 훈련 이미지의 RGB 채널의 intensity를 변화시키는 것이다. 구체적으로는, ImageNet 훈련 세트 전체에서 RGB 픽셀 값들에 대해 PCA(주성분 분석)을 수행한다. 이후 각 훈련 이미지에는, 해당 PCA로부터 구한 주성분(principal components)에 고유값(eigenvalue)에 비례하는 계수를 곱해 더해준다. 이 계수는 평균이 0이고 표준편차가 0.1인 가우시안 분포에서 샘플링한 난수에 의해 결정된다.
따라서 각 RGB 이미지 픽셀 \( I_{xy} = [I^R_{xy}, I^G_{xy}, I^B_{xy}]^T \)에 대해 아래의 값을 더하게 된다:
\[ [p_1, p_2, p_3] [\alpha_1 \lambda_1, \alpha_2 \lambda_2, \alpha_3 \lambda_3]^T \]
여기서 \( p_i \)와 \( \lambda_i \)는 각각 RGB 픽셀 값들의 \( 3 \times 3 \) 공분산 행렬의 고유벡터(eigenvector)와 고유값(eigenvalue)이며, \( \alpha_i \)는 앞서 언급한 가우시안 난수이다.
각 \( \alpha_i \)는 해당 훈련 이미지 전체에 대해 한 번만 샘플링되며, 그 이미지가 다시 사용될 때 재샘플링된다.
이 기법은 자연 이미지의 중요한 성질, 즉 조명의 세기나 색 변화에 따라 객체의 정체성이 변하지 않는다는 점을 근사적으로 반영한다. 해당 증강 기법은 top-1 error를 1% 이상 감소시키는 효과가 있었다고 보고된다.
4.2 Dropout
두 번째 과적합 완화 기법은 Dropout이다. 이는 학습 중 은닉 뉴런의 출력을 확률적으로 0으로 설정함으로써, 각 학습 단계에서 서로 다른 서브 네트워크를 샘플링하는 방식이다. 본 논문에서는 확률 0.5로 뉴런을 드롭하며, 이는 모델 앙상블의 효과를 매우 낮은 계산 비용으로 근사하는 방법으로, 실제로는 약 2배의 학습 비용만 추가된다. 이때 샘플링된 네트워크들은 동일한 가중치를 공유하며 학습된다.
이 기법은 뉴런들이 특정 다른 뉴런의 존재에 의존하지 않도록 하여, co-adaptation을 억제하고, 다양한 뉴런 조합에서도 유효한 일반화된 표현 학습을 유도한다. 테스트 시에는 모든 뉴런을 활성화시키되, 출력에 0.5를 곱하는 방식으로 평균화하며, 이는 지수적으로 많은 dropout 네트워크의 예측 분포에 대한 기하평균(geometric mean)을 근사하는 효과를 가진다.
AlexNet에서는 Figure 2의 첫 두 개 fully-connected layer에 Dropout을 적용했으며, 이를 통해 심각한 과적합을 완화할 수 있었다. 단, 수렴까지 필요한 iteration 수가 약 두 배로 증가한다는 점이 있다.
5. Details of learning
AlexNet은 stochastic gradient descent(SGD)를 기반으로 학습되었으며, batch size 128, momentum 0.9, weight decay 0.0005를 사용하였다. 이 작은 수준의 weight decay는 단순 regularization 이상의 역할을 하며, 모델의 학습 오차를 직접 감소시키는 데 기여한다.
가중치 w는 평균 0, 표준편차 0.01인 정규분포에서 초기화되었다. 두 번째, 네 번째, 다섯 번째 convolutional layer와 모든 fully-connected hidden layer의 bias는 1로 초기화되었고, 나머지 레이어는 0으로 설정되었다. 이는 ReLU가 양의 입력을 받을 수 있도록 하기 위한 조치였다.
가중치 w에 대한 업데이트 규칙은 다음과 같다:
\[ v_{i+1} := 0.9 \cdot v_i - 0.0005 \cdot \varepsilon \cdot w_i - \varepsilon \cdot \left( \frac{\partial L}{\partial w} \Big|_{w_i} \right)_{D_i} \] \[ w_{i+1} := w_i + v_{i+1} \]
여기서
- \( i \): iteration 인덱스
- \( v \): 모멘텀 변수
- \( \varepsilon \): 학습률 (learning rate)
- \( D_i \): \( i \)번째 배치
- \( \left( \frac{\partial L}{\partial w} \Big|_{w_i} \right)_{D_i} \): 해당 배치에서의 목적 함수에 대한 편미분의 평균
모든 레이어에 동일한 학습률을 적용하되, 학습 도중 validation error가 개선되지 않을 경우 학습률을 10배 감소시키는 수동 조정 heuristic을 사용하였다. 초기 학습률은 \( \varepsilon \) = 0.01 이며, 학습 종료 전까지 총 3회 감소되었다.
전체 학습은 1.2백만 장의 이미지를 대상으로 약 90 epoch 동안 수행되었고, NVIDIA GTX 580 3GB GPU 2개를 사용하여 총 5~6일이 소요되었다.
6. Results
논문에서 제안한 CNN은 ILSVRC-2010, ILSVRC-2012, ImageNet Fall 2009의 세 가지 설정에서 성능을 평가하였다.
- ILSVRC-2010 (Table 1)
- 단일 CNN: top-1 error 37.5%, top-5 error 17.0%
- 기존 최고 성능:
- sparse-coding 평균 모델: 47.1% / 28.2%
- Fisher Vector 기반 이중 분류기: 45.7% / 25.7%
- ILSVRC-2012 (Table 2)
- 논문에서는 test label이 공개되지 않아 validation error와 test error를 동일하게 간주
- 단일 CNN: top-5 error 18.2%
- CNN 5개 평균: 16.4%
- Fall 2011 전체 데이터로 사전학습 → ILSVRC-2012 fine-tuning: 16.6%
- 위 모델 5개 + Fall 2011 사전학습 CNN 2개 평균: 15.3%
- 대회 2위 모델: 26.2% (Fisher Vector 기반 다중 분류기 평균)
- ImageNet Fall 2009 (10,184 클래스, 8.9M 이미지)
- 관례에 따라 데이터를 반으로 나누어 학습/평가
- six-layer CNN: top-1 error 67.4%, top-5 error 40.9%
- 기존 최고 성능: 78.1% / 60.9%
6.1 Qualitative Evaluations
Figure 3은 두 개의 data-connected convolutional layer가 학습한 커널을 보여준다. 네트워크는 다양한 주파수 및 방향 민감 커널과 색상 blob을 학습했으며, Section 3.5에서 설명한 GPU 간 제한된 연결 구조로 인해 GPU 1은 색상과 무관한 커널, GPU 2는 색상 특화 커널을 학습하는 분화 현상이 반복적으로 나타난다. 이 특성은 weight 초기화와 관계없이 실행마다 관측된다.
Figure 4 왼쪽 패널에서는 테스트 이미지 8장에 대한 top-5 예측을 통해 모델이 학습한 인식 능력을 정성적으로 평가한다. 중심이 아닌 객체도 인식되며, 예측 결과는 대부분 합리적인 레이블을 포함한다. 일부 이미지(grille, cherry)는 초점이 모호해 예측 분포가 다양하다.
오른쪽 패널은 마지막 4096차원 hidden layer에서 추출한 feature vector 간 유클리드 거리로 유사 이미지를 검색한 결과를 보여준다. 테스트 이미지마다 가장 유사한 학습 이미지 6장을 제시하며, 이는 표현 공간 상의 의미 기반 유사성을 반영한다. 픽셀 수준의 L2 거리와는 다르게, 검색된 이미지들은 자세나 배경은 다르지만 높은 의미적 유사성을 보인다.
이러한 표현 기반 유사도 계산은 계산량이 많지만, autoencoder를 활용해 4096차원 벡터를 이진 코드로 압축하면 효율적인 이미지 검색이 가능하다. 이는 raw pixel을 대상으로 학습한 autoencoder보다 레이블 정보를 반영할 수 있어 더 나은 결과를 기대할 수 있다.
7. Discussion
Large, deep CNN은 supervised learning만으로도 높은 성능을 달성할 수 있으며, 중간 layer 하나만 제거해도 top-1 accuracy가 약 2% 하락하는 것으로 보아 모델의 depth는 핵심적인 요소로 작용한다. 본 논문에서는 실험 단순화를 위해 unsupervised pre-training을 사용하지 않았지만, 추후 labeled data가 제한된 상황에서 모델 size를 더욱 확장할 경우 유용할 수 있다고 언급한다. 현재까지는 네트워크를 키우고 학습을 오래 할수록 성능이 지속적으로 향상되었으며, 인간 시각 시스템에 근접하려면 여전히 수십 배의 확장이 필요하다. 장기적으로는 temporal structure를 포함하는 video data를 입력으로 활용하여, 정적 이미지로는 얻기 어려운 정보를 학습하는 방향으로 확장하고자 한다.
'Paper Review > CV' 카테고리의 다른 글
[Paper Review] Very Deep Convolutional Networks for Large-Scale Image Recognition (0) | 2025.04.28 |
---|