관련 링크 : https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
Architecture : AlexNet(2012)
Abstract
120만장의 1000개의 class를 가진 고해상도 ImageNet 데이터셋을 이용하여 분류를 위한 신경망을 학습시켰다. 신경망은 max-pooling layer를 가진 5개의 conv layer와 3개의 FC layer, 그리고 마지막에 1000-way softmax layer로 이루어져 있다. 학습 속도를 위해 non-saturating function(ReLU)을 이용했고, overfitting을 방지하기위해 dropout을 이용했다.
1. Introduction
1500만장이상의 고해상도 데이터셋인 ImageNet 덕분에 신경망을 학습시키는 길이 조금 열렸음에도 실제 객체 인식 문제는 복잡해서 데이터의 양은 여전히 부족했다. 따라서 모델의 성능을 향상시키기 위해 여러 기법들이 필요했고, 그 중 하나가 CNN이다.
CNN의 능력은 깊이와 폭에 따라 결정되고, 실제 이미지의 특징들을 상당히 정확히 추정할 수 있다. 또, 이론적으로는 MLP보다 성능이 떨어질 수 있지만,학습시키기 더 쉽다.
2. The Datasets
ImageNet은 22,000개의 범주를 가진 1,500만개 이상의 라벨링된 고해상도 이미지 셋이다. 실험에서는 ImageNet의 서브셋을 사용했고, 120만장의 학습 이미지, 5만장의 검증 이미지, 15만장의 테스트 이미지로 이루어져 있다.
평가 기준으로 top-1과 top-5에러를 사용할 것이고, 각각 이미지의 라벨을 1개와 5개 예측했을때, 정답이 없을 확률을 뜻한다.
ImageNet은 다양한 해상도의 이미지로 이루어져 있으므로, 256x256으로 다운샘플링하여 사용했는데, 직사각형의 경우 더 짧은쪽을 256으로 비율에 맞춰서 줄이고 가운데를 잘라서 사용했다. 유일한 전처리로는, 각 픽셀에서 RGB값에 평균을 빼주었다.
3. The Architecture
3.1 ReLU Nonlinearity
표준적인 활성화 함수는 $f(x)=tanh(x)$나 $f(x)= \frac{1}{1+e^{-x}}$지만, 논문은 $f(x)=max(0,x)$를 사용한다. 이는 non-saturating nonlinearity가 saturating nonlinearity보다 학습 시간이 적게 걸리기 때문이다.
아래 그림은 ReLU함수를 사용한 4층의 CNN이(실선) tanh함수를 사용한 동일한 네트워크(점선)보다 CIFAR-10에서 6배 빠르게 25%의 에러율에 도달했음을 보여준다. learning rates는 학습을 가속하기 위해 각각 독립적으로 설정했고, 어떤 종류의 regularization도 하지 않았다. 이는 네트워크의 크기마다 다르게 나타나지만, 평균적으로 ReLU가 다른 함수들보다 빠르게 학습된다.
3.2 Training on Multiple GPUs
하나의 GPU는 학습 시킬 수 있는 네트워크의 크기가 한정되고 우리가 사용한 GPU는 120만장의 데이터를 학습하기에는 충분하지 않으므로 두 개의 GPU를 사용해서 학습시켰다. 이를 위해서 각 GPU는 서로의 메모리를 직접적으로 읽고 쓸 수 있도록 cross-GPU parallelization을 구현했다.
각 GPU가 커널의 반을 학습시키는데, 특정 층에서만 서로 학습한다. 이는 cross-validation에서 문제가 될 수 있지만, 이 덕분에 GPU의 연산 능력의 한계까지 연결량을 정확히 조절 할 수 있다.
이는 커널의 수를 반으로 줄인 하나의 GPU로 학습시켰을 때보다 에러를 top-1 : 1.7%, top-5 : 1.2% 감소시켰고, 학습 시간도 약간 줄였다.
네트워크의 대부분의 파라미터는 첫번째 FCL에 있는데, 여기서는 CNN의 커널의 수 만 반으로 줄였으므로, one-GPU net의 실제 파라미터의 수는 two-GPU net의 반보다 많다. 따라서 어느 정도는 one-GPU net에 유리하게 편향되었다.
3.3 Local Response Normalization
ReLU는 양수의 경우 입력을 그대로 받으므로 input normalization을 할 필요가 없지만, 특정 층에만 LRN을 이용했다. 하이퍼파라미터는 valadation set을 이용하여 결정했다.
\[b^i_{x,y}=\frac{a^i_{x,y}}{\left(k+\alpha\displaystyle \sum_{k=max(0, i-n/2)}^{min(N-1, i+n/2)} (a^i_{x,y})^2\right)^\beta}\]$a^i_{x,y}$는 $x$, $y$에서 $i$번째 feature map의 출력값, $N$은 커널의 수이다. $k$, $n$, $\alpha$, $\beta$는 하이퍼 파라미터로, 논문에서는 $k=2$, $n=5$, $\alpha=10^{-4}$, $\beta=0.75$를 사용했다. 이는 validation set을 이용하여 결정했다.
LRN은 실제 뉴런의 동작인 외측억제(lateral inhibition)을 구현한 것으로, 외측 억제는 강한 자극을 받은 뉴런이 다른 뉴런의 활동을 약하게 하는 것이다. 각 feature map간의 값의 대비를 향상시켜 지역적으로 큰 값을 가지는 입력을 다음 레이어에 강조하기위해 사용된다.
이를 통해 에러를 top-1 : 1.4%, top-5 : 1.2% 감소시켰다.
3.4 Overlapping Pooling
전통적으로는 스트라이드와 커널의 크기가 같도록 maxpooling하지만(s=2, z=2) 논문에서는 스트라이드보다 커널의 크기를 늘려서 겹치도록 maxpooling했다.(s=2, z=3)
이를 통해 에러를 top-1 : 0.4%, top-5 : 0.3% 감소시켰고, overlapping이 더 overfitting하기 힘들다는 것도 관찰했다.
3.5 Overall Architecture
-
2, 4, 5번째 합성곱층의 커널들은 같은 GPU내의 이전 층의 커널과 연결되어 있고, 3번째 층은 이전 층의 모든 커널과 연결되어 있다.
-
Response-normalization 층들은 1, 2번째 합성곱층들 뒤에 있다.
-
Maxpolling 층들은 Response-normalization과 5번째 층 뒤에 있다.
-
ReLU는 모든 층 뒤에 있다.
4. Reducing Overfitting
논문의 모델은 6천만개의 파라미터를 가지고 있어서 overfitting되기 쉽다. 따라서 이를 막기 위해 두 가지 방법을 사용했다.
4.1 Data Augmentation
라벨을 보존시킨 변형을 이용해서 데이터셋의 크기를 인공적으로 키웠는데, 그 과정에서 필요한 연산량이 매우 적어 따로 저장할 필요 없이 바로 학습했다.
첫번째 변형은 256x256의 원본 이미지를 224x224로 추출해서 수평으로 뒤집어서 원본 데이터보다 2048배 큰 데이터셋을 얻었다. 테스트시 각 코너와 중앙까지 5개의 패치와 그것들을 반전시킨 5개의 패치를 이용해서 softmax층에 넣은 후 평균낸 값을 이용했다.
두번째 변형은 전체 훈련용 세트에서 RGB값에 PCA를 수행하고, 평균이 0이고 표준편차가 0.1인 정규 분포에서 뽑은 임의의 값 ${a_i}$, PCA를 수행해서 얻은 3x3 공분산 행렬의 $i$번째 고유벡터 ${\rho_i}$ 와 고유값 ${\lambda_i}$를 이용해
\[I_{xy}=[I^R_{xy},\;I^G_{xy},\;I^B_{xy}]^T+[\rho_1,\;\rho_2,\;\rho_3][a_1\lambda_1,\;a_2\lambda_2,\;a_3\lambda_3]^T\]를 수행해 RGB값을 바꿔서 학습시켰다. 임의의 값은 이미지가 학습될 때마다 새로 뽑았고, 덕분에 모델이 색상과 관련없는 이미지 본연의 특징을 잘 학습하게 되었다.
위의 두 변형으로 에러를 top-1 : 1% 이상 감소시켰다.
4.2 Dropout
여러 다른 모델의 예측을 함께 이용하는 것은 성능을 올리는데 좋지만, 학습 시간이 너무 오래 걸리게 된다. 따라서 “dropout”을 사용했다. 이는 은닉층의 임의의 뉴런들을 forward와 backward에서 비활성화 시키는 것으로, 매 학습마다 모델의 구조가 달라져 뉴런들이 다른 뉴런에 영향을 받는 것을 줄인다.
테스트시 모든 뉴런을 활성화시킨다. 학습시킬 때 비활성화될 확률을 0.5로 주었으므로, 출력에 0.5를 곱해주어야 한다.
논문에서는 이 과정이 reasonable approximation to taking the geometric mean of the predictive distributions produced by the exponentially-many dropout networks 라고 언급함
첫 두 개의 FCL에 dropout을 적용했고, dropout이 없을 때 네트워크가 부분적으로 overfitting되었다. Dropout을 사용하면 학습시키는데 2배의 시간이 걸린다.
5. Details of learning
학습에는 batch size를 128, momentum은 0.9, weight decay는 0.0005로해서 SGD를 사용했는데, 작은 weight decay는 regularizer의 역할 뿐만 아니라 training error를 줄였다.
\[\begin{array}{lcl} v_{i+1}\;:=0.9\cdot v_i-0.00005\cdot \epsilon \cdot w_i - \epsilon \cdot {\left<\frac{\partial L}{\partial w}|_{w_i}\right>}_{D_{i}}\\ w_{i+1}:=w_i + v_{i+1} \end{array}\]$\epsilon$은 learning rate, $i$는 interation index, $v$는 momentum variable, \(\left<{\frac{\partial L}{\partial w}|}_{w_i}\right>_{D_{i}}\) 는 $i$번째 배치 ${D_{i}}$에 대한 $\frac{\partial L}{\partial w_i}$의 평균값을 뜻한다.
각 층의 weight는 평균이 0이고 표준편차가 0.01인 정규분포를 이용해서 초기화했고, 두 번째, 네 번째, 다섯 번째 CL과 FCL은 bias를 1로 나머지는 0으로 초기화했다. 이는 ReLU에 양수값을 넣어서 초기 학습을 가속하기 위함이다.
모든 층에 동일한 learning rate를 사용했는데, 학습시키면서 조금씩 조절했다. 0.01로 시작해서 학습동안 validation error가 변하지 않을때마다 십분의 일로 줄였다. 전체 데이터셋을 90번 학습시켰다.
6. Results
상당히 큰 격차로 다른 모델보다 성능이 좋다.
6.1 Qualitative Evaluations
- Figure 3을 보면, Restricted connectivity의 결과, 각 GPU가 다른 특징들에 전문화 되었음을 볼 수 있다.
- Figure 4의 왼쪽을 보면, 모델이 예측한 결과들이 합당해 보인다. mite의 경우 중심을 벗어나도 인식할 수 있고, leopard의 경우 다른 예측 결과들이 고양이과들이다. chery의 경우 사진의 초점이 명확하지 않지만 개와 체리를 모두 예측했다.
- Figure 4의 오른쪽은 test image의 FCL에서의 feature vector와 가장 유사한 train image를 나열한 것이다. 이를 통해 feature vector의 Euclidean distance가 짧다면, 모델은 두 이미지가 유사하다고 판단한다는 것을 알 수 있다. 이미지의 각 픽셀에서 L2 distance는 가깝지 않다.
즉 feature vector를 가지고 비교하는것이 이미지가 가지는 의미를 비교하는 것이다. 이미지의 각 픽셀에 대한 L2 distance는 의미를 고려하지 못한다.
Leave a comment