본 글에서는 논문에서 등장한 공식이나 숫자 및 기록을 자세히 살피거나 모든 내용을 세세히 짚고 넘어가지는 않겠다. 주관적 요약과 해석을 통해 중요한 키워드를 뽑는 정도로 진행할 계획이다. 이후에 뽑은 키워드별로 추가 포스팅을 진행하며 좀 더 자세한 내용을 알아보려고 한다.

p.s. 본 글은 오타와 오역이 굉장히 많으니 사전에 양해를 구한다.(몇 번씩 다시 읽으며 고쳤으나 늘 새롭고 짜릿하다...)

원논문 보기
야매 번역본 보기


ImageNet Classification with Deep Convolutional Neural Networks


Abstract

  • ImageNet LSVRC-2010 데이터 활용해서 훈련을 진행했음
  • 훈련 속도 향상을 위해 효율적 GPU 구현 사용
  • fully-connected(이하 FC) layer에서 dropout 사용
  • ILSVRC-2012에서 해당 모델의 변종 제출, 2위와 큰 격차로 우승

1. Introduction

  • 기계 학습의 성능을 향상시키는 방법
    1) 더 큰 데이터셋 수집
    2) 더 강력한 모델 설계
    3) 더 나은 Overfitting 방지 기법 사용

  • Label-preserving transformations로 증강시키면 비교적 작은 데이터셋(수만 개의 이미지)으로도 간단한 인식 작업 가능

  • 하지만 현실의 객체는 상당한 가변성을 가지기에 더 큰 데이터셋이 필요


(논문 기준으로 문단마다 끊어서 수평선 삽입)

  • 수백만 개 이미지에서 수천 개의 객체를 학습하기 위해 학습 능력이 큰 모델이 필요
  • 보편적인 Feed-forward 신경망보다 CNN이 연결과 parameters가 훨씬 적으므로 훈련이 용이함
  • But best-case에서는 CNN의 성능이 아주 조금 더 나쁠 가능성이 있음

  • CNN의 매력적인 품질과 상대적 효율성에도 여전히 계산 비용이 큼
  • 고도로 최적화된 2D Convolution의 구현과 GPU 성능의 향상으로 훈련이 용이해짐
  • ImageNet과 같은 최신 데이터셋은 그런 모델을 학습시킬 충분한 라벨링 데이터 보유

  • 본 논문 내용을 바탕으로 ILSVRC-2010 및 ILSVRC-2012에서 보고된 것 중 최고의 결과 달성
  • 네트워크 성능 개선과 훈련 시간 단축 등 여러 기능을 포함하며, Section 3 에서 자세히 설명
  • Overfitting 방지를 위해 효과적 기법 사용, Section 4 에서 자세히 설명
  • 최종 네트워크는 5개의 Convolution(이하. CONV) layer와 3개의 FC layer 를 포함
  • 각 모델 parameters의 1% 이하를 포함하는 CONV layer 제거 시에 성능이 저하됨을 발견

  • 네트워크 크기 제한의 주요인
    1) GPU에서 사용 가능한 메모리 양
    2) 실험자가 기다릴 수 있는 훈련 시간
  • 더 빠른 GPU와 더 큰 데이터셋이 제공될수록 결과는 개선될 것



2. The Dataset

  • ImageNet의 하위 집합 데이터를 사용하는 ILSVRC(ImageNet Large-Scale Visual Rcognition Challenge)

  • ILSVRC-2010(유일하게 테스트셋 label 사용가능)에서 대부분의 실험 수행
  • ILSVRC-2012에서 본 모델을 제출
  • Section 6 에서 결과를 보고
  • ImageNet에서는 일반적으로 top-1과 top-5 두 가지 오류율을 보고함
  • top-5의 오류율: 모델에서 가장 가능성 높은 5개의 label 도출 시 올바르지 않은 경우(Section 6 [그림 4] 에서 직관적 확인 가능)

  • ImageNet은 가변 해상도 이미지로 구성
  • 본 시스템은 일정한 dimension의 입력이 필요하므로 256x256 해상도로 다운샘플링 수행



3. The Architecture

  • [그림 2] 에서 본 아키텍처의 요약을 확인 가능
  • 8개의 layer로 구성(5*CONV + 3*FC)
  • 아키텍처의 특징을 설명, 중요도 순으로 3.1~3.4 정렬

3.1 ReLU Nonlinearity

  • 이전에 보통 사용하던 뉴런의 출력 함수는 f(x)=tanh(x)f(x) = tanh(x) 또는 f(x)=(1+ex)1f(x) = (1+e^{-x})^{-1}
  • Gradient Descent(이하 GD)에서는 상술한 포화(saturaiting) 비선형성(nonlinearity) 함수가 비포화 비선형성보다 훨씬 느림
  • 이러한 비포화 비선형성을 지닌 함수를 ReLU(Rectified Linear Units)라고 부름
  • ReLU가 기존 포화 함수들보다 몇 배 빠름([그림 1]에서 확인 가능)
  • 전통적인 포화 비선형성을 사용했다면 본 논문의 거대한 neural networks(이하 NN)의 실험이 어려웠을 것

그림 1

[그림 1] ReLU(실선) vs tanh(점선)
ReLU가 6배 빠르게 25% 오류율에 도달


  • 기존에 neuron 모델 대한 제시는 overfitting 방지에 초점
  • 본 도입은 training-set의 fit시키는 가속능력에 초점

3.2 Training on Multiple GPUs

  • 120만개의 training examples가 사용 GPU 하나에서 훈련시키기 부적합하므로 두 개의 GPU에 분산시킴
  • 기본적으로 커널(또는 뉴런)의 절반을 각 GPU에 배치
  • GPU는 특정 계층에서만 통신(e.g., layer3 커널은 layer2의 모든 커널 맵에서 입력을 취함)
  • But, layer4의 커널은 동일 GPU의 layer3 커널 맵에서만 입력을 받음

  • 하나의 GPU 에서 훈련된 것과 비교해 top-1, top-5 오류율을 줄임

3.3 Local Response Normalization

  • ReLU 는 포화 상태 방지를 위해 입력 정규화가 필요하지 않음
  • 다음과 같은 지역 정규화가 일반화에 도움,
    bx,yi=ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yi)2)βb^i_{x,y} = a^i_{x,y} / (k+α\sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a^i_{x,y})^2)^β

  • 이 계획은 local contrast normlization scheme(Jarrett et al.) 과 유사, but mean activity를 빼지 않으므로 "brightness normalization"이라 표현
  • 이를 통해 top-1, top-5 의 오류율이 각각 1.4%, 1.2% 감소
  • 4-layer CNN 은 정규화 없이 13%, 정규화 후에 11%의 오류율 달성

3.4 Overlapping Pooling

  • CNN의 pooling layer는 동일한 kernel 맵에서 인접 neuron 그룹의 출력을 요약함
  • z*z 크기의 필터(=커널)를 s픽셀 간격(stride)으로 배치
  • 전통적인 방법은 그룹이 중복되지 않음(s=z) -> local pooling
  • s<z 를 설정하면 overlapping pooling
  • overlapping pooling 이 과적합에 좀 더 강함, 오류율 감소

3.5 Overall Architecture

  • 8개의 layer, 처음 5개는 CONV, 나머지 3개는 FC, 마지막 FC의 출력은 1000way softmax
  • Multinomial logistic regression objective의 최대화 == 예측 분포로 log-probability of the correct label의 training cases 전반에서 평균을 최대화

  • 2/4/5 번째 CONV layer는 동일 GPU에 있는 이전 계층 kernel 맵에만 연결([그림 2] 참조)
  • 3 번째 CONV layer 는 이전 계층 모든 kernel 맵에 연결
  • FC layer의 neuron은 이전 층의 모든 neuron과 연결
  • 1/2 번째 CONV layer는 response-normalization
  • 5 번째 CONV layer + response-normalization layer는 모두 max-pooling
  • 모든 layer는 활성함수로 ReLU 적용(마지막 layer 제외)
    그림 2

    [그림 2] CNN의 아키텍처에 대한 그림으로, 두 GPU 간의 책임에 대한 설명을 명시적으로 보여 준다. 한 GPU는 그림의 맨 위에 layer 부분을 실행하는 반면 다른 GPU는 맨 아래에 layer 부분을 실행한다. GPU는 특정 layer에서만 통신한다. 네트워크의 입력은 150,528차원이며, 네트워크의 나머지 층에 있는 neuron의 수는 253,440–186,624–64,896–64,896–43,264–4096–4096–1000으로 주어진다.


  • input(224 x 224 x 3)
  • 11x11x3(stride=4)의 kernel 96개로 필터링 및 response-normalization & max-pooling
  • 5x5x48 kernel 256개로 필터링 및 response-normalization & max-pooling -> 3x3x256 kernel 384개로 필터링
  • 3x3x192 kernel 384 개
  • 3x3x192 kernel 256개
  • fully-connected는 각각 4096개의 neuron을 가짐



4. Reducing Overfitting

  • 본 신경망은 6천만 개의 parameter를 가짐
  • 위의 전략만으로는 overfitting 없이 그렇게 많은 parameter들을 학습하기에는 불충분
  • overfitting에 대항하는 두 가지 주요 방법 서술

4.1 Data Augmentation

  • label-preserving transformations로 데이터세트를 인위적으로 확장하는 것이 가장 쉽고 일반적인 방법(ex. 숫자6을 뒤집었을 때 9가 아닌 6으로 label을 유지하는 형태)
  • 두 가지 방법의 데이터 증강 채택
  • 두 형태 모두 매우 적은 계산으로 원래 이미지에서 생성되므로 디스크에 저장할 필요없음
  • GPU가 이전 이미지 배치에 대해 training하는 동안 CPU의 파이썬 코드로 변환된 이미지 생성

  • 첫 번째 형태의 data augmentation은 이미지 translations와 horizontal reflections를 생성하는 것으로 구성
  • 5개의 224x224패치(4개의 코너 패치와 중앙 패치)와 horizontal reflections(모두 합쳐 10개)를 추출
  • 10개의 패치에 대해 softmax layer가 출력하는 predictions를 평균화함으로써 네트워크 prediction 출력

  • 두 번째 형태는 RGB 채널의 intensities를 변경
  • ImageNet training set 전체에서 RGB 픽셀 값의 집합에서 PCA를 수행
  • 자연 이미지의 중요한 속성(객체의 identity)은 조명의 강도와 색상의 변화에도 불변한다는 점에서 착안
    [p1,p2,p3][α1λ1,α2λ2,α2λ2]T[p_1,p_2,p_3][α_1λ_1,α_2λ_2,α_2λ_2]^T

4.2 Dropout

  • 서로 다른 모델들의 예측을 결합하는 것은 오류를 줄이는데 좋지만 대형 신경망에서는 비용이 너무 많이 듦
  • dropout 기법은 비용이 약 2배 정도이지만 효율적임
  • dropout되는 neuron은 forward-pass/back-propagation 모두 참여하지 않음
  • 따라서 매번 다른 아키텍처를 샘플링하지만 가중치를 모두 공유
  • 이는 한 뉴런이 다른 특정 뉴런의 존재에 의존할 수 없으므로 복잡한 상호적응을 방지

  • 처음 두 개의 fully-connected layer 에서 dropout 사용
  • dropout이 없으면 상당한 overfitting



5. Details of learning

  • batch size of 128 examples / momentum=0.9 / weight_decay=0.0005 로 SGD(Stochastic Gradient Descent) 수행
  • 작은 양의 weight_decay가 학습에 중요(모델의 훈련 오류를 감소시킴)

  • zero-mean Gaussian 분포(표준편차=0.01)에서 각 layer의 가중치를 초기화
  • 2/4/5 번째 convolution layer와 fully-connected hidden layers에서 뉴런 bias를 상수 1로 초기화함으로써 ReLU에 positive input 제공 및 학습 초기 단계 가속
  • 나머지 layer에서는 뉴런 bias를 상수 0으로 초기화

  • 모든 layer에서 동일한 learning rate 사용
  • validation error가 개선되지 않을 경우 learning rate를 10으로 나누었음
  • learning rate는 0.01로 초기화 되었고 종료 전에 세 번 감소함



6. Results

  • ILSVRC-2010 데이터셋에서 top-1(37.5%)/top-5(17.0%)의 테스트셋 오류율 달성(대회기록 47.1%/28.2%, 종전기록 45.7%/25.7%)

6.1 Qualitative Evaluations

  • 섹션 3.5에서 설명된 방법으로 두 GPU가 각각 전문화(색에 구애받지 않음 & 색에 따라 다름)
    그림4
  • 8개의 테스트 이미지에 대한 상위 5개 예측을 통해 네트워크 평가(그림4 왼쪽패널)
  • test image와 Euclidean distance가 가까운 training image를 보여줌(그림4 오른쪽패널)



7 Discussion

  • 해당 결과로 순수 지도학습을 이용해 deep CNN 에서 좋은 결과를 달성할 수 있음을 보임
  • 단일 convolution layer 제거 시 성능 저하가 나타나므로 depth가 매우 중요

  • 실험 단순화를 위해 unsupervised pre-training을 사용하지 않음



논문 주요 키워드

  • ReLU Nonlinearity(포스팅 완료) - 해당 게시글 보러 가기
  • Tragining on Multiple GPUs
  • Local Response Normalization
  • Overlapping Pooling
  • Data Augmentation
  • Dropout



정리할 키워드

  • Convolution Neural Network(CNN)
  • Label-preserving Transformations
  • Fully-connected Layer
  • Local Response Normalization
  • Multinomial Logistic Regression
  • Principal Component Analysis
  • Dropout
  • SGD(Stochastic Gradient Descent)
  • Gaussian 분포
  • Euclidean distance
  • unsupervised pre-training

0개의 댓글