티스토리 뷰

Paper/Vision

AlexNet

기내식은수박바 2019. 3. 29. 18:00
반응형

논문

 

개요

1000개의 클래스를 분류하는 ImageNet LSVRC-2010 대회에서 120만개의 고해상도 이미지를 분류하기 위해 dcnn을 훈련했다. 테스트 데이터에서 우리는 top-1과 top-5에서 각각 17%와 37.5% 오류율을 달성했으며 이 전 기술보다 상당히 좋아진 것을 볼 수 있었다.

6000만개의 Parameter와 65만개 Neuron들을 가진 신경망은 5개의 Convolutional Layer, 3개의 Fully-Connected Layer로 구성되어 있으며, 마지막 층은 1000개의 category를 분류하기 위한 softmax함수가 있다.

훈련을 더 빠르게 만들기 위해서, 우리는 Non-Saturating Neuron들과 Convolution 작업에 GPU를 사용했다. Fully-Connected layers에서의 Overfitting을 줄이기 위해서, Dropout을 사용했다.

이 모델을 조금 수정한 다른 구조를 가지고 우리는 ILSVRC-2012 대회에서 2위의 에러율인 26.2%와 비교할 때 15.3%의 테스트 에러율을 달성했다.

 

1. 소개

현재 Object Recognition 방법들은 Machine Learning 방법들이 필수적으로 사용된다. Object Recognition 성능을 향상시키기 위해서, 우리는 더 큰 데이터셋을 모으고, 더 강력한 모델들을 학습했고, Overfitting을 예방하기 위한 더 좋은 기술들을 사용할 수 있다.

최근 까지 레이블된 이미지 데이터셋은 상대적으로 적었다. 단순 Recognition 작업들은 이러한 크기의 데이터셋에서도 잘 해결될 수 있다. 예를 들어, MNIST digit-recognition 방법에서 제일 낮은 에러율은 사람이 직접 분류할 때이다. 하지만, 실제 설정들에서의 Object들은 상당히 많은 변화를 보인다. 이러한 Object들을 인식 할 수 있게 학습하기 위해서 더 크고 많은 training set들을 사용하는 것은 필수적이다.

실제로 작은 이미지 데이터셋의 결점은 널리 인식되어져 왔다. 하지만 수백만개의 레이블된 이미지 데이터셋을 모으는 것이 가능하게 됐다.가장 최신의 큰 데이터셋은 LabelMe(수십만 개의 fully-segmented 이미지) 와 ImageNet(2만 2천개 이상의 category로 분류할 수 있는 1500만개 이상의 레이블된 고해상도 이미지)을 포함한다.

수백만개의 이미지들로 부터 수천개의 Object들에 대해 학습하기 위해서, 우리는 큰 학습 능력을 가진 모델이 필요하다. 

그러나, Object Recognition 작업의 큰 복잡성은 이 문제가 ImageNet 처럼 큰 데이터 셋이라 할지라도 특정화 할수 없다는 것을 의미한다.그래서 우리 모델은 우리가 가지고 있지 않은 모든 데이터에 대해 보충해줄 많은 사전 지식을 가져야 한다. 

기존에 비슷한 크기의 layers를 가진 feedforward 신경망과 비교했을 때, CNN은 더 적은 연결과 Parameter를 가지고 있으며, 훈련하기 더 쉽다. 

운좋게도, 현재 고도로 최적화된 2D Convolution의 시행과 짝을 이루는 GPU는 흥미롭게 큰 CNN의 훈련을 충분히 용이하게 만들만큼 강력하다. 그리고 ImageNet같은 데이터셋들은 심각한 Overfitting 없이 그러한 모델들을 훈련하기에 충분히 레이블된 예시들을 포함한다.

최종 네트워크는 5개의 Convolutional layer와 3개의 Fully-Connected layers로 구성되어 있고 이 깊이는 중요한 것으로 보인다: 어떤 Convolutional layer를 지워도 열등한 성능을 야기한다라는 것을 발견했다.

끝으로, 네트워크 크기는 우리가 기꺼이 견딜 수 있는 훈련 시간과 현재 GPU가 이용할 수 있는 메모리의 양에 의해 제한된다. 우리 네트워크는 2개의 GTX 580 3GB GPU를 가지고 훈련할 때 5 ~ 6일정도의 시간이 걸린다. 모든 우리 실험은 결과들이 더 빠른 GPU와 더 큰 데이터셋을 이용할 수 있을 때까지 기다림으로써 간단히 향상 될 수 있다는 것을 시사한다.

 

2. 데이터셋

ImageNet은 대략 2만2천개의 카테고리에 속하는 1500만개 이상의 레이블된 고해상도 이미지 데이터셋이다. Pascal Visual Object Challenge의 일부분으로 2010년 부터 시작하여 ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)로 불리는 연간 대결행사가 개최되고 있다. ILSVRC는 각 1000개의 카테고리에 속하는 대략 1000개의 이미지들을 가진 ImageNet의 부분집합을 사용한다. 대략 120만개의 training 이미지, 5만개의 validation 이미지, 15만개의 testing 이미지들이 있다.

ILSVRC-2010은 test set 레이블들만 이용가능한 ILSVRC 버전이다. 이 것이 우리가 대부분의 실험을 수행했던 버전이다. ILSVRC-2012 대결에 우리 모델을 들고 간 이후로, Section 6에서 우리는 마찬가지로 2012 버전의 데이터셋을 가지고 결과들을 기록했다.

ImageNet에서 두 가지 에러율을 기록하는 것은 관례적이다: top-5 에러율은 모델에서 가장 가능성이 있다고 여겨지는 다섯 개의 레이블 중에서 올바른 레이블이 없는 테스트 이미지의 비율이다.

ImageNet은 다양한 해상도의 이미즏로 구성되어 있지만 우리 시스템은 일정한 input 차원을 필요로 한다. 따라서, 우리는 256 * 256의 고정된 해상도 이미지를 down-sample 했다. 사각형의 이미지가 주어지면, 첫 번째로 짧은 부분의 길이가 256이 되도록 이미지를 rescale한 다음 결과 이미지에서 중앙의 256 * 256 패치를 뽑아냈다.

우리는 training set의 각 픽셀에 평균을 빼는 작업을 제외하고는 이미지에 어떠한 전처리작업도 하지 않았다. 그래서 우리는 원시 픽셀의 RGB 값을 가지고 네트워크를 훈련했다.

 

3. 아키텍처

우리 네트워크의 아키텍처는 Figure 2에 요약되어 있다. 아키텍처는 5개의 Convolutional, 3개의 fully-connected를 합친 8개의 학습된 layers를 포함한다. 아래에, 우리는 우리 네트워크 아키텍처의 새롭고 특별한 특징의 일부분을 설명한다. Section 3.1 ~ 3.4는 중요성에 따른 평가에 따라서 정렬되어 있다.

3.1 ReLU 비선형(Non-Linearity)

input x의 함수 Neuron의 output을 모델링하는 기본적인 방법은 

tanh
Sigmoid

을 사용하는 것이다.

Gradient Descent를 이용한 training time 관점에서, 이러한 saturating 비선형 함수들은 Non-saturating 비선형 함수 보다 더 느리다.

ReLU

Nair와 Hinton에 따라서, 우리는 ReLU(Rectified Linear Units)를 가지고 Neuron들을 참조했다. ReLU를 이용한 DCNN은 tanh와 비교하여 훈련 시간이 더 빠르다.

4계층 Convolutional 네트워크에서 CIFAR-10 데이터셋을 이용하여 25% training 에러율을 달성하는데 필요한 반복 횟수를 보여주는 Figure 1에 설명되어있다. 이 그림은 우리가 그러한 큰 신경 네트워크를 가지고 고전적인 saturating Neuron 모델들을 사용하여 이 작업을 했다면 실험을 할 수 없었을 것이라는 점을 보여준다. 

우리가 CNN에서 고전적인 Neuron 모델의 대안을 첫 번째로 고려한건 아니다. 예를 들어, Jarrett은 비선형 함수를 주장했다.

이 함수는 특히 Caltech-101 데이터셋에서 local average pooling에 따라오는 contrast normalization 측면에서 잘 작동했다.

하지만 이 데이터셋의 주요한 고민거리는 Overfitting을 예방하는 것이다. 그래서 Overfitting이 관측되는 효과는 우리가 ReLU를 사용했을 때 기록한 training set을 적합하는 활동을 가속화하는 것과는 다르다. 더 빠른 학습은 큰 데이터셋으로 학습된 큰 모델의 성능에 좋은 영향을 가진다.

Figure 1: ReLU(실선)를 이용한 4계층 Convolutional Neuron 네트워크는 CIFAR-10에서 tanh(점선) Neuron을 사용한 동일한 네트워크보다 더 빠르게 6번의 반복으로 25%의 training 에러율을 달성한다. 각 네트워크의 학습률은 가능한 빨리 training을 하기위해 독립적으로 선택됐다. 어떠한 규제도 사용되지 않았다. 여기서 설명된 효과의 규모는 네트워크 아키텍처를 다양화 한것이지만, ReLU를 이용한 네트워크들은 saturating Neuron을 이용한 동일 계층보다 꾸준하게 몇 배 더 빠르게 학습한다.

3.2 여러개의 GPU에서의 Training

한 개의 GTX 580 GPU는 훈련할 수 있는 네트워크의 최대 크기를 제한하는 3GB의 메모리만 가지고 있다. 따라서 우리는 2개의 GPU를 사용하여 네트워크를 뿌려준다. 

현재 GPU는 특히 GPU간 병렬 처리를 하기에 적합하다. 우리가 필수적으로 사용하는 병렬 처리 방법은 각 GPU마다 Kernel 이나 Neuron의 절반을 놓는다. 그리고 추가적인 속임수가 있다: GPU는 특정 층에서만 소통한다.

예를들어, 이 방법은 3층의 kernel들은 input을 2층의 모든 kernel 맵들을 통해 받는다는 의미이다. 그러나, 4층의 kernel들은 동일한 GPU에 있는 3층의 kernel 맵들로 부터 input을 받는다. 

연결 패턴을 선택하는 것은 Cross-Validation의 문제이지만, 이 것은 우리가 계산 양의 비율이 수용가능할 때까지 소통의 양을 정확하게 조정하도록 해준다.

결과로 생긴 아키텍처는 우리의 Column들이 독립적이지 않다는 것을 제외하고는 Ciresan 사용한 "columnar" CNN의 아키텍처와 다소 유사하다. 두 개의 GPU 네트워크는 한 개의 GPU 네트워크보다 훈련시간이 덜 걸린다.

3.3 지역 반응 정규화(Local Response Normalization)

ReLU는 saturating를 예방하기 위해 input을 정규화할 필요가 없다는 가치있는 특성을 가지고 있다. 만약 적어도 일부의 training 예시들이 ReLU에서 positive input을 만든다면, 학습은 그 Neuron에서 발생할 것이다. 그러나, 우리는 다음에 나오는 지역 정규화 방법이 일반화를 돕는다는 사실을 여전히 발견했다. 

우리는 특정 층들에 ReLU를 적용한 후에 이 정규화를 적용했다.(Section 3.5)

이 방법은 Jarrett의 지역 대비 정규화와 일부분 닮았다. 하지만, 우리 것은 평균을 빼지 않기 때문에 더 정확하게 '밝기 정규화'라고 불릴 것이다. 반응 정규화는 개별적으로 top-1 과 top-5 에서 1.4%, 1.2%의 에러율을 감소했다. 우리는 또한 CIFAR-10 데이터셋에서 이 방법의 효과를 증명했다: 4 계층 CNN이 정규화 없이 13%의 에러율을 달성했고 정규화를 가지고 11%의 에러율을 달성했다.

3.4 Overlapping Pooling

CNN에서 Pooling 층들은 같은 kernel map에서 Neuron들의 인접한 그룹들의 output을 요약한다. 전통적으로, 인접합 Pooling 유닛들에 의해 요약된 이웃들은 overlap되지 않는다. 더 정확하게 얘기하자면, Pooling 층은 

만약 우리가 s = z로 설정한다면, CNN에서 흔하게 사용되는 전통적인 local pooling을 얻을 것이다.

만약 우리가 s < z로 설정한다면, 우리는 overlapping pooling을 얻을 것이다. 이 방법이 우리가 s = 2, z = 3으로 네트워크를 통해 사용한 것이다. 이 방법으로 top-1 과 top-5 에서 각각 0.4%, 0.3%의 에러율이 감소했다. 

우리는 일반적으로 training 하는 동안 overlapping pooling을 이용한 모델들이 overfit이 덜 된다는 것을 관찰했다.

3.5 전체적인 아키텍처

Figure 2에 묘사된 것처럼 네트워크는 가중치를 가진 8 계층으로 구성 되어 있다. 5개의 Convolutional layer와 3개의 Fully-connected layer. 마지막 fully-connected layer의 output은 1000개의 클래스 레이블 분포를 만드는 softmax가 적용된다. 

우리의 네트워크는 다차원 로지스틱 회귀의 목적을 최대화 하는 것이다. 이는 예측 분포 하에서 올바른 레이블의 로그 확률에 대한 training case에 따라 평균을 최대화 하는 것과 동일하다.

2, 4, 5번째 Convolutional layer들의 커널은 동일한 GPU에 있는 앞 layer의 kernel map들과 만 연결되어 있다. 3번째 convolutional layer의 커널은 2번째 layer의 모든 kernel map들과 연결되어 있다. Fully-Connected layer의 뉴련들은 앞의 layer의 모든 Neuron들과 연결되어 있다.

Response Normalization layer는 첫 번째와 두 번째 layer 뒤에 따라 나온다.

Section 3.4에서 설명한 Max-pooling layer는 Response Normalization 뿐만 아니라 5번째 Convolutional layer에 따라나온다.

ReLU는 모든 Convolutional, Fully-Connected layer의 output에 적용된다.

1 번째 Convolutional layer

Input size : 224 * 224 * 3

Kernel - size : 11 * 11 * 3, count : 96, stride : 4

(stride는 Kernel map에서 이웃한 Neuron들의 Receptive field의 중심들 사이의 거리이다.)

Figure 2. 우리 CNN의 아키텍처 설명. 명시적으로 두 GPU사이의 책임에 대한 묘사를 보여준다. GPU는 특정한 layer에서만 소통한다. 네트워크 input은 150,528개의 차원을 가지며, 네트워크 층에서 Neuron의 수는 다음과 같다. 253,440 - 186,624 - 64,896 - 64,896 - 43,264 - 4096 - 4096 - 1000

2 번째 Convolutional layer

Input : 1 번째 층의 Response-Normalized and Pooled Output

Kernel - size : 5 * 5 * 48, count : 256, 

3, 4, 5번째 Convolutional layer들은 Pooling과 Normalization layer의 개입없이 연결되어 있다.

3 번째 Convolutional layer

Input : 2 번째 층의 Response-Normalized and Pooled Output

Kernel - size : 3 * 3 * 256, count : 384

4 번째 Convolutional layer

Input : 3 번째 층의 Output

Kernel - size : 3 * 3 * 192, count : 384

5 번째 Convolutional layer

Input : 4 번째 층의 Output

Kernel - size : 3 * 3 * 192, count : 256

그 이외 3개의 Fully-Connected layers

각각 4096개의 Neuron들을 가지고 있다.

 

4. Overfitting 감소

우리의 신경 네트워크 아키텍처는 6천만개의 Parameter들을 가진다. 비록 ILSVRC의 1000개의 클래스들이 각 training 예시를 이미지에서 레이블로 Mapping하는데 10bit 제한으로 부과하도록 만들지만, 이러한 점은 상당한 Overfitting없이 많은 Parameter들을 학습하기에는 불충분하다는 것이 판명됐다. 아래에서, 우리는 Overfitting을 방지하는 두 가지 중요한 방법을 설명할 것이다.

4.1 Data Augmentation

이미지 데이터에서 Overfitting을 감소하는 가장 쉽고 흔한 방법은 인공적으로 레이블을 보존한 변형을 사용하여 데이터셋을 확장하는 것이다. 변형된 이미지들은 디스크에 저장될 필요가 없다. 

Data Augmentation의 첫 번째 형태는 이미지 번역 및 수평 반사 생성으로 구성되어 있다. 우리는 이 작업을 256 * 256 이미지로부터 무작위로 224 * 224 패치를 추출하고, 추출된 패치들을 네트워크에 training하여 수행했다.

테스트에서, 네트워크는 5개(4개는 구석 패치들, 1개는 중앙 패치)의 224 * 224 패치들과 이 패치들의 수평 반사들(총 10개의 패치)을 추출하고, softmax에 의해 만들어진 10개의 패치에 대한 예측을 평균화 함으로써 하나의 예측을 만들었다. 

Data Augementation의 두 번째 형태는 training 이미지에서 RGB 채널의 강도를 변경하는 것으로 구성되어 있다. 구체적으로, 우리는 ImageNet training set의 RGB 픽셀 값의 집합에 PCA를 수행했다.

4.2 Dropout

많은 다른 모델들의 예측을 조합하는 것은 테스트 에러를 줄이는 매우 성공적인 방법 이지만 훈련하는데 이미 며칠이 걸린 커다란 신경 네트워크들에게는 비용이 너무 많이 든다. 

그러나, 모델 조합에 있어서 효율적인 방법이 있다. Dropout이라는 최근에 소개된 기술은 0.5의 확률을 가지고 각 은닉 뉴런의 output을 0으로 만든다. 이 방법으로 드랍아웃된 뉴런들은 forward에 기여하지 않고 back-propagation에 참여하지 않는다. 

우리는 Figure 2의 1, 2번째 fully-connected layers에 Dropout을 사용했다. 

5. 학습 세부사항

우리는 가중치 감소 0.0005, momentum 0.9, batch size 128을 이용한 stochastic grdient descent를 사용하여 모델을 훈련시켰다. 이 작은 양의 가중치 감소율이 모델을 학습하는데 있어서 중요하다는 것을 발견했다. 이 것은 모델의 training 에러율을 감소시킨다.

가중치 w의 갱신 규칙은 

i : 반복 인덱스, v : momentum 변수,  ε : 학습률

우리는 각 layer의 가중치를 표준편차 0.01, 평균 0인 정규분포를 가지고 시작했다. 그리고 bias는 상수 1로 2, 4, 5 Convolutional layer와 fully-connected 은닉 층에서 시작했다. 남은 층들은 bias를 0으로 설정했다.

그리고 모든 layer에 동일한 학습률을 사용했다. 이 학습률은 우리가 training을 통해 직접 수정한 것이다. 우리가 해본 바로는 validation 에러율이 현재 학습률을 가지고 더이상 향상되지 않을 때 10으로 학습률을 나눈 것이다. 학습률은 0.01부터 시작했고, 제거 전에 3번 감소했다.

우리는 120만개의 training set 이미지를 이용하여 대략 90 사이클로 네트워크를 학습했다. 그리고 두 개의 NVIDIA GTX 580 3GB GPU를 이용했을 때 5 ~ 6일 정도 걸렸다.

6. 결과

ILSVRC-2010의 결과는 Table 1에 요약되있다. 우리 네트워크는 top-1과 top-5 테스트 에러율을 각 37.5%, 17.0%를 달성했다.

ILSVRC-2010 대회동안 가장 좋은 성능은 다른 특징들로 훈련된 6 개의 드문 부호화(sparse-coding) 모델들로 부터 만들어진 예측들을 평균하는 방법으로 각 47.1%와 28.2%를 달성했다. 그때부터 알려진 가장 좋은 결과들은 밀집하게 샘플된 특징들을 계산한 Fisher Vectors로 훈련한 두 개의 분류기의 예측들을 평균하는 방법을 가지고 45.7%와 25.7% 였다.

Table 2는 우리 모델을 들고 ILSVRC-2012 대회에 나가 기록한 결과들이다.

우리는 validation과 test 에러율을 서로 교환할 수 있게 사용했다. 우리가 해본 결과 이 둘은 0.1% 이상 차이가 나지 않기 때문이다. 이 원고의 CNN은 top-5 에러율 18.2%를 달성했다. 5개의 유사한 CNN의 예측을 평균한 것은 16.4%의 에러율이 나왔다. 

마지막으로, 우리는 890만개의 이미지와 10184개의 카테고리를 가진 Imagenet Fall 2009 버전에서도 에러율을 기록했다. 이 데이터셋에서 우리는 이미지의 절반은 training으로 쓰고 절반은 testing으로 쓰라는 대회의 문헌을 따랐다.

정해진 test set이 없었기 때문에 우리가 분리한 것은 이전의 저자들이 사용했던 분리한 것과 달라야 했다. 하지만 이 것이 굉장히 결과에 영향을 미치지는 않았다. 

이 데이터셋에서 위에서 설명한 네트워크에 추가하여 6개의 Convolutional layer와 마지막의 Pooling layer를 가지고 획득한 top-1, top-5 에러율은 67.4%와 40.9%이다. 이 데이터셋을 이용해 알려진 가장 좋은 결과들은 78.1%와 60.9%이다.

6.1 질적인 평가

Figure 3은 네트워크에서 두 개의 데이터가 연결된 layer에서 학습된 Convolutional kernel들을 보여준다. 네트워크는 선택적인 다양한 빈도수와 방향 kernel 뿐만 아니라 다양한 색깔 부분(color blob)을 학습했다. GPU1의 kernel들은 크게 색상-불가지론자(color-agnostic)인 반면 GPU 2의 kernel은 크게 color-specific이다. 이러한 종류의 특징화는 매번 run하는 동안 발생하고 어떤 랜덤한 가중치 초기값에도 독립적이다.

Figure 4의 왼쪽 패널에서 우리는 네트워크가 8개의 테스트 이미지들에서 top-5 예측들을 계산하면서 배우는 것들을 질적으로 평가한다. 맨 왼쪽위에 있는 mite같은 중앙에서 벗어난 사물들도 네트워크에 의해 인식될 수 있다는 것에 주목하자. 다른 유형의 고양이만이 레오파드에서 그럴듯한 레이블로 간주될 수 있다. 몇몇 사례에서(그릴, 체리) 사진의 의도된 초점 때문에 애매한 부분이 있다.

네트워크 시각 지식을 조사하기 위한 다른 방법은 마지막 4096 차원의 은닉 층에서 이미지에서 유도된 특징 활성화를 고려하는 것이다. 만약 두 개의 이미지가 작은 유클리디안 분리를 가지고 특징 활성화 벡터들을 만들어내면, 우리는 높은 수준의 신경 네트워크가 이 벡터들을 유사하다고 간주할 것이다. Figure 4에서는 test set에서 5개의 이미지와 이러한 척도에 따라  training set에서 각 이미지들과 가장 유사한 6개의 이미지를 보여준다.

픽셀 수준에서 복구(retrieve)된 training 이미지들은 일반적으로 L2에서 첫 번째 column의 쿼리 이미지들과 가까이 있지 않다. 예를 들어, 복구된 개와 코끼리들은 다양한 자세들을 가지고 있다.

두 4096 차원 사이에서 유클리디안 거리를 사용하여 유사성을 계산하는 벡터들은 비효율적이다. 하지만 이러한 벡터들을 binary 코드로 짧게 압축하는 auto-encoder를 training하여 효율적이도록 만들 수 있다. 원 픽셀에 auto-encoder를 적용하는 것보다 더 좋은 이미지 복구 방법이 될 수 있다. 이러한 방법은 이미지 레이블을 사용하지 않으며 그 이미지들이 의미적으로 유사한지 안한지에 관계없이 유사한 가장자리 패턴들을 가지고 이미지들을 복구하는 경향을 가진다.

7. 토론

우리 결과는 크고, 깊은 Convolutional 신경 네트워크가 순수 지도학습을 사용하여 매우 도전적인 데이터셋에 기록 갱신 결과들을 달성하는 능력이 있다는 사실을 보여줬다. Convolutional layer가 한개라도 제거되면 네트워크 성능이 저하된다. 예를 들어, 어떤 중간 층을 제거 하더라도 top-1에서 2%의 손실이 나타난다. 깊이는 우리가 결과를 달성하는 데 있어서 정말 중요하다. 

실험들을 단순화 하기위해, 우리는 비지도 사전 훈련이 도움이 될 것이라고 생각하지만 사용하지 않았다. 대신 우리는 레이블된 데이터의 양에 상응하는 증가 획득없이 네트워크 사이즈를 늘려 충분히 계산적인 힘을 얻었다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함