[Paper Review] ImageNet Classification with Deep Convolutional Neural Networks | 2012, NIPS.

이형준·2024년 12월 26일

Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems 25 (2012).
https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html

Abstract

Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton 세 명의 토론토 대학 연구팀은 2010년 ImageNet LSVRC-2010 대회의 1.2m개의 고해상도 이미지 데이터를 활용해 top-1 오류율 37.5%, top-5 오류율 17.0%로 매우 우수한 CNN 모델을 만들었습니다. 이후 해당 모델의 변형을 2012년 ILSVRC-2012 대회에 참가시켰으며 top-5 오류율 15.3%를 달성해 2등(26.2%) 대비 매우 우수한 성과를 냈습니다.

모델은 6,000만개의 파라미터와 65만개의 뉴런, 5개의 컨볼루션 레이어와 3개의 Fully connected Layer, 마지막으로 1,000개의 출력을 위한 softmax 레이어로 이루어져있습니다.
또한, 과적합을 줄이기 위해 드롭아웃(drop out)이라는 새로운 정규화 기법을 도입했고 이 방법이 매우 효과적이라는 것을 증명하기도 하였습니다.

이 논문의 주요 기여는 대규모 고해상도 이미지 데이터셋에 대해 CNN을 효과적으로(비용과 과적합 측면에서) 학습시키고, 이를 공개하였다는 점입니다. 네트워크의 성능 개선은 3장 Architecture에서, 과적합 방지는 4장 Reducing overfitting에서 설명합니다. 대회에서 2등 대비 거의 절반의 오류율을 달성하고 CNN의 학습 방식을 정립한 주요 연구로, 현재 구글 스콜라 기준 약 13만회 인용되었으며, 해당 분야에서 큰 영향을 미친 매우 중요한 논문입니다. 연구자의 이름을 딴 모델인 AlexNet으로도 유명합니다.


1. Introduction

객체 인식에 대한 현재 접근법은 모두 머신러닝을 필수로 활용합니다. 단순한 인식 작업은 작은 데이터셋으로도 모두 가능한데, 예를 들어 MNIST 숫자 인식의 최고 오류율(0.3% 미만)은 인간 성능에 근접합니다.

하지만 현실적인 환경의 객체는 변동성이 크기 때문에 훨씬 더 큰 데이터셋을 사용해야합니다. 대규모 데이터로는 수십만개의 완전세분화된 이미지인 LabelMe와 15m개를 넘는 라벨링된 22,000개의 카테고리로 이루어진 고해상도 이미지를 포함한 ImageNet이 있습니다.

대규모 데이터셋을 학습하기 위해서는 큰 학습 용량(Learning capacity)를 가진 모델이 필요합니다. 하지만 객체 인식 작업은 매우 복잡하기 때문에 사전 지식이 풍부한 모델을 사용해야되는데 이러한 모델 중 하나가 바로 합성곱신경망, CNN입니다.

CNN의 경우 feedfoward 신경망에 비해 연결개수과 매개변수가 매우 적어 훈련이 쉽고 이론적으로 약간의 성능 하락만을 가져옵니다. 하지만, 아키텍처는 효율적일지라도 대규모 고해상도 이미지에 적용하기에는 여전히 비용측면에서 문제가 발생했습니다. 이 논문에서는 해당 사항을 GPU 가속을 통해 해결하였으며, 학습 시간은 GTX 580 3gb GPU를 활용해 5~6일정도 걸렸습니다. 이는 더 좋은 GPU와 컴퓨팅 환경을 지원한다면 학습 시간을 크게 단축시킬 수 있음을 시사합니다.


2. The Dataset

사용된 데이터셋은 1,5000만장 이상의 고해상도 이미지와 약 22,000개의 카테고리로 이루어져있는 ImageNet입니다. Amazon에서 웹을 통해 수집하였으며, 인간 레이블러가 라벨링을 수행했습니다. 이후 매년 ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)라는 대회가 열리는데, 해당 대회에서는 모든 데이터셋을 사용하지 않고 약 1,000개의 카테고리에 각각 1,000개정도의 이미지로 구성된 subset을 활용합니다. ILSVRC-2010은 Test data와 Label이 모두 공개된 버전이므로 대부분의 실험이 해당 버전에서 수행되었습니다.

이미지의 크기는 가변적이지만, CNN 시스템에서는 고정된 입력 크기가 필요했습니다. 따라서 이미지를 256*256 크기로 다운샘플링 해주었습니다. 이외에는 별도의 전처리를 수행하지 않았으므로 학습은 Raw데이터의 RGB값으로 수행되었습니다.


3. The Architecture

Overall Architecture

Reprinted Figure.2

네트워크는 각각 가중치를 가진 8개의 레이어로 구성되어있습니다. 처음 5개는 Convolution Layer이고, 나머지 3개는 Fully connected Layer입니다. 마지막 레이어는 1,000개의 클래스에 대한 분포를 생성하는 1,000-way softmax 레이어입니다. 정규화의 경우 1,2번째 convolution layer 이후에, max-pooling layer는 정규화 단계 이후와 5번째 convolution layer 이후에 위치합니다. ReLU의 경우 모든 레이어에 적용됩니다.

3, 4, 5번 convolution Layer의 경우 특징적으로 풀링이나 정규화 레이어 없이 서로 연결되어있습니다. 이러한 레이어들의 뉴런 개수, 커널 사이즈, 필터 사이즈, stride 등은 아래 document에 상세히 기술되어있습니다.

https://code.google.com/archive/p/cuda-convnet/

ReLu

일반적으로 신경망 모델에서 활성화 함수로 사용하는 것은 주로 tanh, sigmoid지만 이러한 포화성 비선형성(Saturating Nonlinearity)함수는 비포화성 비선형성 함수에 비해 훨씬 느립니다. 따라서 해당 연구에서는 ReLU라 이름붙여진 f(x) = max(0,x)를 사용합니다.

Reprinted Figure.1

ReLU는 tanh를 사용하는 동일한 네트워크 대비 몇 배는 빠릅니다. figure.1은 동일한 training error비율에 도달하기까지 걸리는 epoch를 동시에 그래프에 표기한 결과입니다. tanh는 점선, ReLU의 경우 실선으로 표기되어있으며 ReLU가 tanh대비 약 25%정도 빠르게 학습한 것을 확인할 수 있습니다. 이는 대규모 신경망 네트워크를 학습시킬 때 전통적인 방법에 비해 비용 문제를 완화시켜줄 수 있음을 시사합니다.

Local Response Normalization

일반적으로 ReLU는 양수값만 입력되더라도 뉴런에서 학습이 진행됩니다. 그러나 더 나은 성능을 위해 아래와같은 지역 정규화 방식을 사용하여 일반화 성능을 향상시킬 수 있습니다.

ReLU를 통해 계산한 값 a(x,y)에 대해 레이어에서 인접한 n개의 커널의 합을 구하여 정규화된 값 b(x,y)를 얻을 수 있습니다. 여기서 N은 레이어의 전체 커널 개수이며, 커널 맵의 순서는 임의적이고 학습 이전에 결정됩니다.
하이퍼파라미터는 k, alpha, n, beta로 4개가 존재하며 연구에서는 다음과 같이 하이퍼파라미터를 설정해주었습니다.

이러한 정규화가 top-1 및 top-5 오류율을 각각 1.4%, 1.2% 감소시켰으며 CIFAR-10 데이터셋에서 효과를 검증한 결과 정규화 없이는 13%, 정규화 시 11%로 감소하였음을 확인했습니다.

Overlapping Pooling

전통적으로, CNN의 pooling 유닛들은 서로 겹치지 않습니다. s 픽셀 간격으로 배치된 풀링 유닛 그리드가 z*z 영역을 요약할 때, s=z라면 서로 겹치지 않는 전통적인 local pooling 방식이 될 것입니다.

하지만 s<z로 설정해준다면 풀링 유닛끼리 서로 겹치는 중첩 풀링 방식이 됩니다. 해당 연구에서는 s=2, z=3으로 설정해주었으며 비중첩 방식(s=2, z=2. 출력의 차원이 동일함)에 비해 top-1 오류율과 top-5 오류율이 각각 0.4%, 0.3% 감소하였습니다.

결과적으로 중첩 풀링이 과적합을 방지하는데 어느정도 도움이 된 것을 확인할 수 있습니다.


4. Reducing Overfitting

Data Augmentation

이미지 데이터에서 과적합을 줄이는 가장 쉽고 일반적인 방법은 데이터 증강일 것입니다. 이 때, 데이터 증강은 레이블을 보존하는 동시에 기존의 이미지를 변환하여 수행됩니다. 이러한 이미지 증강은 CPU에서 수행되며, CPU가 이미지를 생성하는 동안 GPU는 이전 배치의 이미지로 훈련을 진행하므로 사실상 추가적인 계산 비용이 없습니다.

연구에서는 두 가지 데이터 증강 방식을 활용하였는데, 첫 번째는 이미지의 이동과 수평 반사입니다. 이미지의 일부를 자른 패치를 추출하고, 이에 대한 수평 반사 이미지를 생성합니다. 데이터셋의 크기는 2048배 커지지만, 데이터 간의 상관관계가 높아져 과적합을 방지하는데 효과적입니다.
두 번째 증강 방식은 train set에서 RGB를 조절하는 것입니다. RGB 픽셀 값에 대해 PCA를 수행하는데, 다음과 같은 수식으로 표현됩니다.

p, lamda의 경우 RGB 픽셀값에 대한 3*3 covariance matrix에서 추출한 고유 벡터와 고유값이며 alpha는 표준편차 0.1을 가지는 가우시안에서 뽑은 무작위 변수입니다. 이를 R,G,B 값에 각각 더해주어 색상이 변화된 이미지를 생성합니다.
이 방식은 객체의 정체성을 조명의 강도나 색상과 무관하게 학습시킬 수 있으며, top-1 오류율을 1% 이상 줄여주었습니다.

Dropout

여러 모델들의 예측을 결합하는 것이 오류율을 줄이는데 효과적일 수 있지만, 이는 대규모 데이터를 학습하기 위한 커다란 신경망 모델에서는 비용이 너무 많이 드는 방법입니다.

하지만 두 배 정도의 비용만을 추가하여 모델 결합을 매우 효율적으로 할 수 있는 방법이 있는데, 바로 dropout입니다. dropout이란 각 hidden layer에 있는 뉴런들의 출력을 0.5의 확률로 0으로 만들어주어 더이상 학습(=순전파와 역전파)에 참여하지도, 기여하지도 않습니다. 따라서 입력이 들어올 때마다 서로 다른 신경망 아키텍처를 생성하고, 모든 아키텍처가 가중치를 공유하게 됩니다.
이러한 방식은 뉴런 간의 공적응(co-adaptation)을 줄여주고, 상호 의존성을 줄여주기에 강건한(robust) 학습을 하도록 강제합니다.

3장에서 설명한 모델 아키텍처에서, 첫 번째와 두 번째 fully connected layer에서 dropout을 사용합니다. dropout을 사용하지 않으면 과적합을 심하게 겪게 되지만, 사용하게되면 과적합을 줄이는 대신 수렴에 필요한 반복 횟수가 2배정도 늘어납니다.


5. Details of Learning

모델의 훈련은 SGD를 통해 이루어졌으며, 배치 크기는 128, 모멘텀은 0.9, 가중치 감쇠(weight decay)는 0.0005였습니다. 작은 양의 가중치 감쇠가 여기서 매우 중요한 역할을 하는데, 단순한 정규화 기법이 아닌 모델의 훈련 오류를 줄여주게 됩니다.

위와 같은 식으로 가중치 w를 업데이트 해주게되며 각 층의 가중치의 경우 평균이 0, 표준편차가 0.01인 가우시안 분포에서 초기화되었습니다.
모든 층에 동일한 학습률을 적용하였으며, 학습 중에 수동으로 조정하였는데 기준은 'validation error가 더 이상 개선되지 않으면 학습률을 10으로 나누어주는 것'이였습니다.
120만 장의 이미지를 90번 학습하였고, GTX 580 3gb GPU에서 5~6일이 걸렸습니다.


6. Result

Reprinted Table.1

가장 먼저 수행한 ILSVRC-2010 test set에 대한 결과는 table.1에 요약되어있습니다. CNN은 이전에 가장 좋은 성적을 거둔 모델들([2], [24])의 top-1, top-5 error보다 비약적으로 개선된 결과를 얻었습니다.

Reprinted Table.2

이후 ILSVRC-2012 대회에 모델을 제출하였으며 그 결과는 table.2에 나타나있습니다. test set label이 공개되지 않아 모든 모델에 대한 결과는 나타낼 수 없었습니다.

먼저 5개의 유사한 CNN의 예측을 평균화하면 16.4%의 오류율을 얻을 수 있었습니다. 하지만 2개의 CNN을 평균화하여 pre-training을 시키고, 이후 5개의 CNN과 함께 예측을 평균화하여 오류율을 15.3%까지 감소시킬 수 있었습니다.

마지막으로 Fall 2009 버전의 ImageNet(10,184개의 카테고리와 890m개의 이미지)에 대한 오류율을 보고합니다. train/test의 비율은 5:5입니다. 이 데이터셋에서 top-1, top-5 오류율은 각각 67.4%와 40.9%였으며 이는 figure 2의 네트워크에서 convolution layer를 하나 추가한 결과입니다.

Discussion

해당 연구는 Large Deep CNN이 순수 지도 학습만을 사용하여 기록적인 성과를 달성할 수 있음을 시사합니다. 주목해야할 점은, 하나의 합성곱 레이어가 제거되면 네트워크의 성능이 저하된다는 점입니다. 예를 들어, 중간의 레이어를 하나 제거하면 top-1 성능에서 약 2%의 손실이 발생합니다.

네트워크를 더 크게 만들고, 오래 학습시킬수록 성능이 개선되었지만, 여전히 인간의 시각 시스템인 추론-시각 경로(infero-temporal pathway)와의 차이가 큽니다.

끝으로, 연구자들은 이보다 큰 CNN을 비디오 시퀀스에 적용하고자 합니다.

0개의 댓글