반응형

Deep learning 관련 논문을 볼 때 top-1 와 top-5 error 라는 용어들이 나온다.

top-1와 top-5 error는 이미지 분류성능을 평가하기 위한 것 들이다.

 

Top-1 accuracy is the conventional accuracy, which means that the model answer (the one with the highest probability) must be exactly the expected answer.

Top-5 accuracy means that any of your model that gives 5 highest probability answers that must match the expected answer.

 

A picture of a cat is shown, and these are the outputs of your neural network:

예:

  • Tiger: 0.4
  • Dog: 0.3
  • Cat: 0.1
  • Lynx: 0.09
  • Lion: 0.08
  • Bird: 0.02
  • Bear: 0.01

 

In the above-mentioned probabilities:

Using top-1 accuracy, you will count this output as wrong, because it predicted a tiger.

Using top-5 accuracy, you count this output as correct, because the cat is among the top-5 guesses.

 

top-5 accuracy : 이미지 50개를 분류하는데 , 앞의 5개의 class 를 최대 확률 의 분류를  찾은 다음 , 정확한 label이 

앞의 5개에 있는지 확인한다. 있으면 분류 성공했다.

 

--------------------------------------------------------------------------------------------------------------------------------

 

예를 들어 :

정답 Ground Truth : cat 

예측한 결과 :  prediction : 0.4 Tiger

예:

  • Tiger: 0.4
  • Dog: 0.3
  • Cat: 0.1
  • Lynx: 0.09
  • Lion: 0.08
  • Bird: 0.02
  • Bear: 0.01

top-1 은 False 

top-5 은 Tiger, Dog, Cat, Lynx, Lion 중에서 Cat이 있어서  True이다. 

 

 

 

<참고 자료 >:

https://intellipaat.com/community/6715/evaluation-calculate-top-n-accuracy-top-1-and-top-5

반응형

'Deep learning > 개념' 카테고리의 다른 글

Optimizer  (0) 2021.03.27
Activation Function  (0) 2021.03.27
DBN  (0) 2021.03.27
알고리즘 개념  (0) 2021.03.21
선형회귀분석 ,군집화 ,다층 계층 신경망 ,병렬처리 ,부록 A: 한국어판 : 순환 신경망과 LSTM  (0) 2020.08.18
반응형

논문 : ImageNet Classification with Deep Convolutional Neural Networks

 

AlexNet2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회의 우승을 차지한 컨볼루션 신경망(CNN) 구조

CNN 구조 

2개의 GPU로 병렬연산을 수행하기 위해서 병렬적인 구조로 설계되었다는 점이 가장 큰 변화

 

Abstract

ImageNet LSVRC-2010 1000 분류 

1.2 million high-resolution 

  top-1 error rate top-5 error rate
classify the 1.2 million high-resolution images in the ImageNet LSVRC-2010 contest into the 1000 different classes. 37.5% 17.0%
ILSVRC-2012 competition   achieved a winning top-5 test error rate of 15.3%, compared to 26.2% achieved by the second-best entry.

5개의 convolutional layers , 몇개의 layer는 convolutional layers뒤에 max-pooling layers이 있다. 

3개의 fully-connected layers

마지막에는 1000-way softmax

 

훈련을 빠르게 하기 위하여

1. 우리는 non-saturating neurons 을 사용하였다.

  • non-saturating neurons 의 activation : relu, leakyrelu 
  • saturating neurons 의 activation : sigmoid [0,1] , tanh [-1,1]

2. a very efficient GPU implementation of the convolution operation

 

overfitting 줄이기 위하여 :  “dropout” 

 

1 Introduction

object recognition에 대한 현재의 접근법은 machine learning 방법을 필수적으로 사용한다. 

성능을  높이기 위해 :

우리는 대량의 데이터를 수집하고 , 더 강력한 모델을 학습하고 , 과적합을 방지하기 위해 더 나은 기술을 사용한다.

최근 까지는 라벨링된 이미지의 데이터세트는 수만 개의 이미지 (e.g., NORB [16], Caltech-101/256 [8, 9], and CIFAR-10/100 [12] ) 으로 비교적 작다.

간단한 recognition tasks은 특히 라벨 보존 변환으로 증강된 경우 이 크기의 데이터 세트로 상당히 잘 해결할 수 있다. 예를 들어 MNIST 자릿수 인식 과제(<0.3%)의 현재 최고 오류율은 인간 성과에 접근한다[4]. 

label-preserving transformations: 라벨을 보전하면서 증강 하는 방법 

그러나 실제 환경에서 objects는 상당한 가변성을 나타내므로 이를 인식하는 방법을 배우려면 훨씬 더 큰 훈련 세트를 사용해야 한다. 

그리고 실제로 작은 이미지 데이터 세트의 단점은 널리 인식되었다(예: Pinto 등). [21]) 

새로운 대규모 데이터 세트에는 수십만 개의 완전 세그먼트 이미지로 구성된 LabelMe[23]와 22,000개 이상의 범주에서 1,500만 개 이상의 레이블이 지정된 고해상도 이미지로 구성된 ImageNet[6]이 포함됩니다.

 

수백만개의 이미지에서 수천개의 objects를 학습할려면 우리는 학습용량이 큰 모델이 필요한다.

그러나 객체 인식 작업의 엄청난 복잡성은 ImageNet만큼 큰 데이터셋으로도 이 문제를 지정할 수 없음을 의미하므로, 우리의 모델은 우리가 가지고 있지 않은 모든 데이터를 보상하기 위한 사전 지식도 많이 가지고 있어야 한다. 

 =>CNNs(CNN)은 그러한 종류의 모델 중 하나이다. [16, 11, 13, 18, 15, 22, 26]. 

용량은 깊이와 너비를 변경하여 제어할 수 있으며, 이미지의 특성(다시말해 , stationarity of statistics 및 픽셀 의존성의 위치)에 대해 강력하고 대부분 정확한 가정을 한다.

 

stationarity of statistics

  • 이미지의 한 부분에 대한 통계가 어떤 다른 부분들과 동일하다는 가정
  • 즉, 이미지에서 한 특징이 위치에 상관없이 다수 존재할 수 있으며, 결국 어떤 위치에서 학습한 특징 파라미터를 이용해 다른 위치에서도 동일한 특징을 추출할 수 있음을 의미

따라서 similarly-sized layers를 가진  standard feedforward neural networks 에 비해 CNN은 연결과 parameters가  훨씬 적어 훈련하기가 더 쉬우며

이론적으로 최상의 성능은 약간 더 나쁠 수 있다.

 

CNN의 멋진 풀질과 지역 아키텍처의 상대적인 효율성을 불구하고 , 고해상도 이미지에 대규모로 적용하는 데는 여전히 엄청나게 많은 비용이 들었다. 다행이도 2D convolution의 highly-optimized된 구현과 짝을 이룬 현재 GPU는 interestingly-large CNNs의 훈련을 가능하게 할 만큼 강력하게 ImageNet 과 같은 최신 datasets에는 심각한 과적합이 없이 그러한 모델을 훈련시킬 수 있는 충분한 라벨링된 예가 포함되어 있다.

=> highly-optimized GPU implementation of 2D convolution

 

본 논문의 구체적인 기여는 다음과 같다. : 

우리는 ILSVRC-2010 및 ILSVRC-2012[2] 경기에 사용된 ImageNet의 하위 집합에 대해 현재까지 가장 큰 컨볼루션 신경망 중 하나를 훈련시켰고 이러한 데이터 세트에 대해 보고된 지금까지 최고의 결과를 달성했다. 우리는 2D convolution과 훈련 convolution neural networks 에 내제된 다른 모든 작업의 highly-optimized GPU구현을 작성했다. 

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

 

아래의 section 소개 

Section 3 : 우리의 networks에는 성능을 개선하고 교육 시간을 단축하는 새롭고 특이한 기능이 많이 포함되어 있다.

Section 4 : 네트워크 크기는 120만 개의 레이블링된 교육 예제로도 심각한 overfitting 문제를 일으켰기 때문에 overfitting 을 방지하기 위한 몇 가지 효과적인 기술을 사용했다. 

우리의 최종 network:

five convolutional  5개의 convolutional

three fully-connected layers 3개의 fully-connected layers

그리고 이 깊이는 중요한 것처럼 보인다.

우리는 (각각 모델의 parameter의 1% 이하를 포함하는) 컨볼루션 레이어를 제거하면 성능이 저하된다는 것을 발견했다.

 

결국 network의 크기는 주로 현재 GPU에서 사용할 수 있는 메모리의 양과 우리가 허용하고자 하는 훈련 시간의 양에 의해 제한된다. 우리의 network는 두 개의 GTX 580 3GB GPU로 훈련하는 데 5~6일이 걸린다. 우리의 모든 실험은 GPU와 더 큰 데이터셋을 사용할 수 있기를 기다리는 것만으로도 결과를 개선할 수 있음을 제안한다.

 

2 The Dataset

ImageNet은 약 22,000 categories 에 속하는 15 million 개 이상의 레이블이 지정된 고해상도 이미지 의 dataset 이다. 

그 이미지들은 웹에서 수집되었고 Amazon’s Mechanical Turk crowd-sourcing tool 를 사용하여  인간 라벨업자들에 의해 라벨이 붙여졌다. 

2010년 부터 Pascal Visual Object Challenge의 일부분으로 ImageNet Large Scale Visual Recognition Challenge 라고 불리는  (ILSVRC) 연간의 대회가 열리고 있다. 

ILSVRC는 각 1000개 범주에 약 1000개의 이미지가 있는 ImageNet의 하위 집합을 사용한다.

training images : 1.2 million 120만장의 학습 이미지

validation images : 50,000 5만장의 검증 이미지

testing images : 150,000 15만장의 테스트 이미지

 

ILSVRC-2010은 test set labels를 사용할 수 있는 ILSVRC의 유일한 버전이기 때문에 대부분의 실험을 수행한 버전이다. 

ILSVRC-2012대회에서는 모델을 시작하기 때문에 

Section 6 : test set lables을 사용할 수 없는 데이터 세트의 이 버전에도 대한 결과를 보고한다. 

ImageNet에서는 다음과 같은 두 가지 오류율을 보고하는 것이 관례이다.

top-1 and top-5

top-5 : 여기서 상위 5개 오류율은 올바른 라벨이 모델에서 가장 가능성이 높은 것으로 간주되는 5개 라벨에 포함되지 않는 테스트 이미지의 비율이다.

 

ImageNet은 variable-resolution images로 되어 있으며 , 시스템에서는  일정한 input dimensionality이 필요하다.

그래서 , 우리는 256 × 256의 고정 해상도로 다운샘플링했다.

직사각형 이미지가 주어지면 먼저 짧은 면이 256이 되도록 이미지의 크기를 조정한 다음 결과 이미지에서 중앙 256×256 패치를 잘라냈다. => 짧은 면이 256 -> 중앙 패치

각 픽셀에서 훈련 세트에 대한 평균 활동을 빼는 것 외에는 다른 방식으로 이미지를 사전 처리하지 않았다.

그래서 우리는 픽셀의 (중심) raw RGB 값에 대해 네트워크를 훈련시켰다.

 

3 The Architecture

네트워크 아키텍처는 그림 2에 요약되어 있다.

여기에는 8개의 학습된 레이어(convolutional 5개 및 fully-connected 3개)가 포함되어 있다.

아래에서는 네트워크 아키텍처의 새로운 특징 또는 특이한 특징 중 일부를 설명한다.

Section 3.1-3.4: 중요도에 대한 우리의 추정에 따라 가장 중요한 것은 첫번째로 

 

3.1 ReLU Nonlinearity

 

입력 x의 함수로 뉴런의 출력 f를 모델화하는 표준 방법은

f(x) = tanh(x) 또는 f(x) = (1 + e^(-x) ) ^(-1)이다. 

tanh , sigmoid

경사하강이 있는 훈련 시간의 측면에서, 이러한 saturating 비선형성은 non-saturating 비선형성

f(x) = max(0,x)보다 훨씬 느리다.

f(x) = max(0,x) => relu

Nair와 Hinton[20]에 이어, 우리는 이러한 비선형성을 가진 뉴런을 Rectified Linear Units(ReLU)라고 부른다.

ReLU를 사용하는 Deep convolutional neural networks는 tanh units를 사용하는 것 보다 몇배 더 빨리 훈련한다.

Figure 1

그림 1에서 알 수 있듯이 , 이는 특정 four-layer convolutional network에 대한 CIFAR-10 데이터 세트에서 25% training error 에 도달하는 데 필요한 반복 횟수를 보여준다. 이 그래프는 우리가 전통적인 saturating neuron models을 사용했다면 이 연구를 위해 그렇게 큰 신경망을 실험할 수 없었을 것이라는 것을 보여준다.

Figure 1

four-layer convolutional neural network

ReLUs (solid line)

tanh neurons (dashed line)

 

 

 

CNN에서  traditional neuron models의 대안을 고려하는 것은 우리가 처음이 아니다.예를 들어, Jarrett etal.[11] nonlinearity f(x) = |tanh(x)|가 Caltech-101 data set의 local average pooling에 이어 normalization 유형과 특히 잘 작동한다는 것을 입증한다.하지마 , 이 dataset의 주요 관심사는 overfitting을 방지하는 것이므로 이들이 관찰하는 효과는 ReLU를 사용할 때 보고하는 training set를 맞추는 가속화된 능력과는 다르다. 빠른 학습은 대규모 데이터 세트에서 훈련된 대규모 모델의 성능에 큰 영향을 미친다.

 

3.2 Training on Multiple GPUs 

single GTX 580 GPU 에는 3GB의 메모리만 있어 훈련할 수 있는 네트워크의 최대 크기를 제한한다. 120만개의 training examples는 하나의 GPU에 맞추기엔 너무 큰 네트워크를 훈련시키기에 충분하다.따라서 우리는 두 개의 GPU에 net을 분산시킨다. 현재 GPU는 host machine memory를 거치지 않고도 서로의 메모리에서 직접 읽고 쓸 수 있기 때문에 GPU 병렬화에 특히 적합하다. 우리가 사용하는 parallelization scheme 는 기본적으로 kernel(또는 neuron)의 절반을 각 GPU에 additional trick을 하나 더 추가한다: GPU는 특정 계층에서만 통신한다. 이것은, 예를 들어, layer 3의 kernel들이 layer 2의모든 kernel maps으로 부터 입력 받는 것을 의미 한다. 그러나, layer 4의 kernel은 동일한 GPU 에 존재하는 layer 3의 kernel maps으로 부터  입력을 받는다. pattern of connectivity을 선택하는 것은 cross-validation의 문제이지만, 이것은 우리가 그것이 계산량의 허용 가능한 부분이 될 때까지 통신량을 정밀하게 조정할 수 있게 해준다.

그 결과 architecture 는 Cire¸ san et al. [5]등이 채택한 columns 이 독립적이지 않다는 점을 제외하고 (Figure 2 참조) “columnar” CNN과 다소 유사하다. 이 방식은 하나의 GPU로 훈련된 각 convolutional layer의 kernels 수가 절반인 네트와 비교하여 top-1위와 top-5위의 error rates을 각각 1.7%와 1.2% 감소시킨다. 2-GPU 네트는 1-GPU 네트 2보다 훈련하는 데 시간이 약간 적게 걸린다. 

3.3 Local Response Normalization

ReLU는 saturating되지 않도록 input normalizatoin가 필요하지 않은 바람직한 특성을 가지고 있다. 만약 적어도 일부 훈련 예제가 ReLU에 긍정적인 입력을 제공한다면, 학습은 그 뉴런에서 일어날 것이다. 하지만 우리는 여전히 다음과 같은 local normalization scheme가 generalization에 도움이 된다는 것을 발견한다. a^i_{x,y}의 위치(x,y)에서 kernel i를 적용한 다음 ReLU nonlinearity을 적용하여 계산된 뉴런의 활동 을 나타내는 response-normalized activity  b^i_{x,y}는 총합이 동일한 공간 위치에서 n개의 “adjacent” kernel maps 데대해 실행되는 식에 의해 주어지며, N은 계층의 총 커널 수이다.물론 kernel map 의 순서는 임의적이며 교육을 시작하기 전에 결정된다. 이러한 종류의 response normalization는 real neurons에서 발견되는 유형에서 영감을 받은 측면 억제의 형태를 구현하여 다른 커널을 사용하여 계산된 뉴런 출력물 사이의 큰 활동을 위한 경쟁을 유발한다. k,n,α 및 β 상수는 다음 과같은 validation set 를 사용하여 값이 결정되는  hypperparameter이다.

우리는 k = 2, n = 5, α = 10 −4 , and β = 0.75 사용한다.

a는 ouput [batch,height,width,channel]

N channel 수 

a,n/2,k,α,β =>   input,depth_radius,bias,alpha,beta

n/2,k,α,β => 사용자가 정의한다. 

∑ channel 방향으로 

한 점으로 전 n/2와 뒤 n/2个 의 제곱 합  n이 5일 경우에 5/2 => 3으로 해서 3,4,5,6,7

 

2015년 very Deep Convolutional Networks for Large-Scale Image Recognition 논문에서 LRN은 별로 효과가 없다고 하였다. 

 

Section 3.5 에서 certain layers 에 ReLU nonlinearity을 적용한 후 이 normalization를 적용하였다.

 

Jarrett et al. [11]은 local contrast normalization  계획과 어느 정도 유사하다.  mean activity을 빼지 않기 때문에 “brightness normalization”라고 더 정확하게 말 할 수 있다. Response normalization는 top-1와 top-5 error rates 을 각각 1.4%, 1.2% 감소시킨다. 또한 CIFAR-10 데이터 세트에 대한 이 계획의 효과를 검증했다. four-layer CNN은 정규화 없이 13%, normalization  에서는 11%의 테스트 오류율을 달성했다.

3.4 Overlapping Pooling

Pooling layers in CNNs는 동일한 kernel map에 인접한 nueurons의 그룹의 출력을 요약한다. 전통적으로 adjacent pooling units 로 요약된 주변 지역은 겹치지 않는다. (e.g., [17, 11, 4]). 보다 정확하게 말하면, pooling layer는 각각 pooling units의 위리를 중심으로 z × z 크기의 이웃을 요약한 s pixel 간격의 pooling unit의 grid로 구성된다고 생각할 수 있다. 우리는 만약 s = z 설정하면, CNNs에 일반적으로 사용되는 전통적인 local pooling을 얻는다. 만약 우리는 s < z 설정하면, overlapping pooling을 발생한다. 이것이 s=2및 z =3과 함께 network 전체에서 사용하는 기능이다. 

3x3 영역을 stride 2로

이 방식은 equivalent dimensions의 출력을 생성하는 중복되지 않는 체계 s = 2,z = 2와 비교하여 top-1와 top-5의 error rates을 각각  0.4%, 0.3% 감소시킨다. 우리는 일반적으로 훈련 중에 overlapping pooling이 있는 모델이 overfit하기가 약간 더 어렵다는 것을 관찰한다.

3.5 Overall Architecture

이제 우리는 CNN의 전반적인 architecture에 대해서 소계할 준비가 되였다. Figure 2에서 묘사한 것처럼 net 에는 가중치가 있는 8개의 layers 이 포함되어 있다. 마지막 fully-connected layer의 출력은 1000 class labels 에 대한 distribution 를 생성하는 1000-way softmax에 공급된다. 우리의 네트워크는  multinomial logistic regression objective를 최적화하는데 , 이는 예측 분포에서  

정확한 label 의  log-probability의 훈련 사례에서 평균을 최대화하는 것과 같다.

second, fourth, and fifth convolutional layers의 kernel 은 동일한 GPU에 상주하는 previous layer의 kernel maps 에만 연결된다. (Figure 2 참조) third convolutional layer 의 kernel은 second layer의 모든 kernel map에 연결된다. fully-connected layers 의 neurons 은 previous layer의 모든 neurons 과 연결되어 있다. Response-normalization layers은  first and second convolutional layers을 따른다. Section 3.4에서 설명한 종류의 Max-pooling layers는 response-normalization layers와 fifth convolutional layer를 모두 따른다. ReLU non-linearity는 모든 convolutional 와 fully-connected layer 출력에 적용된다. 

first convolutional layer 는 크기가 11×11×3 인 96개의 커널이 있는 224×224×3 입력 이미지를 4 pixels의 stride 으로 filters 한다 ( 이것은 kernel map에서 neighboring neurons의 the receptive field사이의 거리이다. ) 

second convolutional layer 는  first convolutional layer의 (response-normalized and pooled) 출력을 받아 크기 5 × 5 × 48 kernel 256개로 filters 한다. 

세 번째, 네 번째 및 다섯 번째 convolutional layers  어떠한 개입적 pooling 또는 normalization layers 없이 서로 연결된다.  

third convolutional layer은 3 × 3 × 256 크기의 kernels  384 개를 두 번째 convolutional layer의 (normalized, pooled) 출력에 연결한다. 

fourth convolutional layer은 3 × 3 × 192 크기의 384  kernels 를 가지고 있고 , 

fifth convolutional layer 은 3 × 3 × 192 인 256개의 kernels 을 가지고 있다.

fully-connected layers는 각각 4096 개의 neurons 이 있다.

4 Reducing Overfitting

우리의 신경망 architecture은 60만개의 파라미터를 가지고 있다. ILSVRC의 1000 calsses 은 각 training example 가 이미지에서 라벨로의 매핑에 10bits 의 제약을 가하도록 하지만, 이는 상당한 overfitting 없이 그렇게 많은 매개변수를 학습하기에는 불충분한 것으로 판명되었다. 아래에서는 과적합과 싸우는 두 가지 주요 방법을 설명한다.

 

4.1 Data Augmentation

image data에 대한 overfitting을 줄이는 가장 쉽고 일반적인 방법은 label-preserving transformations (예: [25, 4, 5]) 사용하여 데이터 세트를 artificially으로 확장하는 것이다. 우리는 두가지 다른 형태의 데이터 증강을 사용하며, 두가지 모두 변환된 이미지를 거의 계산하지 않고 원본 이미지에서 생성할 수 있으므로 변환된 이미지를 디스크에 저장할 필요가 없다.구현에서 GPU가 이전 배치 이미지에서 훈련하는 동안 변환된 이미지는 CPU의 Python code 로 생성된다. 따라서 이

러한 데이터 확대 계획은 사실상 계산상 자유롭다. 

data augmentation의 첫번째 형태는 image translations와 horizontal reflections으로 구성된다. 우리는 256×256이미지에서 random 224×224 patches (and their horizontal reflections) 를 추출하고 추출된 patches 에 대해 네트워크를 훈련시킴으로써 이를 수행한다. 이는 2048배까지 훈련의 크기를 증가시킨다. 물론 결과적인 훈련 예는 상호의존성이 매우 높다. 이 계획이 없었드라면 , 우리의 network는 상당한 overfitting으로 어려움을 겪었고 , 이로 인해 우리는 훨씬 더 작은 네트워크를 사용해야만 했을 것이다. test를 할 경우에 , 네트워크는 5개의 patches (the four corner patches and the center patch )horizontal reflections (hence ten patches in all) 를 추출하고 10개의 패치에서 네트워크의 소프트맥스 계층에 의해 예측된 결과를 평균화하여 예측한다.

https://learnopencv.com/understanding-alexnet/

random crop : 256*256 -> 224*224 

한장의 이미지에서 ((256-224)^2)*2=2048 의 다른 이미지를  수 있다. 

data augmentation의 두 번째 형태는 훈련 이미지에서 RGB 채널의 강도를 변경하는 것으로 구성된다.  특히 우리는 ImageNet training set 전체에서 RGB 픽셀 값 집합에 대해 PCA를 수행한다. 각 훈련 이미지에 우리는 해당 고유값에 비례하는 크기에 평균 0과 표준 편차가 0.1인 가우스에서 추출한 랜덤 변수를 곱하여 발견된 주성분의 배수를 추가한다. 따라서 각 RGB 영상 픽셀 I_{xy} = [I ^ R _{xy } ,I ^G _{xy} ,I^B_{xy} ] ^T 우리는 다음 수량을 더한다.

여기서 p_i 와 λ_i는 각각 RGB 픽셀 값의 3 × 3 covariance matrix 의 i번째 고유벡터이자 고유값이며, α_i는 앞에서 언급한 랜덤 변수이다. 각 α_i는 해당 이미지가 다시 훈련에 사용될 때까지 특정 훈련 이미지의 모든 픽셀에 대해 한 번만 그려지고, 다시 그려진다. 이 계획은 자연 이미지의 중요한 특성, 즉 물체 정체성이 조명의 강도와 색상의 변화에 불변한다는 것을 대략적으로 포착한다. 이 방식을 사용하면 top-1개 오류율이 1% 이상 감소합니다.

 

4.2 Dropout

많은 다른 모델을 결합하여 예측을 하는 것은 test errors [1, 3]를 줄이는 매우 성공적인 방법이지만 대형 신경 네트워크는 훈련을 하는데 시간이 오래 걸려서 너무 많은 비용이 드는 것으로 보인다. 그러나 매우 효율적인 모델 조합 버전은 훈련 중에 약 2배 정도만 비용이 든다. 최근에 도입된 "dropout"[10]이라고 불리는 기술은 각 hidden neuron 의 출력을 0.5 확률로 0으로 설정하는 것으로 구성된다.  이런 식으로 "dropped out" 뉴런은 전진 패스에 기여하지 않으며 역전파에도 참여하지 않는다. 입력이 주어질 때마다, 신경망은 다른 구조를 샘플링하지만, 이 모든 구조는 가중치를 공유한다. 이 기술은 뉴런이 특정한 다른 뉴런의 존재에 의존할 수 없기 때문에 뉴런의 복잡한 공동 적응을 감소시킨다. 따라서 다른 뉴런의 많은 다른 랜덤 하위 집합과 함께 유용한 보다 강력한 특징을 학습해야 한다. test 할 경우에는 , 우리는 모든 뉴런을 사용하지만 출력에 0.5를 곱한다. 이는 exponentially으로 많은 드롭아웃 네트워크에 의해 생성된 예측 분포의 기하학적 평균을 얻는 합리적인 근사치이다.

그림 2의 처음 두 개의 완전히 연결된 계층에서 dropout를 사용한다. dropout없이 우리의 네트워크는 상당한 과적합을 보인다. dropout는 수렴에 반복 횟수를 대략 두 배 필요한다. 

5 Details of learning

stochastic gradient descent -> sgd

batch size : 128

momentum : 0.9 

weight decay : 0.0005

우리는 이 작은 weight decay 가 모델을 학습할때 매우 중요한 것을 알게 되었다. 다시 말해서, 여기서 weight decay는 단지 regularizer 가 아니라 모델의 훈련 오류를 감소시킨다. weight w에 대한 업데이트 규칙은 옆의 수식과  같다.  

i : iteration index

v : momentum variable

ε : learning rate

w_i에서 평가된 w에 대한  derivative of the objective의 i번째 배치 D_i에 대한 평균 

우리는 standard deviation 0.01 인 zero-mean Gaussian 

distribution에서 각 layer의 가 중치를 초기화했다. 우리는 neuron biases을 second, fourth,  fifth convolutional layers와 fully-connected hidden layers에서 상수 1로 초기화했다. 이 초기화는 ReLU에 긍정적인 입력을 제공하여 학습의 초기 단계를 가속화한다. 우리는  나머지 층에서 뉴런 편향을 상수가 0으로 초기화했다.

all layers에 동일한 learning rate를 사용하였고 training 동안에 수동으로 조정하였다.  우리가 따르는 heuristic 은 검증 오류율이 현재 학습 속도에 따라 더 이상 향상되지 않을 때 학습률을 10으로 나누는 것이었다. learning rate은 0.01로 초기화하되었으며 종료전에는 세 번 감소되었다. 우리는 120만 장의 이미지 training set 를  두 개의 NVIDIA GTX 580 3GB GPU에서 5일에서 6일이 걸린 통해 약 90 사이클 동안 네트워크를 학습했다.

6 Results

ILSVRC-2010에 대한 결과는 Table 1에 요약되어 있다. 우리의 네트워크는 37.5%, 17.0% 의 top-1와 top-5의 test set error rates을 달성하였다. ILSVRC-2010 competition동안 달성한 최고 실적은 서로 다

른 특징[2]에 대해 훈련된 6개의 sparse-coding models에서 생성된 예측을 평균화 한 접근법으로 47.1%, 28.2%이였으며, 그 이후에 가장 잘 발표된 결과는  두가지 유형의  of densely-sampled features Fisher Vectors (FVs) classifiers의 예측을 평균한 접급으로  45.7%와 25.7% 이다.

우리는 또한 ILSVRC-2012 competition 에 우리 모델로 Table 2에서 우리의 결과를 보여준다. ILSVRC-2012 test set labels은 공개적으로 사용할 수 없기 때문에 , 우리는 ㅇ리가 사용할 모든 test error를 보고할 수 없다. 이 단락의 나머지 부분에서는 validation and test error rates이 0.1 % 이상 차이 가 나지 않기 때문에 상호 교환하여 사용한다 .(Table 2참조) 본 논문에서 설명한 CNN은 18.2%의 top-5 test error를 달성하였다. 5 개의 유사한 CNN의 예측 평균은 16.4%의 test error를 달성하였다. last pooling layer위에 sixth convolutional를 추가하여 전체 ImageNet Fall 2011  release( 15M images, 22K categories) 를 분류 한 다음 “fine-tuning”  하면 test error rate가 16.6% 이다. 앞서 언급한 five CNNs 을 사용하여 Fall 2011 release 에서 pre-trained한 2개의 CNN의 예측 평균은 15.3%의 error rate을 나타낸다. The second-best contest entry  은 다양한 유형의 densely-sampled features [7] 에서 계산된 FV에 대해  훈련된 여러 분류기의 예측을 평균화한 접근법으로 26.2%의  error rate를 달성했다.

마지막으로 10,184 categories와 8.9 million 개의 images가 있는  the Fall 2009 version of ImageNet 에서 error rates도 보고한다. 이 데이터 세트에서 우리는 이미지의 절반은 훈련에 사용하고 절반은 테스트에 사용하는 문헌의 규칙을 따른다. 확립된 test set가 없기때문에 분할의 이미지는  반드시  이전 저자가 사용한 분할과 다르지만, 이는 결과에 큰 영향을 미치지 않는다. 이 데이터 세트에 대한 top-1 and top-5 error rates은 위에서 설명한 net 에 의해 달성되지만 마지막 풀링 계층에 대해 추가적인 sixth convolutional layer가 있는 67.4%와 40.9%이다. 이 데이터 세트에 대해 가장 잘 발표된 결과는 78.1%와 60.9%[19]이다. 

 

6.1 Qualitative Evaluations

6.1 질적 평가

Figure 3은 network의 두 데이터 connected layers에서 학습한 convolutional kernels을 보여준다. 네트워크는 다양한 frequency-와 orientation-selective kernels과 다양한 colored blobs

을 학습했다. Section 3.5에 설명된 restricted connectivity 의 결과로 두 GPU가 보여주는 specialization 에 주목한다. GPU 1의 커널은 대부분 색에 구애받지 않는 반면 GPU 2의 커널은 대부분 색에 따라 다릅니다(restricted connectivity 원인 때문에 ).  이러한 종류의 specialization 는 모든 실행 중에 발생하며 특정 무작위 가중치 초기화(GPU의 번호 재지정 모듈로)와 독립적이다. 

Figure 4의 왼쪽 panel에서 8개의 테스트 이미지에 대한 top-5개 예측을 계산하여 네트워크가 학습한 내용을 정성적으로 평가한다. 왼쪽 상단에 있는 mite와 같은 중심에서 벗어난 개체도 네트워크에서 인식할 수 있다.  top-5 labels은 대부분 합리적으로 보인다. 예를 들어, 다른 종류의 고양이만 표범에게 그럴듯한 라벨로 여겨진다. 어떤 경우에는 (grille, cherry) 사진의 의도된 초점에 대해 진정한 모호성이 있다.

네트워크의 시각적 지식을 조사하는 또 다른 방법은 마지막 4096-dimensional hidden layer에서 이미지에 의해 유도되는 형상 활성화를 고려하는 것이다. 두 이미지가 작은 유클리드 분리로 특징 활성화 벡터를 생성하는 경우, 우리는 신경망의 높은 수준이 유사한 것으로 간주한다고 말할 수 있다. Figure 4 는 test set의 이미지 5개와 이 측정에 따라 각 이미지와 가장 유사한 교육 세트의 이미지 6개를 보여준다. pixel level에서 검색된 교육 영상은 일반적으로 L2에서 첫 번째 열의 쿼리 영상과 가깝지 않다. 예를 들어, 회수된 개와 강아지는 다양한 포즈를 취한다. 우리는 보충 자료에 더 많은 테스트 이미지에 대한 결과를 제시한다.

두 4096-dimensional

Figure 4:

(왼쪽) 8개의 ILSVRC-2010test images와 우리 모델에서 가장 가능성이 높은 것으로 보여주는  5개의 라벨이다. 각 이미지 아래에 올바른 라벨이 작성되고 올바른 라벨에 할당된 확률도 빨간색 막대로 표시된다(top-5에 해당될 경우).

(오른쪽) 첫 번째 열에 있는 ILSVRC-2010 테스트 이미지 5개이다. 나머지 열은 테스트 이미지의 형상 벡터로부터 가장 작은 유클리드 거리를 가진 마지막 hidden layer에서 feature vectors  를 생성하는 6개의 훈련 이미지를 보여준다. 두개의 4096-dimensional에서 real-valued 벡터 사이의 Euclidean distance를 사용하여 유사성을 계산하는 것은 비효율적이지만, 이러한 벡터를 짧은 이진 코드로 압축하도록 auto-encoder를 훈련시키면 효율적으로 만들 수 있다. 이렇게 하면 이미지 레이블을 사용하지 않는 raw pixels [14]에 auto-encoders을 적용하는 것보다 훨씬 더 나은 이미지 검색 방법이 생성되어야 하며, 따라서 의미적으로 유사하든 아니든 유사한 가장자리 패턴을 가진 이미지를 검색하는 경향이 있다.

 

color-agnostic와 color-specific

color-agnostic: 색에 구애받지 않는 , 어떤 색인지 상관 없는 

color-specific : 색에 구애받는 

 

 

7 Discussion

7 토론

우리의 결과는 대규모의 deep convolutional neural network이 purely supervised learning을 사용하여 매우 어려운 데이터 세트에서 기록적인 결과를 달성할 수 있다는 것을 보여준다. single convolutional layer 가 제거되면 network’s 의 성능이 저하된다는 것이 주목할 만한 하다. 예를 들어 , 중간 계층 하나를 제거하면 네트워크의 top-1 성능에 대해 약 2%의 손실이 발생한다. 그래서 그 깊이는 우리의 결과를 얻기 위해 정말 중요하다.

실험을 단순화하기 위해, 특히 라벨링된 데이터의 양에 상응하는 증가 없이 네트워크 크기를 크게 증가시킬 수 있는 충분한 계산 능력을 얻는 경우 도움이 될 것으로 예상했음에도 불구하고 우리는 unsupervised pre-training을 사용하지 않았다. 지금까지, 우리의 결과는 네트워크를 더 크게 만들고 더 오래 훈련시켰기 때문에 개선되었지만, 인간 시각 시스템의 추론된 시간적 경로와 일치시키기 위해서는 여전히 갈 길이 멀다. 궁극적으로 우리는 시간 구조가 정적 이미지에서 누락되거나 훨씬 덜 분명한 매우 유용한 정보를 제공하는 비디오 시퀀스에 매우 크고 깊은 컨볼루션 네트를 사용하고자 한다.

데이터의 양 -> 네트워크의 크기

 

 

[참고 논문]:

ImageNet Classification with Deep Convolutional Neural Networks

 

최근에 파파고 번역기도 잘 되어 있어서 부분 번역은 파파고에서 가져왔다.

반응형
반응형

site: https://pytorch.org/

system 버전에 맞는 pytorch 버전을 선택한다.

pytorch 선택

 

pytorch anaconda설치 

 

1. pytorch 가상환경 만들기

conda create -n pytorch1 python=3.7

conda activate pytorch1

2. 라이브러리들 설치 https://pytorch.org/
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch 
cpu만을 사용할 경우
conda install pytorch torchvision cpuonly -c pytorch

conda install jupyter pandas matplotlib


3. anaconda cmd 창에서 

jupyter notebook

반응형

'Deep learning > 환경설정' 카테고리의 다른 글

yolov5 환경 설정하기  (3) 2020.11.23
visual studio code 연동 git  (0) 2020.11.02
anaconda kernel생성  (0) 2020.10.28
yolo3 labelImage사용법  (0) 2020.09.26
반응형

선형회귀분석 Linear regression: 독립변수 x, 상수형 b와 종속변수 y 사이의 관계를 모델링하는 방법입니다.

두 변수 사이의 관계일 경우 단순회귀라고 하며 여러 개의 변수를 다루는 다중회귀도 있습니다.

 

비용함수 cost function: 반복이 일어 날 때마다 개선되고 있는지 확인하기 위해 얼마나 좋은(나쁜) 직선인지를 

추정하는 것입니다.

비용함수는 오차함수 error function라고도 합니다.

 

평균제곱오차 mean square error: 실제 값과 알고리즘이 반복마다 추정한 값 사이의 거리를 오차로 하는 것의

평균입니다.

 

경사 하강법  gradient descent: 함수값을 최소화 하는 최적화 알고리즘은 경사 하강법이 하는 역할입니다.

 

기울기 gradient: 음의 방향 쪽으로 진행하면서 반복적으로 최적화를 수행합니다.

 

학습 속도 learning rate 는 텐서플로가 각 반복 때마다 얼마나 크게 이동할 것인가를 제어합니다.

학습 속도를 너무 크게 하면 최솟값을 지나쳐 버릴 수 있습니다.

학습 속도를 너무 작게 하면 최솟값에 다다르는 데 많은 반복이 필요하게 됩니다.

 

군집화

 

supervised learning 지도학습 :

입력 데이터와 출력값(레이블)을 함께 사용한것

 

군집화 clustering 자율학습 이다.

k-평균 알고리즘: 데이터를 다른 묶음과 구분되도록 유사한 것끼리 자동으로 그룹화할 때 가장 많이

사용되는 유명한 알고리즘이다. 한 군집 내의 데이터들은 동일한 성질을 가지며 다른 그룹과는 

구별됩니다.

알고리즘의 결과는 중심centroid이라고 부르는 k개의 점 dot으로서 , 이들은 각기 다른 그룹의 

중심점을 나타내며 데이터들은 K개의 군집 중 하나에만 속할 수 있습니다.

 

기본자료구조 : 텐서

텐서는 동적 크기를 찾는 다차원 데이터 배열로 볼 수 있으며 불리언이나 문자열 , 여러종류의 숫자 

같은 정적 자료형을 가집니다.

텐서의 차원을 표현하기 위해 shape, rank, dimension number

 

 

자율학습 unsupervised learning:

 

 

다층 계층 신경망

합성공 신경망 convolution neural network(CNN 또는 ConvNet이라고도 부릅니다) 이란 딥러닝의 특별한 케이스이며 컴퓨터 비전 분야에 아주 커다란 영향을 주어왔습니다.

합성공 신경망의 주요 목적은 테두리 , 선, 색 등 이미지의 시각적 특징 characteristic이나 특징 feature을 감지하는 것입니다.

 

fully connect

 

스트라이드 stride: 한번에 얼마큼 움직일지를 결정하는 이 매개변수 

패딩 padding: 채울 테두리의 크기를 지정하는 매개변수 

 

 

드룹아웃 dropout이라는 기법을 통해 신경망에서 필요한 매개변수 수를 줄이는 것입니다. 이는 노드를 삭제하여 입력과 출력 사이의 연결을 제거하는 것입니다.

 

병렬처리

"/cpu:0":서버의 CPU를 지정함

"/gpu:0":서버의 첫 번째 GPU를 지정함

"/gpu:1":서버의 두 번째 GPU를 저정함, 세 번째 이후는 2,3,4, ... 식입니다.

 

부록 A: 한국어판 : 순환 신경망과 LSTM

A.1 순환 신경망 알고리즘

보통의 신경망 알고리즘으로는 이전의 맥락을 이해하면서 현재의 단어를 이해하는 것 같은 데이터의 맥락을 학습 시킬 수가 없스빈다. 그래서 이런 단점을 해결하고자 순환 신경망 recurrent neural network(RNN)알고리즘이 개발되었습니다. 

RNN 에서 순환한다는 의미는 다음 그림에서 볼 수 있듯이 신경망의 뉴런에서 나온 정보가 다시 재상용 되도록 순환되기 때문입니다.

 

어떤 시간 (t)의 뉴런에는 그 이전 시간(t-1) 에 생성된 뉴런의 상태가 주입되어 새로운 상태가 만들어지고 , 그 데이터는 다시 그 이후 시간(t+1)에 입력되는 구조입니다. 순환 신경망에서는 종종 이런 뉴런을 메모리 셀 memory cell혹은 그냥 셀 cell이라고 부릅니다. 

 

셀에서 만드는 상태 데이터는 보통 은닉상태 라고 부릅니다.

 

A.2 LSTM순환 신경망 알고리즘

기본적인 순환 신경망은 단기기억 short-term memory을 지정할 수 있다

 

하지만 학생이라는 정보가 꽤 멀리 떨어져 있다면 기본적인 순환 신경망 알고리즘으로 이 정보를 멀리까지 실어나르기는 어렵습니다. 이런 단점을 계산하기 위해서 LSTM long short-term memory순환 신경망 알고리즘이 등장하였습니다.

말 그대로 단기기억을 더 길게 유지시켜주는 이 알고리즘은 기본 순환 신경망 알고리즘의 효과를 크게 향상시켜주므로 여러 분야에 걸쳐 널리 사용되고 있습니다.

 

LSTM 순환 신경망은 은닉 상태와 셀 상태 cell state두가지를 계산합니다.

은닉 상태는 상위 계층의 입력 값으로 전달되고 다음번 계산을 위해서도 전달되지만 셀 상태 (c)는 상위 계층으로는 전달되지 않습니다. 

 

LSTM순환 신경망은 새로운 셀 상태를 계산하기 위해 삭제 게이트와 입력게이트 두가지를 이용합니다.

삭제 게이트는 이전 셀 상태의 값 중 삭제해야 할 정보를 학습시키기 위한것이고 

입력 게이트는 새롭게 추가해야 할 정보를 학습하게 도와줍니다.

삭제 게이트는 이전 셀 상태와 P에 시그모이드 활성화 함수를 적용한 것을 곱하여 계산합니다.

입력 게이트는 p에 시그모이드 활성화 함수를 적용한 것과 p에 하이퍼볼릭 탄젠트 활성화 함수를 적용한 것을 곱하여 구합니다.

죄종적으로 현재 셀 상태는 삭제 게이트 결과 와 입력 게이트 결과를 더해서 구합니다.

 

 

은닉 상태의 계산은 위에서 구한 현재의 셀 상태에 하이퍼블릭 탄젠트 활성화 함수를 적용하고 p에 시그모이드 활성화 함수를적용한 것을 곱합니다.

 

계산된 값으로 다음번에 셀의 상태를 계산하기 위해서 저장되었다가 전달됩니다.

 

 

A.3 오버피팅 문제 

드롭아웃 : 합성곱 신경망을 포함하여 일반적인 피드포워드 신경망에서 모델이 학습 데이터에 과다하게 치중되어 만들어지는 것을 막아주는 좋은 방법입니다.

 

A.4 언어 모델링

 

A.5 클래스 설정 

 

A.6 학습데이터 

미니배치 알고리즘은 전체 데이터를 무작위로 섞은 후에 추출하는 것이 보통이지만 순환 신경망에서는 순차적인 데이터 처리를 해야 하기 때문에 미니배치 데이터를 추출하는 방법을 조금 다르게 해야 한다. 일반적으로 전체 데이터에서 문장 단위로 나누어 임의의 순서대로 섞을 수 있으나 이 예제에서는 20개의 배치를 나누어 조금씩 읽어오는 방법을 사용했습니다.

 

 

A.7 모델 생성 클래스

 

A.8 반복함수

 

A.9 결과

학습의 결과는 언어 모델링에서 자주 사용하는 혼잡도 perplexity를 계산하여 평가합니다.

 

GRU gated recurrent unit순환 신경망 

GRU 순환 신경망은 입력 게이트와 삭제 게이트를 하나의 업데이트 게이트로 묶고 셀 상태 와 은닉 상태를 합친것이 특징입니다. 

 

 

출처 : 텐서플로 첫걸음

반응형

'Deep learning > 개념' 카테고리의 다른 글

Optimizer  (0) 2021.03.27
Activation Function  (0) 2021.03.27
DBN  (0) 2021.03.27
알고리즘 개념  (0) 2021.03.21
top-1 and top-5  (0) 2020.08.18

+ Recent posts