연구/논문 리뷰

[AAAI 2019] TAPAS: Train-Less Accuracy Predictor for Architecture Search

xeskin 2020. 5. 14. 18:29
반응형

Introduction

 

NAS(Network Architecture Search)시에 child network의 성능을 트레이닝없이 추정할 수 있다면 아키텍쳐를 찾는 시간을 줄일 수 있을 것이다. 이에 대한 시도는 크게 두가지가 있었다. 첫 번째는 partial learning curve를 통해 네트워크의 성능을 예측하는 방법, 두 번째는 실험 DB를 통해 예측하는 방법이다. 전자는 특정 네트워크에 대한 partial training을 요구하고, 후자는 미리 많은 네트워크를 트레이닝 시켜둬야 하기 때문에 시간이 오래 걸린다. 본 논문에서는 데이터셋의 difficulty를 예측하여 unseen datasets에 대한 train-less accuracy predictor를 개발하였고, unseen dataset과 network architecutre가 주어지면 accuracy를 추정할 수 있는 TAPAS라는 프레임워크를 제안했다.


 

Methodology

TAPAS framework는 Dataset Characterization, Lifelong Database of Experiments, Train-less Accuracy Predictor 세가지로 구성돼있다.

 

Dataset Characterization (DC)

 

 

Unseen datasets을 받아 scalar score를 매기는 부분이다. 같은 CNN을 훈련시키더라도 어떤 데이터셋을 이용하느냐에 따라 다른 성능을 낼 수 있다. 왜냐하면 데이터셋마다 클래스 넘버, 이미지 수, 레졸루션 등등 여러가지 피쳐들이 다르기 때문이다. 예를 들어 ResNet-51의 경우에, CIFAR-10에 대해서는 90%를 상회하는 성능을 보이지만 ImageNet에 대해서는 7-80% 정도의 성능을 보인다. 여튼, TAPAS에서는 이런 점들 때문에 ProbeNet이라는 것을 훈련시켜 dataset difficulty를 추정했다. 이에 관한 디테일은 링크를 참고하기 바란다. 실제로는 ProbNet을 통해 dataset characterization number(DCN)을 얻으면 이를 이용해서 Lifelong Database of Experiments의 데이터셋을 필터링하고 Train-less Accuracy Predictor 훈련 및 예측 단계에서 입력 점수로 넣어줬다.

 

Lifelong Database of Experiments (LDE)

TAPAS framework 내에서 실행되는 이미지 분류 실험 데이터셋에 대한 neural net의 트레이닝 실험을 모으는 부분이다. 고정돼있는 DB가 아니라 실험을 할 때마다 사이즈가 커지는 DB인데, 데이터에는 CNN 아키텍쳐에 대한 description, training hyperparameter, 사용된 데이터셋, DCN, achieved accuracy가 있다. 맨 처음에는 LDE가 비어있다. 그래서 여러 데이터셋에 대해 MetaQNN space를 약간 변형한 것으로부터 800개의 network를 샘플링한다. MetaQNN은 강화학습을 이용해 NAS를 해보자는 시도인데, MetaQNN에서 정의한 network design space로부터 샘플링을 해서 network를 얻었다고 이해할 수 있다. 이때 stride, receptive field, padding, batch normalization을 쓸 것인지, 쓴다면 얼마나 쓸 것인지에 대한 contraint를 뒀고 residual block, skip connection은 무조건 두 타입이상 넣어주었다. residual block을 쓸 거라면 여기서 필요한 hyperparameter는 receptive filed, stride, repeat factor와 같은 것들인데 이런 것도 세세하게 정해줬다고 한다. LDE가 어느정도 차면 새로운 인풋 데이터셋과 대응되는 DCN이 들어오는 경우도 있을텐데, 이때는 다음과 같은 식을 이용해 리턴 했다고 한다. 즉, dataset의 difficulty정도가 유사한 것은 LDE내에 두지 않고, 다양한 difficulty를 가지게끔 유도했다고 생각할 수 있다.

 

 

Train-less Accuracy Predictor (TAP)

 

Figure

 

TAP는 DCN과 neural net의 아키텍쳐를 인풋으로 받으면 성능을 예측하는 네트워크다. NN structure를 분석하지 않고 예측하는데, 위의 피규어에서 보이는 것과 같이 이를 반복적으로 한다. 큰 네트워크가 있을 때 이 녀석의 sub-network의 accuracy를 알고 있다는 가정 하에 그걸 조금 더 키운 sub-network의 accuracy를 반복적으로 계산하여 최종적으로 본 모델의 accuracy를 계산한다. 그러면, 여기서 TAP라는 걸 알았는데 NN structure를 분석하지 않는다면 인풋시에 받는 데이터는 NN structure를 어떻게 잘 표현할 것이며, TAP network는 어떻게 구성돼있고, 이것도 network니까 훈련은 어떻게 시킬 것이냐에 대한 질문이 생긴다. 이제 알아보도록 하자.

 

Neural network architecture encoding

TAP는 network representation을 위해서 layer-by-layer encoding vector를 사용했다. Encoding vector는 두 타입의 정보를 갖고 있는데 하나는 i번째 레이어에 대한 정보(l_i), 다른 하나는 첫번째 레이어에서부터 i번째 레이어에 해당하는 sub-network에 대한 정보 (l_(1:i))다. 먼저 Layer type은 convolution, pooling, residual block, skip connection, fully connected같은 것이 있는지 알려주는 원핫 인코딩 벡터다. Output/Input height ratio는 각 레이어에서의 stride, padding에 대한 정보를 Output/Input depth ratio는 output depth와 input depth간의 kernel수가 얼마나 변했는지 알려준다. Number of weight은 해당 레이어에서의 learnable weight의 수를 말한다. Total number of layers는 sub-network내의 layer 개수를, Inference FLOPs/memory는 sub-network가 추론시에 얼마나 많은 FLOPs과 memory를 사용하는지를 뜻한다. 마지막으로 Accuracy는 sub-network의 성능을 말하는데, 피규어에서는 A_i로 표현돼있다. 맨처음에는 prediction accuracy가 없어서 data class의 역수를 accuracy로 사용한다. 이후에는 TAP로 predict한 값을 그다음 인코딩 벡터에 넘겨준다. 

 

TAP architecture

TAP는 각각 50개, 100개의 히든 유닛을 갖고 있는 두 개의 LSTM과 sigmoid activation을 갖는 FCN으로 구성돼있다. TAP는 두 개의 인풋을 받는다. 하나는 i번째 레이어와 (i+1)번째 layer의 nn architecture encoding vector를 이어붙인 것(concat)인데 이는 첫 번째 LSTM으로 들어간다. 다른 하나는 DCN인데, 이는 두 번째 LSTM의 아웃풋이랑 concat돼서 FCN으로 들어간다. 이를 반복하면 최종 네트워크의 accuracy를 예측할 수 있다.

 

TAP training

TAP는 inceremental fashion으로 학습됐는데, 최적화시에는 RMSprop을, 초기화시에는 HeNormal Initialization을, batch size는 512로 두고 학습시켰다고 한다. TAP architecture에서 알 수 있다시피 TAP는 굉장히 작은 network이기 때문에 single GPU로 학습시켜서 몇분 안걸렸다고 한다.


 

반응형