[논문 요약] ImageNet Classification with Deep Convolutional Neural Networks

기남·2022년 9월 4일
post-thumbnail

🎈 Introduction

✨Object Detection의 최근 동향

  • 머신 러닝 방법들을 거의 필수적으로 사용한다
  • 성능을 향상시키기 위해 더 큰 데이터셋을 모은다
  • 오버피팅을 방지하기 위해 더 나은 기술을 사용한다

간단한 Task들은 작은 데이터셋으로도 충분히 해결되었지만 현실의 데이터들은 상당한 가변성을 지니기 때문에 그들을 인식하려면 훨씬 큰 데이터셋을 이용해야 한다.

그런데 대규모의 데이터를 학습시키려면 그만큼 큰 학습 수용량을 갖는 모델이 필요하다.

Feed-Forward Network에 비해 CNN연결량과 파라미터의 개수가 훨씬 적고 훈련시키기 쉬운 동시에 성능도 크게 떨어지지 않는다.

하지만 CNN의 우수함과 지역적인 구조의 효율성에도 불구하고 여전히 대규모의 고해상도 이미지들에 적용하기에는 너무나도 비용이 많이 든다.

운 좋게도 최근의 GPU들은 큰 CNN들을 학습하기에 충분할 정도로 강력하고, ImageNet의 최신 데이터셋들은 심각한 오버피팅이 발생하지 않고 모델을 훈련시킬 수 있을만큼 충분한 데이터를 보유한다.

본 논문이 기여한 바는 다음과 같다.

  • 가장 큰 CNN 중 하나를 훈련시켜 ILSVRC-2010\textbf{ILSVRC-2010}ILSVRC-2012\textbf{ILSVRC-2012}에서 쓰인 ImageNet 데이터셋을 다루었고 SOTA를 달성했다
  • 2차원 CNN고도로 최적화된 GPU 구조를 만들었고 이를 배포했다

연구진이 구축한 네트워크에는 훈련 시간을 줄여주고 성능을 향상 시켜주는 몇가지 기술이 적용되어 있다.

최종 네트워크는 5개의 Convolution 층, 3개의 Fully-connected 층을 포함하며, 어떤 Convolution을 제거하더라도 심각한 성능 저하를 일으켰다.

이 결과는 더 빠른 GPU와 더 큰 데이터셋을 이용할수록 향상된다.

🎨 Dataset

🎐ImageNet

  • 22,000가지의 범주에 속하는 1500만 개의 라벨링된 고해상도의 이미지를 보유한 데이터셋

🎪ILSVRC

  • ImageNet의 일부분을 사용하는 시각 인지 경연

ILSVRC-2010은 이 경연들 중 유일하게 테스트셋을 이용 가능한 버전이라 연구진은 대부분의 실험을 이것으로 진행했다.

ImageNet은 다양한 해상도의 이미지를 보유하는 반면 연구진의 시스템은 일정한 해상도의 인풋을 요구하기 때문에 이미지들을 모두 256x256 해상도로 가공했다.

이때, 짧은 쪽을 먼저 256 픽셀로 만들고 중간 부분의 256x256 패치를 떼어냈다.

🔨 Architecture

이 항목에서는 연구진이 네트워크 구조에 이용한 몇가지 새롭고 일반적이지 않은 특징들을 설명한다.

🧶 ReLU Nonlinearity

일반적으로 뉴런의 입력값 x에 대한 출력값은 tanhtanh함수나 sigmoidsigmoid함수를 사용한다.

하지만 경사 하강법을 이용한 훈련에 있어서 이러한 saturating 비선형 함수들은 non-saturating 비선형 함수 max(0,x)max(0, x)보다 훨씬 느리다.

이에 연구진은 ReLUReLU 함수를 비선형 함수로 채택했다.

ReLUReLU를 이용한 모델이 tanhtanh를 이용한 모델보다 25% 오류율에 6배 빠르게 접근했다.

🧵 Training on Multiple GPUs

단일 GTX 580 GPU는 3GB 메모리를 갖고, 이는 그것에 훈련될 수 있는 네트워크의 최대 크기를 제한한다.

하나의 GPU만으로 학습시키기에는 너무 큰 네트워크를 학습할 때 120만 개의 훈련 데이터가 충분함을 드러냈다.

따라서 연구진은 네트워크를 두 개의 GPU에 나누어 할당했다.

현존하는 GPU들은 교차 GPU 병렬화를 효과적으로 구현할 수 있다.

연구진이 구현한 병렬 구조는 노드 절반을 각각의 GPU에 할당하는데, 두 GPU들이 오직 특정 층에서만 의사소통한다는 트릭이 있다.

🎑 Local Response Normalization

ReLUReLU는 saturating 현상을 막기 위해 입력값을 정규화시키지 않아도 된다는 매력적인 특징이 있다.

ReLUReLU에 양수로 입력되는 훈련 예제가 조금이라도 있으면 해당 노드에서는 학습이 성공적으로 일어난다.

하지만 연구진은 여전히 다음과 같은 local normalization이 학습에 도움을 준다는 것을 찾아냈다.

bx,yi=ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yj)2)βb^i_{x,y}=a^i_{x,y}/(k+\alpha \sum^{min(N-1,i+n/2)}_{j=max(0,i-n/2)}(a^j_{x,y})^2)^\beta

연구진은 특정 층들에서 위와 같은 비선형화 이후에 ReLUReLU를 적용했다.

🎭 Overlapping Pooling

CNN에 있는 Pooling층은 같은 kernel에 있는 인접한 뉴런들의 출력값들을 요약한다.

일반적인 풀링 연산에서 이 인접값들은 서로 겹치지 않았다.

그런데 연구진은 2×22\times2 커널로 22픽셀씩 옮기면서 겹치지 않게 풀링을 진행하는 것보다 3×33\times3 커널로 22픽셀씩 옮기면서 겹치게 풀링을 진행할 때 top1top-1, top5top-5 오류가 0.40.4%, 0.30.3% 향상되는 것을 알아냈다.

또한 이 방법이 오버피팅을 억제하는 효과도 있다는 것을 발견했다.

🛶 Overall Architecture

  • 총 8개의 층으로 이루어져 있다 (5 Convolutional layer + 3 FC layer)
  • 마지막 FC layer의 출력은 1000가지의 클래스 라벨을 분류하는 softmax 층으로 들어간다
  • 2, 4, 5번째 컨볼루션 층들은 같은 GPU의 바로 이전 층과만 연결되어 있다
  • 3번째 컨볼루션 층의 커널들은 2번째 층의 모든 커널들과 연결되어 있다
  • FC층들의 뉴런들은 이전 층의 모든 뉴런들에 연결되어 있다
  • ReLU 함수는 모든 컨볼루션 층, FC층의 출력에 적용되었다

🥽 Reducing Overfitting

본 논문이 제시한 네트워크 구조는 6천만개의 파라미터를 가진다.

이렇게 너무 많은 파라미터는 상당한 오버피팅을 피하기 어렵다.

아래는 연구진이 오버피팅에 대항하기 위해 사용한 두가지 주요 방법이다.

⚾ Data Augmentation

가장 쉽고도 일반적인 방법은 label을 보존한채로 인공적으로 데이터셋을 늘리는 것이다.

연구진은 다음 두 가지의 데이터 증강법을 사용했다.

  • 256x256 이미지에서 랜덤하게 224x224 패치와 그것의 좌우반전을 뽑아낸다
  • 훈련 데이터셋의 RGB 픽셀값들에 대해 PCA를 실시해 찾은 principal components를 가우시안 분포에서 뽑은 랜덤 변수와 고윳값을 곱한 것에 비례하게 각 이미지에 더한다

이 방법은 top-1 오류율을 1% 줄여주었다.

🥎 Dropout

다양한 모델의 예측값들을 이용하는 것은 테스트 오류를 줄이기 위해 굉장히 좋은 방법인데, 여러 깊은 신경망들을 훈련시키는 것은 너무나도 비용이 많이 든다.

그런데 훈련 시간을 약 2배 정도만 증가시키고 성능을 높이는 효율적인 방법이 있는데, 바로 Dropout이라고 불리는 기술이다.

Dropout0.50.5의 확률로 각 은닉 뉴런의 출력을 00으로 만든다.

이렇게 00으로 설정된 뉴런들은 순전파와 역전파에 전혀 기여하지 않는다.

입력값이 들어올 때마다 신경망이 매번 다른 구조로 변하게 되지만 그들은 모두 같은 가중치를 공유한다.

이후에 테스트 때 모든 뉴런의 출력값들을 0.50.5배해주면 다양한 신경망들의 예측값들을 평균낸 것과 같은 효과를 얻을 수 있다.

연구진은 첫 2개의 FC층에서 dropout을 사용했다.

Dropout을 사용하지 않았을 때 연구진은 심각한 오버피팅을 겪었다.

🎲 Details of learning

연구진은 128128batchsizebatch\,\, size, 0.90.9momentummomentum, 0.00050.0005의 가중치 감소와 함께 SGDSGD를 사용해 모델을 학습시켰다.

연구진은 이 작은 가중치 감소가 모델 학습에 중요했다는 것을 찾아냈다.

다시 말해, 가중치 감소는 단순히 정규화의 역할뿐만 아니라 모델의 훈련 오류를 줄여주었다.

가중치 w에 대한 업데이트 수식은 다음과 같다.

vi+1:=0.9vi0.0005ϵwiϵLwwiDiv_{i+1}\,:=0.9\,v_i-0.0005\,\epsilon\,w_i-\epsilon\,\Big \langle{{\partial L\over\partial w}|_{w_i}}\Big \rangle_{D_i}

wi+1:=wi+vi+1w_{i+1}:=w_i+v_{i+1}

연구진은 각 층의 가중치들을 평균이 00이고 표준편차가 0.010.01인 가우시안 분포로 초기화했다.

또한 2,4,52, 4, 5번째 컨볼루션 층과 모든 FC 층의 bias들을 11로 초기화했다.

이 초기화 기법은 ReLU에 양수의 입력값을 넣어줌으로써 초기 학습을 가속시켰다.

나머지 뉴런들의 bias는 00으로 초기화했다.

연구진은 모든 층에 동일한 학습률을 적용했고, validation 오류가 증가할때마다 학습률을 1010으로 나누었다.

학습률은 처음에 0.010.01로 초기화했고 종료때까지 세번 줄어들었다.

🎏Results

ILSVRC-2010

ILSVRC-2010 당시 가장 좋은 성능을 보인 것은 66개 sparse coding 모델들의 예측을 평균낸 것으로, Top1Top-1 오류율이 47.147.1%,, Top5Top-5 오류율이 28.228.2%였다.

이후에는 SIFTSIFTFisherVectorsFisher\,\, Vectors를 이용한 모델이 Top1Top-1 오류율 45.745.7%,, Top5Top-5 오류율 25.725.7%로 이를 뛰어넘었다.

본 논문의 네트워크는 Top1Top-1 오류율 37.537.5%,, Top5Top-5 오류율 17.017.0%로 이 둘을 능가하는 성능을 보인다.

ILSVRC-2012

본 논문에서 제시한 CNNCNNTop5Top-5 오류율 18.218.2%를 달성했다.

CNNCNN 55개의 예측들을 평균낸 방법은 16.416.4%의 오류율을 보였다.

CNNCNN의 마지막 풀링 층에 66개의 컨볼루션 층을 추가로 연결해 ImageNet Fall 2011을 이용해 학습한 뒤 ILSVRC-2012에 fine-tuning한 모델은 16.616.6%의 오류율을 보였으며 77개의 모델들의 예측값들을 평균낸 것은 15.315.3%의 오류율을 보였다.

🧩 Qualitative Evaluations

첫번째 컨볼루션 층의 96개 커널들을 시각화한 것으로, 위 4848개의 커널들은 GPU 1에서 학습되었고 아래 4848개의 커널들은 GPU 2에서 학습되었다.

두 GPU들이 독립적으로 학습한 결과 GPU 1의 커널들은 색깔을 무시한 채 패턴들을 학습했고, GPU 2의 커널들은 색깔에 기반한 학습을 시행했다.

이러한 식의 특화는 매 학습마다 발생했으며 랜덤 가중치 초기화와 관련되지 않았다.

위의 표는 88개의 이미지들에 대해 네트워크가 예측한 상위 55개 항목들을 나타낸 것이다.

대표적인 예로 표범을 보았을 때, 상위 5개 항목들이 모두 고양이과 동물인 것을 보면, 네트워크가 예측한 항목들이 모두 합리적임을 알 수 있다.

위의 표는 55개의 이미지들에 대해 네트워크가 가장 비슷하다고 예측한 66개의 이미지들을 옆으로 나열한 것이다.

네트워크가 비슷하다고 예측한 이미지들을 픽셀 단위에서 보았을 때, 대표 이미지와 L2L2 거리가 멀리 있음을 알 수 있다.

예를 들어, 강아지와 코끼리 사진들은 서로 다른 자세를 취하고 있음에도 비슷하다고 예측했다.

따라서 모델이 픽셀 단위가 아니라 이미지 자체를 해석했다고 볼 수 있다.

🏓 Discussion

본 논문의 결과는 순수한 지도학습만을 이용해서 기존의 기록들을 뛰어넘을 수 있는 굉장히 크고 깊은 CNN을 만들 수 있다는 것을 보여준다.

단 하나의 컨볼루션 층을 제거하더라도 네트워크의 성능이 감소한다는 것은 주목할 만하다.

그렇기 때문에 연구진의 결과를 달성하는 것에 있어 깊이는 정말 중요하다.

실험을 간소화하기 위해 연구진은 도움이 될 것이라고 생각했음에도 불구하고 어떠한 비지도 사전학습을 사용하지 않았다.

궁극적으로 연구진은 동영상에 굉장히 크고 깊은 컨볼루션 네트워크를 사용해 시간에 따라 변하는 구조를 학습한다면 이미지에서 손실되었거나 잘 보이지 않는 구조에 대한 정보를 얻을 수 있으리라 기대한다.

profile
AI 공부하는 대학생

0개의 댓글