논문 리뷰

AlexNet(2012):ImageNet Classification with Deep Convolutional Neural Networks

cch8ii 2025. 3. 2. 14:43
논문 링크: https://arxiv.org/abs/1910.10683
 

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

Transfer learning, where a model is first pre-trained on a data-rich task before being fine-tuned on a downstream task, has emerged as a powerful technique in natural language processing (NLP). The effectiveness of transfer learning has given rise to a div

arxiv.org

한 줄 정리

  • 목표: 더 깊은 네트워크를 만들면서, 성능을 높이자!
  • 기존의 문제점
    • 객체 인식 (Object Recognition)을 하기 위해서 더 강력한 모델이 필요 + 동시에 오버 피팅을 방지하기 위한 기술 필요
    1. 고해상도 이미지에 대규모로 Convolutional Neural Network를 적용하기에는 여전히 많은 연산량 필요
    2. 적은 데이터셋을 사용하기엔 과적합 우려
  • 핵심 아이디어
    • 학습 최적화 → ReLU 활성화 함수
    • 2개의 GPU 사용
    • 과적합 방지 → Data Augmentation & Dropout

  • 구조
    • Convolution Layer : 5개
    • Pooling Layer : 3개
    • Local Response Normalization layer : 2
    • Fully-Connected layer : 3개

⇒ 총 layer : 8개


Abstract

Alexnet은 ImageNet ILSVRC-2010 대회의 120만 개의 고해상도 이미지를 1000개의 다른 클래스로 분류하기 위해 Deep Convolutional Neural Network를 훈련시킨 모델이다. 

더보기

💡 ImageNet & ILSVRC
ImageNet 은 22,000개의 카테고리가 있는 150만개의 고해상도 이미지 데이터셋이다. ImageNet 프로젝트의 주요 목표는 컴퓨터 비전 연구에 사용될 수 있는 대규모, 구조화된 이미지 데이터 세트를 제공하는 것이다. 
여기서 ILSVRC가 나오는데 이는 대회로 ImageNet 데이터베이스를 기반으로 하는 컴퓨터 비전 시스템 연간 대회 (ImageNet Large Scale Visual Recognition Challenge)이다. 

Alexnet은 Test data에서 37.5%의 top-1 error rate과 17.0%의 top-5 error rate을 달성했으며 이는 이전의 최고 성능보다 상당히 개선된 결과였다. 

더보기

💡 top-1 error rate, top-5 error rate

  • top-1 error rate: 모델이 가장 확신하는 예측이 잘못되었을 비율
    • 분류 시스템에서 가장 높은 확률을 가진 예측(모델이 가장 확신하는 단일 예측)이 정확한 클래스 레이블과 일치하지 않을 때 발생하는 오류율
  • top-5 error: 모델이 제공한 최고의 5가지 추측 중 정답이 없는 경우의 비율
    • 모델이 제공하는 상위 5개의 예측 중 하나도 정확한 클래스 레이블과 일치하지 않을 때 발생하는 오류율

본 논문에서는 AlexNet을 구현할 때 훈련을 더 빠르게 하기 위해 Non-Saturating Neurons (비포화 뉴런)을 사용하고 GPU를 효율적으로 구현했다고 한다. 자세한 내용들은 뒷 부분에서 더 다루도록 하겠다. 

더보기

💡 Non-Saturating Neurons (비포화 뉴런)

비포화 뉴런은 활성화 함수가 특정 값에 도달했을 때 출력이 포화되지 않는 뉴런을 뜻한다. Sigmoid나 Hyperbolic Tangent (tanh) 와 같은 활성화 함수를 사용할 때 입력값이 매우 크거나 작으면 출력값이 최대값 or 최소값에 가까워진다. 그 결과 뉴런의 출력이 포화되어 더 이상 변화하지 않게 된다. 이렇게 포화된 뉴런은 그라디언트가 거의 0에 가까워져 Vanishing Gradient (기울기 소실) 문제를 발생시키며 학습이 느리게 진행된다는 문제가 발생한다. 

AlexNet에서는 이러한 문제를 해결하기 위해 비포화 뉴런으로 ReLU 활성화 함수를 사용했다. 때문에 입력값이 크더라도 출력이 포화되지 않기 때문에 비포화 뉴런으로 분류한 것이다. 

또한 AlexNet FC-layer에서 과적합을 줄이기 위해 Dropout 사용했다. 2012년 ILSVRC 대회에서 Dropout 을 적용한 AlexNet은 압도적인 성능을 보였다고 한다. 

 

1. Introduction

기존 객체 인식 (Object recognition)에서는 성능을 향상시키기 위해 더 큰 데이터셋을 수집하고 더 강력한 모델을 학습하는 방법이 있었다. 하지만 이렇게 하기 위해선 과적합을 방지하기 위한 더 나은 기술이 필요했다. 

CNN 모델에서는 깊이, 너비를 다양하게 조절할 수 있고 이미지에 대해 대부분 정확한 예측을 했다고 한다. 그러므로 기존의 비슷한 크기의 신경망에 비해 CNN은 더 적은 연결과 파라미터로 훈련이 가능하고 이론상 더 좋은 효과를 보인 것을 알 수 있따. 또한 GPU를 사용하면 더 큰 CNN 훈련이 가능해지고 ImageNet 데이터셋을 사용하면 심각한 과적합 없이 모델을 훈련시킬 수 있다는 장점이 존재한다. 

 

2. The Dataset

데이터셋은 위에서 언급한 ImageNet 데이터셋을 사용했으며 ImageNet 데이터셋에서는 2가지 Error rate를 사용하는데 Top-1 error rate와 Top-5 error rate를 사용한다. 

 

AlexNet은 데이터를 입력할 때 일정한 입력 차원이어야 하기 때문에 이미지를 256×256의 고정 해상도로 Downsampling (= 이미지 해상도를 줄이는 과정) 했다. 또한 직사각형의 이미지 경우, 먼저 이미지를 짧은 측면이 256의 길이가 되도록 재조정하고 결과 이미지에서 중앙의 256×256 패치를 잘라냈다. 

💡 왜 데이터를 입력할 때 일정한 입력 차원이어야 할까? 
AlexNet이 일정한 입력 차원을 요구하는 이유는 Fully Connected (FC) Layer가 존재하기 때문이다. FC layer는 고정된 차원의 벡터를 입력으로 받는다. 특정한 뉴런 수를 가지며 입력 차원이 고정되어 있어야 오랍르게 동작할 수 있다. Convolutional layer는 가변 크기의 입력을 처리할 수 있지 만약 입력 이미지 크기가 다르면 마지막 Convolutional layer의 출력 피처맵 크기가 달라지고 이를 FC layer에 전달할 때 차원이 맞지 않아 오류가 발생하는 것이다. 

 

3. The Architecture

5개의 Convolutional layer, 3개의 Fully Connected layer를 포함해 총 8개의 학습된 층이 있음

3.1 ReLU Nonlinearity

기존 모델들이 사용했던 이전의 활성화 함수는 대부분 Sigmoid나 Hyperbolic Tangent 함수를 사용했다. 

 

Sigmoid나 Hyperbolic Tangent 함수와 같은 Saturating Nonlinearity (포화 비선형성) 는 Non-Saturating Nonlinearity (비포화 비선형성) 는 f(x) = max(0, x) 보다 훨씬 느리다. 여기서 AlexNet은 ReLU nonlinearity 활성화 함수를 사용하는데 이는 f(x) = max(0, x) 과 같은 비선형성을 가진 뉴런으로 ReLU를 사용한 합성곱 신경망은 tanh를 사용한 똑같은 네트워크보다 몇 배는 더 빠르게 훈련된다는 것이다. 

 

그 이유는 무엇일까? Sigmoid나 Hyperbolic Tangent 함수와 같은 Saturating Nonlinearity (포화 비선형성) 의 경우 입력값이 너무 크거나 작으면 기울기가 거의 0으로 수렴되고 역전파 과정에서 가중치 업데이트가 거의 없어 학습이 느려지는 것이다. 하지만 ReLU 는 단순한 연산으로 연산 과정이 단순하고 (지수 연산이 없음) 연산 속도가 빨라 기울기 소실 문제가 해결된 것이다. 

3.2 Training on Multiple GPUs

또한 AlexNet은 2개의 GPU를 사용해 GPU를 병렬로 사용해 빠른 학습을 가능하게 했다. 

기존에 사용했던 단일 GPU는 단지 3GB의 메모리를 가지고 있어서 훈련될 수 있는 네트워크의 최대 크기를 제한하게 된다. 또한 하나의 GPU에서 120만 개의 훈련 예제는 너무 커서 훈련이 진행되지 않았다. 때문에 네트워크를 두 개의 GPU에 분산시켜 병렬화시킨 것이다. 

GPU는 메모리를 거치지 않고 서로의 메모리에 직접 읽고 쓸 수 있어 GPU 간 병렬화가 적합하다. 이 의미는 GPU는 Direct Memory Access (직접 메모리 접근) 기능을 통해 한 GPU가 다른 GPU의 메모리에 직접 접근해 데이터를 읽고 쓸 수 있다는 것이다. 이렇게 하면 속도가 엄청나게 빨라진다는 장점이 있다. 

 

병렬화 방식은 본질적으로 커널 (또는 뉴런)의 절반을 각 GPU에 배치하는 것이다. 각 GPU는 특정 층에서만 통신한다. 

예를 들어 3층의 커널이 2층의 모든 커널맵으로부터 입력을 받지만 4층의 커널은 3층에 있는 그와 같은 GPU에 있는 커널맵으로부터만 입력 받는 것이다. 

그림 3은 GPU 1, GPU 2 각각에서 학습된 커널맵 사진이다. 이 그림을 보면 GPU 1에서는 색상과 관련 없는 정보를 학습된 것을 알 수 있고 GPU 2에서는 색상과 관련된 정보를 학습된 것을 알 수 있다. 이를 통해 각각의 GPU가 독립적으로 학습된다는 것을 알 수 있는 것이다. 

3.3 Local Response Normalization

💡 Local Response Normalization (LRN)
Local Response Normalization (LRN)은 인접 화소들을 억제시키고, 특징을 부각시키기 위한 방법으로 예를 들자면 강한 자극인 검정색이 약한 자극인 흰색을 막아 발생하는 측면 억제 현상이 있다. 주변의 값에 비해 너무 큰 특정 값이 overfitting 되는 것을 막고 일반화 하는데 도움이 된다. 

 

AlexNet에서 사용한 ReLU는 Saturating 되지 않는다는 특성을 가지고 있어 입력 정규화가 필요 없다. 하지만 Local Response Normalization (LRN) 은 일반화에 도움이 된다. 여기서 말하는 일반화란 모델이 훈련 데이터뿐만 아니라 새로운, 보지 못한 데이터에 대해서도 잘 작동하는 능력으로 훈련 데이터에 과도하게 최적화되어 새로운 데이터에 대한 성능이 저하되는 오버 피팅이 되지 않는 상태를 말한다. LRN 은 각 뉴런의 활성화가 주변 뉴런의 활성화에 의해 규제되므로 모델이 특정 훈련 샘플이나 노이즈에 과도하게 최적화되는 것을 방지하는 이점이 있다. 

 

때문에 ReLU 비선형성을 적용한 후 특정 레이어에서 정규화 적용했다. 

3.4 Overlapping Pooling

또한 AlexNet은 Overlapping pooling을 사용했다. 

기존의 CNN에서의 풀링 레이어는 왼쪽 그림처럼 stride를 kernel사이즈와 같게 해 겹치지 않게 풀링을 진행했다. 예를 들어 커널 사이즈가 z x z 일 때 간격을 s 라고 한다면 s = z 로 풀링을 진행할 때를 예로 들 수 있다. 

 

AlexNet에서 사용한  Overlapping pooling 은 커널 사이즈가 z x z 일 때 간격을 s 라고 할 때 s < z 라면 풀링 유닛이 겹치는 것을 이용한 풀링이다. AlexNet은 네트워크 전반에 걸쳐 s = 2, z = 3을 사용해 Overlapping pooling 을 했다. 실제로 s = 2, z = 2인 겹치지 않는 풀링을 진행했을 때보다 Top-1, Top-5 error rate가 각각 0.4%와 0.3%가 줄었다고 한다. 

 

이를 통해 Overlapping pooling이 Error rate가 감소하며 과적합이 되는 것을 억제한다는 것을 알 수 있다. 

3.5 Overall Architecture

다음으로 AlexNet의 구조를 살펴보자. AlexNet의 구조는 그림처럼 5개의 Convolutional layer, 3개의 Fully Connected layer를 포함해 총 8개의 학습된 레이어를 가지고 있다. 마지막 Fully Connected layer의 출력은 1000개 클래스 라벨에 대한 분포를 생성하는 1000-way softmax로 공급된다. 

 

  • 가장 먼저 첫 번째 Convolutional layer는 224×224×3 입력 이미지를 96개의 11×11×3 크기 커널로 필터링 (stride = 4)한다.
  • 그 후  두 번째 Convolutional layer는 (response-normalized and pooled) 1번째 합성곱 층의 출력을 입력으로 받아 256개의 5×5×48 크기 커널로 필터링한다. 
  • 3, 4, 5 번째 Convolutional layer는 풀링이나 정규화 층 없이 서로 연결된다.
    • 3번째 Convolutional layer: 384개의 3×3×256 크기 커널
    • 4번째 Convolutional layer: 384개의 3×3×192 크기 커널
    • 5번째 Convolutional layer: 256개의 3×3×192 크기 커널

여기서 2, 4, 5 번째 Convolutional layer의 커널은 이전 layer에 있는 같은 GPU에 있는 커널맵에만 연결되며 그리고 3 번째 Convolutional layer의 커널은 2번째 layer의 모든 커널맵에 연결된다. 

 

4. Reducing Overfitting

4.1 Data Augmentation

AlexNet은 당시 기존의 모델들보다 더 깊은 모델을 만드려고 했기 때문에 과적합을 줄이는 거에 집중을 했다. 가장 먼저 Overfitting 문제를 해결하는 가장 대표적인 방법은 학습에 사용할 데이터 수를 늘리는 것이었다. 본 논문에서는 2가지 독특한 형태의 데이터 증강을 사용했다. 

① 이미지의 변환과 수평 반전을 생성

 

원본 256 x 256 이미지에서 무작위로 224 x 224 패치와 그에 대한 수평 반전을 추출해 네트워크를 학습시켰다. 여기서 말하는 패치란 이미지의 작은 부분 혹은 조각을 말한다. 즉, 이미지에서 특정 영역을 정사각형 혹은 직사각형 모양으로 잘라내어 생성된 작은 이미지를 지칭하는 용어인 것이다. 패치는 네트워크가 다양한 위치와 각도에서 객체를 인식할 수 있도록 돕는다. 

AlexNet은 훈련 데이터셋의 크기는 2048배 증가시켰으며 테스트할 때엔 5개의 224 x 224 패치 (4개의 모서리 + 중앙) 및 이를 수평 반전한 패치 총 10개를 추출해 네트워크의 Softmax 레이어에서 예측들을 평균해 최종 예측을 했다. 

이러한 데이터 증강 덕분에 과적합을 억제할 수 있고 더 깊은 네트워크를 사용할 수 있었다. 

 

② 훈련 이미지의 RGB 채널의 강도를 조정

출처: https://www.youtube.com/watch?v=JI8saFjK84o

본 논문에서는 ImageNet 훈련 세트 전체의 RGB 픽셀 값에 대해 PCA를 수행했다. 그리고 각 훈련 이미지에 발견된 주성분의 배수를 더했다고 한다. 이때 그 크기는 해당 고유값과 평균이 0이고 표준편차가 0.1인 가우시안 분포에서 추출한 랜덤 변수를 곱한 것과 비례했다. 

💡 훈련 이미지의 RGB 채널 강도 변경
PCA는 데이터의 주요 특성을 추출하는 것이다. RGB 채널의 변동성이 가장 큰 방향을 주성분으로 보는데 즉, AlexNet에서는 이미지의 색상 정보를 대표하는 몇 가지 주요 성분을 뽑은 것이다. 여기서 고유값은 중요도를 나타낸다고 생각하면 된다고 한다. 
이 과정은 자연 이미지에서 객체의 식별이 조명의 강도와 색상에 변화가 있어도 일정하다는 중요한 속성을 모방한 것이다. 때문에 모델이 다양한 조명 조건 하에도 객체를 잘 인식할 수 있게 돕고 모델의 일반화 능력을 향상시키는 효과를 가졌다. 

 

AlexNet에서는 RGB 이미지 픽셀 (위 사진 속의 식) 에 밑에 표현된 식으로 표현된 양을 더했다. 

4.2 Dropout

출처: https://wikidocs.net/164787

또한 AlexNet은 과적합을 줄이기 위해 Dropout을 적용했다. 당시 여러 다른 모델들의 예측을 결합하면 성능이 높아짐이 증명되었지만 큰 신경망에서는 계산 비용이 너무 많이 들기 때문에 비현실적이었다. 따라서 계산 비용이 대략 두 배 정도밖에 되지 않는 Dropout을 사용했다. 

Dropout은 각 숨겨진 뉴런의 출력을 0.5의 확률로 0으로 설정하는 것으로 구성되었다. 순전차에 기여하지 않으며 역전차에도 참여하지 않는다. 때문에 입력이 달라질 때마다 신경망은 다른 구조로 훈련하게 되고 이 모든 구조들은 가중치를 공유한다. 신경망은 특정 뉴런의 존재에 의존할 수 없기 때문에 다른 뉴런들과 함께 유용하고 견고한 특성을 학습하게 되고 이로써 과적합이 줄어드는 효과를 얻게 된다. 

AlexNet 에서는 첫 2개의 FC-layer에서 드롭아웃을 사용했고 과적합이 많이 줄어들었다. 

5. Details of learning

본 논문에서는 AlexNet을 배치 크기를 128, 모멘텀을 0.9, 가중치 감소가 0.0005인 Stochastic Gradient Descent (확률적 경사 하강법)를 사용해 모델을 훈련시켰다. 

여기서 작은 가중치 감소가 모델 학습에 중요함을 발견했다. 여기서의 가중치 감소는 단순 규제자 (regularizer)가 아니라 모델의 훈련 오류를 줄였다. 가중치 w 에 대한 업데이트 규칙은 다음 식과 같다. 

각 레이어의 가중치는 평균이 0, 표준편차가 0.01인 가우시안 분포에서 초기화된다. 

2, 4, 5 번째 Convolutional layer와 FC-layer의 뉴런 편향을 상수 1로 초기화해 ReLU에 양의 입력을 제공한다. 이는 학습 초기 단계를 가속화한다. 

💡 뉴런 편향을 상수 1로 초기화해 ReLU에 양의 입력을 제공하면 왜 학습 초기 단계가 가속화될까?
ReLU가 0보다 큰 입력에서만 활성화되므로, 학습 초기에 더 많은 뉴런이 활성화되어 학습 과정이 가속화된다. 

나머지 레이어의 뉴런 편향은 상수 0으로 초기화된다. 

 

모든 레이어에는 동일한 학습률을 사용하는데 이는 훈련 과정에서 수동으로 조정된다. 검증 Error rate가 현재 학습률로 더 이상 개선되지 않을 때 학습률을 10으로 나누는 경험적인 방법을 따랐다. 학습률은 0.01에서 시작해 종료 전 3번 감소 시켰다. 

 

1.2 million images의 훈련 세트를 통해 대략 90 사이클 동안 네트워크를 훈련시켰으며 이는 두 개의 NVIDIA GTX 580 3GB GPU에서 5~6일이 걸렸다고 한다. 

6. Results

ILSVRC-2010 대회에서의 AlexNet의 결과를 요약

AlexNet은 테스트 세트의 top-1, top-5 error rate를 각각 37.5%, 17.0%를 달성했다. 

ILSVRC-2012 대회에서의 AlexNet의 결과를 요약

또한 AlexNet은 Top-5 error rate를 15.3%까지 내리는 성과를 거두었다. 

7. Discussion

AlexNet은 대규모의 깊은 Convolutional 신경망을 활용해 훌륭한 결과를 얻을 수 있음을 보여주었으며 특히 사람이 설계한 피처가 아닌 학습을 통해 선택된 피처를 활용해 기존보다 압도적으로 좋은 성능을 입증했다. 

 


참고한 사이트