-
[논문 리뷰] 딥러닝의 도약: ImageNetClassificationwithDeepConvolutional NeuralNetworksDeep learning/Algorithms 2019. 5. 28. 13:41SMALL
논문 저자: Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton
논문 정리해보기
1) Introduction
-
ILSVRC-2010과 ILSVRC-2012 대회에서 사용된 데이터 셋을 사용하였다.
-
2D convolution의 최적화된 GPU를 구현하였다.
-
Dataset에 대한 Overfitting을 해결하려 한다.
-
최종적으로 5가지의 convolutional layers와 3개의 fully-connected layers를 포함한다.
→ convolution layer를 제거하면 성능이 떨어짐을 확인
-
두 개의 GTX 580 3GB GPU를 이용하여 5-6일 정도의 training 시간이 소요되었다.
2) The Dataset
- ImageNet은 22,000개로 간략하게 분류된 고해상도의 라벨링된(labeld) 15 million(1500만 개)개의 이미지를 말한다. 이 이미지들은 Amazon의 Mechanical Turk crowd-sourcing tool을 이용해서 사람이 분류했다.
- ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)는 ImageNet의 이미지 중 1,000개의 이미지를 1,000개의 카테고리로 분류한 것을 사용한다.
- 120만 개의 training images, 50,000개의 validation images, 150,000개의 testing images가 이용되었다.
- 논문의 CNN은 동일한 차원의 이미지들이 필요한 반면, ImageNet의 이미지들은 다양한 해상도를 가지고 있다. 따라서 이미지들을 256 x 256으로 다운샘플링(down-sample)* 하였다.
- 각 픽셀에서 트레이닝 세트의 평균(mean activity)를 빼 주는 경우를 제외하고 다른 이미지 전처리는 하지 않았다.
- 네트워크의 중심 RGB값을 훈련에 사용하였다.
* down-sampleing: 이미지를 정수배 만큼 축소시키는 것
3) The Architecture
3.1 ReLU Nonlinearity
- 일반적인 뉴런 출력 f를 입력 x의 함수로 모델링하는 방법은 f(x) = tanj(x) 또는 f(x) = (1 + e - x) -1이다. 그러나 이런 방법은 포화 비선형 함수(saturating nonlinearities)로 비포화 비선형 함수(non-saturating nonlinearity)인 f(x) = max(0, x)보다 훈련시간이 오래 걸린다.
- 따라서, 비포화 비선형 함수인 ReLUs(Rectified Linear Units)를 사용한다.
- f(x) = |tanh(x)| 함수도 훈련 시간을 단축시킬 수 있지만, 이 논문에서는 overffiting을 방지하여 훈련하는 것이 목표이므로 ReLU함수를 선택하였다.
- ReLUs함수가 tanh 함수보다 훨씬 빠르게 학습한다는 것을 확인할 수 있는 그래프(DataSet: CIFAR-10)
- 5개의 convolutional layer, 3개의 fully-connedted layer
3.2 Training on Multiple GPUs
-
NVIDIA의 GTX580 3G GPU 두 개를 사용하였다.
-
각 GPU는 특정 layer(또는 뉴런)에서만 정보를 교환한다.
(layer 3의 커널들은 layer 2의 커널 맵을 입력 값으로 받고, layer 4는 같은 GPU안의 layer 3의 커널 맵으로만 입력 값을 받는다.)
?? -> 이 부분이 정확히 이해되지 않았다..ㅠㅠ
3.3 Local Response Normalization
- ReLU는 입력 값을 정규화 하지 않아도 된다.
- 그러나, local normalization(정규화)이 일반화에 도움이 된다는 사실을 발견하였다. (네트워크 상의 ReLU 함수를 통과한 ouput들을 같은 위치(x, y)에 인접한 커널 맵을 n개 모아서 정규화 하는 방법이다.)
- 이 논문에서는 k = 2, n = 5, a = 10^-4, b = 0.75를 사용했다.
3.4 Overlapping Pooling
-
pooling층은 pooling unit의 위치를 중심으로 하는 z x z 이웃을 정리하는 각 각 의 풀링 유닛을 그리드로 구성한다. (s pixels)
-
s = z의 경우, 일반적인 CNN 로컬 풀링을 가진다.
-
s < z인 경우, 오버랩 풀링이 된다. → overfitting을 막는데 도움을 준다.
여기서는 s = 2, z = 3일때, top-1, top-5 오류율을 각각 0.4%, 0.3% 정도 줄일 수 있다.
3.5 Overall Architecture
- CNN의 net은 가중치가 있는 8개의 레이어를 포함한다.
- 처음 5개는 convolutional 레이어이고, 나머지 3개는 완전히 연결되었다(fully-connected).
- 마지막 fully-connected 레이어의 출력은 1000 way softmax로 공급되어 1000개의 클래스로 분류된다.
4) Reducing Overfitting
4.1 Data Augmentation
- 데이터의 overfitting을 막기 위해, 레이블은 유지한 채 데이터를 인위적으로 증식시키는 두 가지 방법이 있다. 첫 번째, 이미지를 뒤집고 수평으로 돌리는 방법이다. 이는 training set를 2,048배로 정량화해주지만 늘어난 데이터가 트레이닝 세트와의 의존도도 높게 유지할 수 있다. 두 번째, 트레이닝 이미지에서 RGB 채널의 강도를 바꿔주는 방법이다. 여기서는 ImageNet의 트레이닝 셋 전체에서 RGB 픽셀 값 집합에 대해 PCA***를 수행한다.
*** PCA(Principal Component Analysis): 주성분 분석을 뜻하며, 데이터의 값들이 분포해 있을 때 주성분(Principal component)을 찾아주는 방법이다. 주로 영상인식, 통계 데이터 분석(주성분 찾기), 데이터 압축(차원 감소), 노이즈 제거 등에 사용된다.
[출처: https://darkpgmr.tistory.com/110]
4.2 Dropout
- 50%의 확률로 hidden layer의 아웃풋 값을 0으로 출력하는 것이다. 이 때 선택되는(0을 출력하게 되는) 레이어는 랜덤하게 선택된다.
- 이렇게 drop out된 레이어들은 순방향, 역방향 전파에 참여하지 않음으로써, 입력이 제공될 때 신경망은 다른 아키텍처를 샘플링하지만 모든 검색 알고리즘은 가중치를 공유하게 된다.
- 이는 뉴런이 다른 특정 뉴런에 의존할 수 없으므로 복잡한 뉴런의 공동적응(co-adaptation)을 감소시킬 수 있다.
5) Details of learning
- batch size 128, momentum 0.9, weight decay 0.0005를 이용하였다.
- weight decay는 모델의 훈련 오류를 줄인다.
6) Results
-
ILSVRC-2010에 대한 결과표
37.5%, 17.0%의 top-1과 top-5의 테스트 세트 오류율 달성했다.
-
ILSVRC-2012에 대한 결과표
이 대회의 테스트셋의 라벨이 제공되지 않기 때문에 검증과 테스트 오류율울 서로 바꿔서 사용했다.
6.1 Qualitative Evaluations
- 네트워크의 두 개의 데이터 연결 계층(data-connected layers)에서 학습한 convolutional kernels을 보여준다.
- 위 네트워크는 다양한 주파수 및 방향 선택성 커널 뿐만 아니라 다양한 색상의 blobs를 학습했다.
- GPU1의 커널은 색상에 영향을 받지 않았지만, GPU2는 색상에 특화되어 있다.
- 위 그림의 왼쪽 패널에서는 네트워크가 8개의 테스트 이미지에서 상위 5가지 예측을 계산한 것을 질적으로 평가한 것이다.
- 왼쪽 위의 작은 진드기의 경우에도, net에 의해 구분되는 것을 보인다.(사물이 사진 중앙에 있지 않아도 구분할 수 있다.)
- 오른쪽 패널은 세트의 다섯 이미지와 가장 유사한 6가지 이미지를 보여준다.
- 이미지 라벨이 없는 이미지에 인코더를 적용하는 방법을 모색하기 때문에 이미지와 유사한 패턴을 가진 이미지를 검색하는 경향이 있다.
[참고 문헌]
1. Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. "ImageNetClassificationwithDeepConvolutional NeuralNetworks". 2012
논문의 자세한 이해는 다음 포스팅에서 올려야겠다..ㅠㅠ
LIST댓글
-