ImageNet LSVRC-2010 대회에서 120만 개의 고해상도 이미지를 1000개의 서로 다른 클래스로 분류하기 위해 대규모 deep convolutional neural network를 훈련시켰다.
테스트 데이터에서 top-1 error rates는 37.5%, top-5 error rates는 17.0%를 달성했고, 이전의 기술보다 훨씬 우수한 결과였다.
6천만 개의 파라미터와 65만 개의 뉴런으로 구성된 신경망은 5개의 convolutional layers(일부는 max-pooling layers) + 최종 1000-way softmax로 연결된 3개의 fully-connected layers 까지 총 8개의 layers로 구성된다.
훈련 속도를 높이기 위해 non-saturating neurons(ReLU 함수)를 사용하고 convolution 연산을 GPU로 매우 효율적으로 구현했다.
또한 과적합을 줄이기 위해 dropout 정규화 방법을 사용했고 이는 매우 효과적인 것으로 입증되었다.
이 모델의 변형으로 ILSVRC-2012 대회에서 top-5 test error rate 15.3%로 우승했다. (2위는 26.2%)
top-1 error : 가장 높은 확률로 예측된 클래스가 정답이 아닌 비율
top-5 error : 예측률이 높은 상위 5개의 클래스 내에 정답이 없는 비율
객체 인식에서 머신러닝 기법이 필수적으로 사용되고 있으며 성능을 높이기 위해 더 큰 데이터셋, 더 강력한 모델, 과적합 방지 기술이 필요하다.
- 기존 데이터셋의 한계
- 이전의 레이블이 있는 이미지 데이터셋은 수만 개 수준으로 크기가 작았다.
- 간단한 인식 작업은 이 정도의 데이터셋으로도 해결 가능했으나, 현실적인 객체의 다양성을 처리하기에는 부족했다.
- 대규모 데이터셋의 등장
- 작은 데이터셋의 단점은 널리 알려져 왔지만 수백만 개 이상의 라벨링 된 데이터셋 수집이 최근에야 가능해졌다.
- LabelMe : 수십만 개의 완전히 분할된 이미지로 구성
- ImageNet : 22,000개 이상의 카테고리가 있는 1,500만 개 이상의 라벨링 된 고해상도 이미지로 구성
수백만 개의 이미지에서 수천 개의 객체를 학습하려면 학습 용량이 큰 모델이 필요하다. 하지만 객체 인식의 복잡성은 ImageNet처럼 큰 데이터셋으로도 충분히 해결할 수 없기 때문에, 모델에 사전 지식이 추가적으로 요구된다.
- CNN의 특징과 장점
- 가변적인 깊이와 너비를 통해 모델 용량 조절 가능
- 이미지의 특성에 대한 강력하고 정확한 가정을 기반으로 설계
- 일반적인 feedforward neural networks 보다 연결과 매개변수가 훨씬 적어 학습이 더 쉽지만 이론적으로 최적의 성능은 약간 떨어질 가능성이 높다.
- 이 논문의 구체적인 기여
- ILSVRC-2010, ILSVRC-2012 대회에서 사용된 가장 큰 규모의 CNN을 훈련했으며 가장 우수한 결과를 달성했다.
- 네트워크의 성능을 개선하고 훈련 시간을 단축하는 새롭고 특이한 기능이 다수 포함되어 있다.
(section 3)- 네트워크 크기와 많은 데이터로 인한 과적합을 방지하기 위한 기법
(section 4)- 5개의 convolutional layers와 3개의 fully-connected layers가 중요하며 convolutional layer를 제거하면 성능이 저하된다.
결국 네트워크의 크기는 현재 GPU에서 사용할 수 있는 메모리 양과 감내할 수 있는 훈련 시간에 의해 제한된다. GTX 580 3GB GPU로 훈련하는 데 5~6일이 걸렸으며, 모든 실험을 통해 더 빠른 GPU와 더 큰 데이터셋이 제공되면 결과를 개선할 수 있다.
- ImageNet Dataset
- 약 22,000개의 카테고리에 속하는 1,500만 개 이상의 라벨링된 고해상도 이미지로 구성된 데이터셋
- ImageNet Large-Scale Visual Recognition Challenge (ILSVRC)에서는 1000개의 카테고리 각각에 약 1000개의 이미지가 포함된 ImageNet 하위 집합을 사용
(총 120만 개의 훈련 이미지, 5만 개의 검증 이미지, 15만 개의 테스트 이미지)
- ILSVRC
- ILSVRC-2010은 테스트셋 레이블을 사용할 수 있는 유일한 버전이고 대부분의 실험을 이 버전에서 수행했다.
- ILSVRC-2012 대회는 테스트셋 레이블을 사용할 수 없는 버전으로 이에 대한 결과는 section 6에서 보고한다.
- ImageNet에서는 top-1 and top-5 error rates를 보고하는 것이 일반적이며, top-5 error rates는 예측률이 높은 상위 5개의 클래스 내에 정답이 없는 비율이다.
- 이미지 전처리
- ImageNet은 가변 해상도 이미지로 구성되어 있기 때문에 256 x 256의 고정 해상도로 down-sampling했다.
- 주어진 직사각형 이미지의 짧은 변의 길이를 256px로 만들고, 이미지 중앙 256 x 256 영역을 사용했다.
- 훈련 세트의 평균값을 각 픽셀에서 빼는 작업 외에는 다른 전처리 없이 원시 RGB 값으로 학습을 진행했다.
Section 3.1~3.4는 중요도에 따라 가장 중요한 것 부터 순서대로 정렬되어있다.3.1 ReLU Nonlinearity
- 기존 활성화 함수 vs ReLU
- 기존에는 활성화 함수로 또는 을 사용했으며 이런 포화 활성화 함수는 기울기 소실 문제로 인해 경사 하강법 학습 속도가 느리다.
- 비포화 활성화 함수인 는 학습 속도가 훨씬 빠른 함수로 이를 Rectified linear Units(ReLU)라고 부른다.
- ReLU의 학습 속도
- ReLU를 사용하는 CNN은 tanh를 사용하는 CNN보다 학습 속도가 몇 배 더 빠르다.
- CIFAR-10 데이터셋에서 ReLU 기반 CNN이 25% 훈련 오류에 도달하는데 필요한 반복 횟수가 훨씬 적다. 따라서 ReLU 함수를 사용하지 않았다면 대규모 신경망 실험을 수행하기 어려웠을 것이다.
Figure 1 (실선:ReLU, 점선:tanh)- 위 그림과 같이 ReLU를 사용하면 25% 훈련 오류에 6배 빠르게 도달할 수 있고, 빠른 학습은 대규모 데이터셋에서 훈련된 모델의 성능에 큰 영향을 미친다.
3.2 Training on Multiple GPUs
- GPU 메모리 한계 해결 방법
- GTX 580 GPU의 3GB 메모리 제한으로 인해 120만 개의 훈련 샘플을 학습하기에는 네트워크 크기가 너무 컸다.
- 따라서 네트워크를 두 개의 GPU에 분산하여 병렬 학습을 수행했다.
- GPU 간 병렬 처리 방식
- 최신 GPU는 서로의 메모리를 직접 공유할 수 있어 효율적인 병렬 처리가 가능하다.
- 각 GPU에 커널(또는 뉴런)의 절반을 할당하여 병렬 연산을 수행한다.
- 하나의 추가 트릭
- GPU가 특정 계층에서만 통신한다.
- Layer 3의 커널은 Layer 2의 모든 커널 맵을 입력으로 받는다.
- Layer 4의 커널은 같은 GPU에 있는 Layer 3의 커널 맵에서만 입력을 받는다.
- 이런 연결 패턴을 설정하는 것은 교차 검증 문제이며, 통신 비용을 조절하여 계산량 대비 효율적은 비율을 찾는다.
- 1-GPU net 대비 2-GPU net의 성능 향상
- top-1 error rates 1.7% 감소
- top-5 error rates 1.2% 감소
- 훈련 시간이 약간 더 짧음
3.3 Local Response Normalization
- ReLU의 특성
- 입력 정규화 없이 학습 가능하지만, 추가적인 정규화 기법이 일반화 성능을 향상시킨다.
- Local Response Normalization(LRN)
ReLU를 적용한 뉴런의 활성화 값정규화된 뉴런의 활성화 값- 정규화 과정
- 동일한 공간 위치 에서 인접한 개의 커널 맵을 대상으로 정규화 수행
- 를 해당 영역의 제곱 합을 포함한 정규화 계수로 나눔
- 하이퍼 파라미터 값
- LRN의 역할 및 효과
- 실제 뉴런의 측면 억제(lateral inhibition) 매커니즘을 모방하여 뉴런 간 경쟁을 유도한다.
- 기존 Local Contrast Normalization(LCN) 기법과 유사하나, 평균을 빼지 않으므로 밝기 정규화(Brightness Normalization)에 더 가깝다.
- ImageNet에서 top-1 error rates 1.4% 감소, top-5 error rates 1.2% 감소
- CIFAR-10 실험에서 test error rate 13%에서 11%로 감소
3.4 Overlapping Pooling
- Pooling Layer의 역할
- CNN에서 Pooling Layer는 같은 커널 맵 내에서 이웃 뉴런들의 출력을 요약하는 역할을 한다.
- 일반적으로 인접한 영역을 겹치지 않게(non-overlapping) 풀링한다.
- Overlapping Pooling 기법
- 풀링 크기 , 스트라이드 가 같으면 () 전통적인 풀링 방식이다.
- 로 설정해서 풀링 영역을 겹치게 했다. (Overlapping Pooling)
- 으로 설정했고, 결과적으로 전통적인 풀링 방식() 대비 top-1, top-5 error rates를 0.4%, 0.3% 감소시켰으며 과적합 방지 효과도 있다.
3.5 Overall Architecture
입력 크기 227x227x3, 그림에서 잘못 표현된 것이라고 함- 네트워크 구조
- Convolutional Layers 5개, Fully-Connected Layers 3개 총 8개의 가중치 레이어로 구성된다.
- 마지막 Fully-Connected Layer의 출력은 1000-way softmax로 전달한다. (1000개의 확률 분포 생성)
- Multinomial Logistic Regression 목표 함수를 최적화 (정답 레이블의 로그 확률 최대화)
- 레이어별 연결 방식
- 두 번째, 네 번째, 다섯 번째 Convolutional Layer는 같은 GPU 내의 이전 레이어 커널 맵에만 연결한다.
- 세 번째 Convolutional Layer는 이전 레이어의 모든 커널 맵과 연결한다.(점선이 교차되는 부분)
- Fully-Connected Layers는 이전 레이어의 모든 뉴런과 연결한다.
- Response Normalization & Pooling 적용
- Response Normalization → 첫 번째 & 두 번째 Convolutional Layer 이후 적용
- Max-Pooling → Response Normalization 이후 & 다섯 번째 Convolutional Layer 이후 적용
- ReLU 활성화 함수 → 모든 레이어에 적용
과적합을 방지하는 두 가지 주요 방법을 설명한다. (Data Augmentation, Dropout)4.1 Data Augmentation
이미지 데이터에서 Overfitting을 줄이는 가장 쉬운 방법은 Label을 유지하는 변환을 적용하여 데이터를 인위적으로 확장하는 것이다. 이를 위해 두 가지 Data Augmentation 기법을 사용하였고, 두 가지 모두 아주 적은 계산으로 원본 이미지에서 변환된 이미지를 생성할 수 있으므로 변환된 이미지를 디스크에 저장할 필요가 없다.
1. Image Translation & Horizontal Reflection
- 랜덤한 224x224 패치 및 수평 반사된 이미지 추출
- 원본 256x256 이미지에서 랜덤한 224x224 크기의 패치와 수평 반사된 패치를 추출하여 학습 데이터를 생성한다.
- 이 방법을 적용하면 학습 데이터 크기가 2048배 증가하지만, 데이터 간 높은 상관관계가 있다.
- 테스트 단계
- 5개의 패치(네 개의 모서리 + 중앙)와 수평 반사된 패치를 추출하여 총 10개의 패치를 사용한다.
- 10개 패치의 softmax 결과를 평균하여 최종 예측을 결정한다.
2. RGB Intensity Alteration(RGB 강도 변화)
- 역할
- 이미지의 RGB 채널 강도를 조정하여 데이터 증강을 수행한다.
- 훈련 이미지의 색상 및 밝기를 변형하여 모델이 특정 조명이나 색상에 과적합되는 것을 방지한다.
- 기법
- PCA를 수행하여 RGB 픽셀 값의 주요 패턴을 분석한다.
- 계산된 주성분(고유 벡터)에 고윳값을 반영한 랜덤 변수를 곱해 픽셀 값에 추가한다.
- 이런 과정은 이미지의 원본 레이블을 유지하면서도 색상과 밝기를 다양하게 변형할 수 있도록 해준다.
이런 Data Augmentation 기법들은 top-1 error rates를 1% 이상 줄인다.
4.2 Dropout
여러 개의 모델을 결합하면 테스트 오류를 줄이는 데 효과적이나, 대형 신경망에서는 연산 비용이 매우 크다. 그래서 새로운 기법인 Dropout을 적용했다.
- 동작 원리
- 학습 시 각 은닉층 뉴런의 출력을 50% 확률로 0으로 설정한다.
- 비활성화된 뉴런은 순전파와 역전파 과정에서 제외된다.
- 입력 데이터가 들어올 때마다 다른 구조의 신경망이 샘플링된다. → 모델이 특정 뉴런에 의존하는 것을 방지한다.
- 테스트 시에는 모든 뉴런을 사용하지만, 출력을 0.5배 감소시켜 학습 시의 확률적 Dropout을 보정한다.
- 효과
- 뉴런 간 복잡한 공적응(co-adaptation)을 감소 → 더 일반적인 특징을 학습하도록 유도
- 학습 속도 저하 → 수렴(iteration)까지의 학습 횟수가 약 2배 증가
- 본 연구에서는 Fully-Connected Layer의 처음 두 개에 Dropout을 적용하여 과적합 문제를 해결했다.
- SGD(Stochastic Gradient Descent) 사용
- batch size : 128
한 번의 학습에서 사용할 데이터 샘플의 개수- momentum : 0.9
SGD의 업데이트 과정에서 이전 단계의 움직임을 고려하여 관성을 부여하는 기법- weight decay : 0.0005
모델이 너무 큰 값을 가지지 않도록 가중치에 패널티를 부여하는 정규화 기법- weight decay는 단순한 정규화 역할이 아니라 모델 학습을 돕는 요소로 작용한다.
- 가중치 및 바이어스 초기화
- 가중치는 평균 0, 표준편차 0.01인 가우시안 분포에서 초기화한다.
- 두 번째, 네 번째, 다섯 번째 convolutional layers와 fully-connected hidden layers의 바이어스는 1로 설정하여 ReLU에 양의 입력을 제공함으로써 초기 학습을 가속화한다.
- 나머지 층의 바이어스는 0으로 초기화했다.
- 학습률 설정
- 모든 층에 동일한 학습률을 적용하고 학습 중 수동 조정
- 검증 오류 개선이 멈추면 학습률을 10배 감소시키는 휴리스틱 적용
- 초기 학습률은 0.01이고 최종적으로 3번 감소했다.
- 걸린 시간
- 약 90번의 epoch을 반복하여 학습 진행
- 총 120만 개의 이미지 데이터셋 사용
- NVIDIA GTX 580 3GB GPU 두 개를 사용하여 5~6일 소요
제안된 CNN 모델(AlexNet)은 ILSVRC-2010과 ILSVRC-2012 데이터셋에서 최상의 성능을 기록했다.
- ILSVRC-2010 결과
- top-1 error rates : 37.5%
- top-5 error rates : 17.0%
- ILSVRC-2012 결과
- top-5 error rates : 18.2%
- 앙상블 효과
- 마지막 풀링 층 위에 여섯 번째 합성곱 층을 추가한 CNN을 전체 ImageNet Fall 2011 데이터셋(1,500만 이미지, 22,000 카테고리)으로 학습 후 ILSVRC-2012에 파인튜닝 : 16.6%
- 사전 학습된 두 개의 CNN과 앞서 언급한 다섯 개 CNN의 예측을 평균 : 15.3%
- 대규모 CNN의 가능성
- 깊고 큰 CNN이 어려운 데이터셋에서도 최상의 성능을 달성할 수 있음을 입증
- Convolutional Layer를 제거하면 성능이 저하된다. 따라서, 네트워크의 깊이는 성능에 중요한 요소임을 확인
- 향후 연구 방향
- 현재까지 네트워크 크기를 키우고 학습을 오래할수록 성능이 향상되었다.
- 하지만 인간의 시각 시스템에 도달하려면 아직 갈 길이 멀다.
- 미래에는 영상 데이터에 CNN을 적용하여, 정적인 이미지에서는 얻기 어려운 시간적 정보를 활용하는 것이 목표이다.