ImageNet Classification with Deep Convolutional Neural Networks

2016. 6. 7. 13:53

Alexnet


 Introduction

 

기계 학습을 통한 객체 인식의 경우 데이터 셋을 필요로 한다.

하지만, 기존에는 적은 양의 데이터 셋만 공개되어 단순한 인식 과제들만 수행되었다.

최근에는 LabelMe와 ImageNet와 같이 많은 수의 데이터셋가 존재한다. 

LabelMe는 수백에서 수천 개의 완전히 분할된 영상으로 구성되며, 

ImageNet은 2만 2천개의 카테고리를 갖는 1,500만개의 정답있는 고해상도 영상으로 구성된다.


이렇게 수많은 데이터를 학습시키기 위해서는 좀 더 큰 학습 능력을 가진 모델이 필요함

CNNs이 이러한 모델로 여겨진다.

CNNs은 신경망의 깊이와 폭 변화로 제어 가능함.

CNNs은 표준 Feedforward 신경망과 비교할 때, 훨씬 더 적은 수의 연결과 파라미터를 갖기 때문에

좀더 쉽게 훈련 가능하다.


논문의 공헌

1.  알려진 가장 큰 CNNs 중 하나를 ILSVRC-2010과 ILSVRC-2012에서 사용된 ImageNet의 일부분을 이용하여 학습

- 보고된 결과보다 훨씬 더 좋은 결과를 보임

- 코드를 공개하였음

2. 성능 향상 방법

3. 과적응(Overfitting)을 막는 기법


 The Dataset

 ImageNet은 약 22,000개의 카테고리에 속하는 1,500만 개의 정답있는 고해상도 영상으로 구성됨

 ImageNet Large-Scale Visual Recognition Challenge, ILSVRC 

- 2010년부터 매년 개최됨

- 1000개의 카테고리에 있는 1000개의 영상으로 구성되는 ImageNet의 부분집합을 사용

- 약 120만개의 훈련 영상, 5만 개의 검증 영상, 15만개의 시험 영상이 있음


ILSVRC-2010은 시험 집합의 정답이 있는 ILSVRC의 유일 버젼임.

ImageNet은 다양한 해상도의 영상들로 구성됨.

본 논문에서는 일정한 차원수가 요구됨

256 x 256 으로 다운샘플링 수행

- 더 짧은 변의 길이가 256으로 되도록 변경

- 중심을 기준으로 256 x 256 크기로 크롭

훈련 영상에서 평균 값을 빼는 것만 적용

본 네트워크는 raw 영상의 픽셀 값(RGB)에 대해 훈련 수행


 The Architecture

 

8개의 층으로 구성됨.

5개의 Convolutional Layer와 3개의 Fully-Connected Layer로 구성


● ReLU Nonlinearity


입력 변화에 따른 뉴런 출력 f를 모델하는 표준 방식은 f(x)=tanh(x) 또는 f(x)=(1+e^-x)^-1이다.

ReLUs를 활성 함수로 사용할 경우 tanh보다 몇 개 더 빠르게 학습된다.

아래 그림은 CIFAR-10 데이터세트에서 4층 컨볼루셔널 네트워크 하나가 

25% 훈련 에러율에 도달하기까지 요구되는 반복 횟수를 보여준다.


●  Training on Multiple GPUs


GTX 580 GPU는 오직 3GB 메모리를 가짐

이로 인해 훈련 가능한 네트워크의 최대 크기가 제한됨

훈련 예제 120만개를 하나에 올리기에 너무 큼

두개의 GPU에 분배하여 수행

사용한 병렬화 방식은 절반의 커널들을 각 GPU로 할당하는 것임

한가지 특이점은, 3층의 경우에는 2층의 모든 GPU로 부터 입력 받는 것임

연결 패턴 선택은 교차 검증 문제임. 


●  Local Response Normalization


ReLU는 포화를 막기 위한 입력 정규화를 필요로 하지 않음

그러나, ReLU 다음에 적용되는 지역 정규화 방식이 일반화를 도움



i는 커널 인덱스
x,y 는 위치 좌표
a는 뉴런의 출력

결과적으로 인접한 커널들에 걸쳐 정규화됨.