1. Introduction
최근 물체 인식 기술은 머신 러닝을 필수적으로 사용한다. 이들은 성능을 높이기 위해 많은 데이터를 모으거나, 좋은 모델을 사용하거나, 오버피팅을 방지하기 위한 기술을 사용한다. 그러나 최근까지 라벨된 이미지는 수만개 정도로 적었다. 간단한 인식 문제는 이 정도 크기의 데이터셋과 데이터 증폭으로 처리 가능했다. 예를들어 MNIST 숫자 구분 문제는 사람 수준의 에러율에 도달했다. 그러나 실제 환경에서 물체들은 훨씬 다양한 모습을 보이기 때문에, 이들을 인식하기 위해서는 더 많은 트레이닝 세트가 필요하다. 최근에 들어서야 수백만 장의 라벨된 이미지를 포함하는 데이터셋들이 등장했다. 그들중 ImageNet 데이터셋은 22000개 카테고리의 1500만 장의 라벨된 이미지를 제공한다.
이런 데이터셋으로부터 모델이 학습하기 위해서는 모델의 학습 수용력(learning capacity)이 높아야한다. 그러나, 물체 인식 문제는 복잡도가 높기 때문에, 많은 데이터들을 사용하더라도 해결하기 어렵다. 우리가 가지고 있지 않은 데이터까지 처리하기 위해서는 우리의 모델은 많은 사전 지식을 알고 있어야 한다. 합성곱 신경망(CNN)은 다양한 모델 중 하나인데, 그들의 수용력은 그들의 폭과 깊이에 따라 달라진다. 또한 그들은 자연의 이미지들을 처리하는데 있어서 강력하고 정확하다. 표준이라고 할 수 있는 전연결 신경망(FNN)과 비교했을 때, 합성곱 신경망은 비슷한 성능을 유지하면서 더 적은 연결과 파라미터로 더 빨리 학습할 수 있다.
그들의 성능과 효율성은 뛰어나지만, 고해상도 이미지에 대해서는 엄창나게 높은 계산량을 요구한다. 다행히도, 2D 합성곱을 효율적으로 처리하는 최근의 GPU는 큰 규모의 합성곱 신경망을 학습시킬 수 있다. 또한 ImageNet과 같은 대형 데이터셋은 오버피팅을 방지할 정도로 많은 수의 라벨된 이미지를 제공한다.
이 논문의 기여는 다음과 같다.
- 가장 큰 규모의 모델을 학습했고, 이로써 SOTA급 성능을 보였다.
- 2D 합성곱을 위한 최적화된 GPU를 구현했고, 이를 공개적으로 사용할 수 있게 했다.
- 신경망은 새롭고 특이한 특징(feature)들을 포함하는데, 이는 모델의 성능을 높이고 학습 속도를 높인다.
- 오버피팅을 방지하기 위해 다양한 기법들을 사용했다.
- 신경망의 구조에서 합성곱층이나 전연결층이 하나라도 빠질 경우 성능에 악영향을 준다.
- 신경망의 크기는 GPU의 메모리 용량과 학습 시간을 고려하여 제한되었다.
2. The Dataset
ImageNet 데이터셋은 22000개 카테고리에 속하는 1500만개 이상의 라벨된 고해상도 이미지를 제공한다. 이미지들은 웹 상에서 수집되었고, 아마존의 crowd-sourcing 툴을 이용해 수동으로 라벨링했다. 2010년부터 ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)이 매년 열렸다. ILSVRC는 1000개 카테고리에서 100만개의 사진을 사용했다. 전체적으로는 학습 이미지 120만개, 검증 이미지 5만개, 테스트 이미지 15만개가 있다.
이미지넷에서는 두 가지 에러율을 기록하는데, 이미지를 입력했을 때 모델이 정답으로 예측한 라벨이 오답인 비율(top-1)과 가능성이 가장 높다고 예측한 5가지 라벨이 모두 오답인 비율(top-5)가 사용된다. 이미지넷 데이터셋은 다양한 해상도의 이미지를 포함하는데, 우리의 모델은 고정된 크기의 이미지를 입력해야 한다. 따라서 우리는 이미지를 (256,256) 크기로 축소시켰다. 직사각형 모양은 이미지는 우선 짧은 변의 길이를 256로 맞춘 다음, 이미지의 가운데 부분을 (256,256) 크기로 잘랐다. 이미지에서 트레이닝 셋의 mean activity를 빼주는 것 외에는 이미지 전처리를 사용하지 않았다.
3. The Architecture
우리의 신경망은 레이어 8개(합성곱층 5개와 전연결층 3개)로 이루어져있다. 우리 신경망 구조의 새로운 특징들을 아래에 서술하였다. 중요한 순서대로 위에서부터 배치하였다.
3.1. ReLU Nonlinearity
일반적으로 뉴런의 출력은 시그모이드 함수나 tanh함수로 구한다. 학습하는 시간의 관점에서 기울기 감소를 봤을 때, 이러한 포화하는 비선형 함수(saturating linearities)는 비포화 비선형 함수(non-saturating linearity)인 ReLU보다 훨씬 느리다. ReLU를 사용한 깊은 합성곱 신경망은 tanh 함수를 사용했을 떄보다 더 빨리 학습한다. (Figure 1) 이 결과를 봤을 때, 전통적인 포화 비선형 함수는 큰 규모의 신경망을 학습시키지 못할수도 있다.
3.2. Training on Multiple GPUs
GTX580 GPU의 메모리는 3GB밖에 되지 않아 네트워크의 최대 사이즈가 제한된다. 우리는 네트워크를 둘로 나누고 GPU두 개를 사용했다. 현재 GPU들은 서버의 메모리를 통하지 않고 서로의 메모리에서 데이터를 읽어오거나 기록할 수 있다. 우리가 사용한 병렬화 구조에서, 각각의 GPU는 전체 뉴런의 반을 가지는데, 여기서 트릭이 하나 있다. 레이어3의 커널들은 레이어 2의 커널맵을 인풋으로 사용하지만, 레이어4의 커널들은 레이어3의 커널맵 중 같은 GPU에 있는 것들만 사용한다. 연결 패턴을 선택하는 것은 cross-validation의 문제지만, 이것은 계산량의 적합한 비율까지 교류량을 정확하게 조절할 수 있게 해준다.
3.3 Local Response Normalization
ReLU는 포화를 방지하기 위한 입력 정규화를 필요로 하지 않는다. ReLU의 인풋이 양수이기만 하면, 학습은 계속 진행된다. 그러나, 우리는 다음의 국소 정규화 구조가 일반화를 돕는 것을 알아냈다. (식)
3.4 Overlapping Pooling
합성곱 신경망의 풀링 레이어는 같은 커널맵 안에 있는 이웃한 뉴런들의 출력을 축약한다. 전통적으로, 이웃한 결과값들을 축약할때는 겹침 없는 adjacent pooling을 사용했다. 우리는 stride=2, size=3인 overlapping 풀링을 사용해 성능을 높였다. 그리고 overlapping 풀링을 사용할 경우 오버피팅이 방지되는 효과가 있다는것을 발견했다.
3.5 Overall Architecture
네트워크는 8개의 레이어를 포함한다. 앞의 5개 레이어는 합성곱층이고, 나머지 3개의 레이어는 전연결층이다. 마지막 전연결층의 결과는 softmax 함수에 입력되어 1000개 라벨에 대한 결과 분포가 출력된다. 우리의 네트워크는 mutinomial logistic regression objective를 최대화하고, 이는 예측 분포 하에서 정답 라벨 log-probability의 학습 케이스들의 평균을 최대화하는 것과 같다. (?)
2, 4, 5번째 합성곱층은 이전의 레이어와 연결될때, 같은 GPU 상에 있는 커널맵에만 연결된다. 세번째 합성곱층의 커널들은 두번째 합성곱층의 모든 커널들과 연결된다. 전연결층의 뉴런들은 이전 레이어의 뉴런들과 모두 연결된다. Response normalization 층은 1, 2번째 합성곱층의 뒤에 붙는다. Max-pooing 층은 response normalization 층과 5번째 합성곱층 뒤에 붙는다. ReLU는 모든 합성곱층과 전연결층에 붙는다.
4. Reducing Overfitting
우리의 신경망은 6000만개의 파라미터를 사용한다. 비록 1000개 카테고리가 각 트레이닝 샘플에 대해 이미지에서 라벨로 매핑하는데 10비트의 제한을 뒀지만, 이렇게 많은 파라미터를 학습시킬 때 오버피팅을 방지하기엔 불충분하다. 오버피팅을 해소하기 위한 두 가지 핵심 방법을 아래에 서술한다.
4.1 Data Augmentation
이미지 데이터에서 오버피팅을 방지하기 가장 쉽고 일반적인 방법은 label-preserving transformations를 이용하여 데이터셋을 인위적으로 키우는 것이다. 우리는 두 종류의 데이터 증폭 방식을 이용했다. 이 두 방법 모두 원본 이미지에서 아주 약간의 계산으로 이미지를 재생산하는 것이기 때문에, 변환된 이미지들을 디스크에 저장할 필요가 없다. GPU가 한 배치에 대해 학습을 진행하는 동안, CPU는 다음 배치에 대해 변환 이미지를 생성한다. 이런 데이터 증폭 방식은 효과적이고, GPU의 연산 능력에 영향을 주거나 받지 않는다.
첫 번째 방식의 데이터 증폭은 [256, 256] 이미지에서 [224, 224] 크기를 랜덤하게 자르고 좌우반전시킨다. 이 과정은 우리 이미지셋의 크기를 2048배 증폭시켰다. 이 과정이 없었다면 우리는 오버피팅 때문에 작은 네트워크를 써야 했을 것이다. 테스트 과정에서는, 네트워크는 5가지 [224, 224] 패치를 추출해 좌우 반전시켜 총 10개의 패치로 예측하고, 각각의 패치에서 구해진 1000개 라벨에 대한 가능성들을 평균냈다.
두 번째 방식은 이미지에서 RGB 채널의 세기를 변화시킨다. 특히, 우리는 ImageNet 트레이닝셋 이미지들의 RGB 값으로 주성분 분석(PCA)을 실행했다. 각각의 트레이닝 이미지에 구해진 주성분들을 더했고, 이런 과정이 이미지의 원래 성질을 잃게 하지는 않았다.
4.2 Dropout
다양한 모델의 예측을 합치는 것은 테스트 오차를 줄이는데 효과가 좋았지만, 학습에 수 일이 걸리기 때문에 큰 규모의 네트워크에 대해서는 비용이 너무 컸다. 그러나 학습을 두 배 정도만 지연시키는 매우 효과적인 모델 조합이 있었다. 최근에 소개된 "드랍아웃(drop-out)" 기술은 0.5의 확률로 각 뉴런의 출력을 0으로 만들었다. 이 뉴런들은 순방향 진행에 관여하지 않았고, 역방향 진행(back propagation)에서도 참여하지 않았다. 따라서 이미지가 입력될 때마다, 신경망은 다른 구조로 나타났지만, 이들은 여전히 가중치를 공유하고 있었다. 이 기술로 인해 모든 뉴런들은 다른 특정한 뉴런에 의존할 수 없었기 때문에, 뉴런들의 co-adaptation을 줄일 수 있었다. 이들은 새로운 조합의 뉴런들과의 연결에도 유용해 더 견고한 특징들을 학습할 수 있었다. 테스트할 때 우리는 모든 뉴런을 사용했지만, 기하급수적으로 많은 드롭아웃 신경망에서 생산한 예측 분포(predictive distributions)의 기하 평균을 합리적으로 근사한 0.5를 모든 뉴런의 출력에 곱했다.
우리는 처음 두 전연결층에 드랍아웃을 사용했고, 드랍아웃 없이는 오버피팅을 보였다. 드랍아웃을 적용했을 땐 거의 두 배의 학습 주기를 필요로 했다.
5. Details of learning
우리 모델을 학습할 때 SGD(stochastic gradient descent)를 사용했고, 배치 크기는 128, 모멘텀은 0.9, 가중치 감소는 0.0005로 설정했다. 우리는 이런 작은 크기의 가중치 감소가 학습에 중요하다는 것을 알아냈다. 다른 말로, 가중치 감소는 단순히 정규화를 위한 것이 아니라, 모델의 학습 에러를 감소시킨다.
우리는 평균과 표준편차가 0, 0.01인 가우스 분포로 모든 레이어의 가중치를 초기화했다. 또한 전연결층과 2,4,5번째 레이어의 바이어스를 1로 초기화 했다. 이런 초기화는 학습 초기에 양수 입력을 ReLU로 공급하기 때문에 학습 속도를 가속화한다. 우리는 나머지 레이어들의 바이어스는 0으로 남겨뒀다.
우리는 모든 레이어의 학습률(learning rate)을 동일하게 설정했고, 검증 에러가 나아지지 않기 시작하면 학습률을 10배씩 낮췄다. 학습률은 처음에는 0.01이었고 종료 전까지 세 번 감소시켰다. 우리는 120만 장 이미지를 90 에폭 정도 학습했고, NVIDIA GTX 580 3GB GPU를 사용해서 5~6일 정도 걸렸다.
6. Results
6.1 Qualitative Evaluations
왼쪽 figure 3에서, 위의 3줄은 GPU1의 첫 번째 레이어, 아래의 3줄은 GPU2의 첫 번째 레이어에서 학습된 커널들이다. GPU1의 커널들은 무색이고, GPU2의 커널들은 색이 다양하다. 이런 특색화는 학습할 때마다 일어나고, 특정 가중치 초기화에 무관하게 일어난다.
아래쪽 figure 4의 오른쪽 사진들에서, 첫 번째 열은 테스트셋에 포함된 이미지들이고, 그 오른쪽에 6장씩 배치한 이미지들은 트레이닝셋에 포함된 이미지들이다. 트레이닝셋 이미지들 중에서 첫 번째 열의 이미지와 유사성이 높다고 판단된 이미지들을 가져온 것이다. 어떤 두 이미지의 feature activation vector를 전연결층에서 계산했을 때, 이들의 Euclidean separation이 작다면, 신경망은 이 둘의 유사성이 높다고 판단한다. (이들은 테스트 이미지와 L2 오차가 작지 않다.)
7. Discussion
- 매우 크고 깊은 신경망을 이용해 좋은 결과를 얻었다.
- 하나의 합성곱층만 빠져도 성능이 안 좋아진다는 점은 중요하다.
- 계산 능력이 더 좋았다면 더 좋은 결과를 얻을 수 있었다.
- 비디오에 대해서도 크고 깊은 신경망을 만들 것이다.
'Deep Learning > CNN Models' 카테고리의 다른 글
Resnet (2015) (0) | 2019.11.05 |
---|---|
GoogLeNet (2014) (0) | 2019.10.28 |
Checklist (0) | 2019.10.26 |