[CVPR 2020] Designing Network Design Spaces

2020. 5. 8. 02:08Research

페이스북 AI 리서치 팀이 2020년도 CVPR에 발표한 논문이다. 기존의 NAS(Neural Architecture Search) 계열 논문들은 고정된 design space 내에서 최적의 뉴럴넷 인스턴스를 찾기 위한 탐색을 하는 것이 일반적이었다. 하지만 이 논문에서는 상당히 새로운 패러다임의 AutoML 방식을 제시한다. 바로 NAS와 같이 개별 네트워크 인스턴스 하나를 찾는 것이 아니라 design principle 자체를 탐색하는 것이다!

 

 

Introduction

LeNet => AlexNet => VGG => ResNet과 같이 뉴럴넷이 발전해온 과정을 보면, 뉴럴넷 모델의 점진적인 발전은 연구자들이 성능 개선에 도움이 될 법한 insight를 얻은 뒤에 그러한 insight를 잘 반영할 수 있는 네트워크 구조를 디자인하는 과정을 통해 이루어졌다고 볼 수 있다. 예를 들어, VGG에서는 7x7 Conv 하나를 쓰는 것보다는 3x3 Conv (+ReLU)를 여러개 써서 non-linearity를 증가시키는 것이 모델 성능에 이익이 될 것이라는 insight를 가지고 만들어졌고, ResNet에서는 VGG보다 깊은 네트워크를 학습시키기 위해서는 residual learning이 필요할 것이라는 insight가 담겨있다. 즉, 이와 같은 기존 연구들에서는 convolution의 중요성, 데이터 크기의 중요성, depth의 중요성, 잔차(residual)의 중요성 등과 같이 어떠한 design principle을 반영하고 있다.

 

이 연구에서는 특정한 네트워크 인스턴스에 국한되지 않은, 다양한 네트워크 세팅에 대해서 적용 가능한 general design principle을 생성하는 것을 목표로 한다. 위에서 언급한 ResNet과 같은 기존 뉴럴넷에서도 매뉴얼하게 네트워크를 디자인하여 좋은 성과를 거두어 오긴했으나 보다 나은 네트워크를 만들어 내기 위해서 고려해야하는 옵션들을 점차 늘어가고 있다. 이러한 문제를 해결하기 위해서 등장한 것이 바로 NAS(Neural Architecture Search)인데, NAS는 유저가 설정한 design space 내에서 이런 저런 조합을 시도하면서 자동으로 최적의 모델 configuration을 찾아낸다. NAS가 좋은 성과를 내고 있고, 다양한 좋은 연구들이 계속해서 나오고 있지만, NAS의 search 결과물은 특정한 환경에 국한된 단일 네트워크 인스턴스라는 점에서 패러다임 자체에 제약이 있다. 우리는 인간이 보았을 때도 충분히 이해가능할 정도로 간단하면서도 일반화 가능하고 성능도 뛰어난 그런 모델을 만드는 방법을 알고 싶다!

 

이 연구는 매뉴얼하게 사람이 뉴럴넷을 디자인하는 non-AutoML 패러다임과 NAS의 패러다임을 합친 새로운 패러다임을 제시한다. 새로운 패러다임이라함은 바로 "개별 네트워크 인스턴스를 디자인하는 것에 집중하는 것이 아니라, 여러 네트워크들에 적용이 될 수 있는 design space를 디자인하는 것"이다. 즉, 기존의 매뉴얼 디자인(VGG, ResNet 등을 개발한 방식) 방식과 같이 해석가능한 특성(interpretibility), 간단한 구조, 일반성을 가지면서도, NAS 방식과 같이 자동화된 모델링 과정의 이점을 함께 누리는 것이 목적이다.

 

이와 같은 목표를 달성하기 위해서 택한 전략은 아래의 그림과 같다. 처음엔 비교적 제약이 적은(uncontrained) 넓은 design space에서 시작해서 점진적인 refinement 과정을 거쳐서 보다 robust하고 generalized한 design space를 만들어 나간다. 그림에서 design space A에서 C로 갈 수록 error distribution이 개선되는 모습을 확인 가능하다. 

 

 

Design Space Design

앞에서 논문의 전체적인 내용에 대해서 언급을 했고, 이번 절에서는 그와 관련하여 보다 구체적인 내용을 살펴볼 것이다. Design space design의 각 단계에서 input으로 주어지는 것은 이전 design space이고, 그 output으로 더 간단하면서도 더 좋은 성능을 갖는 새로운 design space가 나온다. 이 과정을 통해서 얻은 refined design space는 (1) configuration 측면에서 더욱 간단하고, (2) 좋은 성능을 보이는 모델들이 space 내에 더 많이 포함되며, (3) 사람이 보았을 때에도 분석 및 해석이 용이하다.

 

Tool

Design space design을 위해서는 그에 맞는 tool이 필요하다. 이 연구에서는 "On network design spaces for visual recognition (ICCV 2019)"이라는 논문에서 소개된 특별한 tool을 사용한다. 그 작동 방식은 design space에 포함된 모델들을 샘플링함으로써 design space의 좋은 정도를 수량화한다. 즉, 2개의 design space (DS1, DS2)가 주어지면 DS1과 DS2 각각에서 일부 모델을 샘플링하고, 각 모델들의 error distribution을 평가해서 DS1과 DS2 각각의 best model을 추출한 뒤 서로 비교한다.

 

Design space의 quality를 평가하는데 사용되는 공식은 다음과 같다. $n$은 design space 내의 모델 개수이며, $e_i$는 design space에서 i 번째 모델의 error를 의미한다. 따라서 $F(n)$은 threshold error인 $e$보다 작은 error를 가진 모델들의 비율을 나타낸다. 앞으로는 이 식을 Empirical Distribution Function(EDF)이라고 하겠다.

 

 

AnyNet

이 논문에서 최초로 주어지는 uncontrained design space를 AnyNet이라고 하며, refinement 과정을 거쳐 도달하는 "simple regular networks"로 이루어진 저차원 design space를 RegNet이라고 한다. 우선 AnyNet을 통해 어떻게 RegNet을 찾아가는지 살펴보자.

 

네트워크의 구조는 block들의 개수(depth), block의 width(channel의 수), 그 밖의 block parameter(ex: bottleneck ratio, group width)와 같은 요소들을 통해 이루어진다. 네트워크 구조는 accuracy 뿐만 아니라 memory 및 throughput 상의 효율성과도 직결되어 있다.

 

AnyNet design space의 기본적인 네트워크들은 매우 직관적이다. 아래의 그림 (a)에서 보이듯이 design space 내의 각 네트워크들은 input layer에 해당하는 stem, 여러 DL 연산들이 수행되는 body, 그리고 output class를 예측하는 head(ex: pooling 이후의 layer)로 이루어져있다. 실제 연산들이 이루어지는 body 부분을 살펴보면 (b)와 같은 구조인데, body는 총 4개의 stage로 나누어져있고, stage를 거치면서 점차 resolution이 줄어든다. (c)에서 보이듯이 각 stage는 동일한 블록들의 sequence로 이루어져있고, 하나의 stage는 총 $d_i$ 개의 블록들로 구성된다. stage $i$에서 탐색의 대상이 되는 항목들은 블록의 개수 $d_i$, block width $w_i$, 그리고 그 밖의 block parameter들이다. 네트워크의 구조가 너무 간단해보이지만 매우 많은 경우의 수를 포함하기 때문에 design space는 매우 광범위하다.

 

 

 

논문에서는 ResNet에서 사용하는 bottleneck block을 사용해서 실험을 진행하였는데, 여기에서는 이를 X block이라고 지칭하며 X block을 사용해서 만들어진 AnyNet design space를 AnyNetX라고 한다.

 

AnyNetX design space는 4개의 stage로 이루어져 있고, 각각의 stage에서는 다음과 같은 4개의 parameter를 조정한다. 다음과 같은 조건에서 모델을 탐색하면 총 $(16 \times 128 \times 3 \times 6)^4 \approx 10^{18}$ 개의 configuration의 경우의 수가 존재한다.

 

 

  1. $d_i$: block의 개수(depth) ; $d_i \leq 16$ 
  2. $w_i$: block의 width ; $w_i \leq 1024$ (8로 나누어 떨어지는 수만)
  3. $b_i$: bottleneck ratio ; $b_i \in \{1,2,4\}$
  4. $g_i$: group의 width ; $g_i \in \{1,2,4,8,16,32\}$

 

 

총 500개의 모델들이 얻어질 때까지 반복적으로 샘플링을 수행하는데, model throughput에 360MFLOPS~400MFLOPS의 제약을 두었고, 각각의 모델에 대해서 총 10 에폭만큼의 학습을 수행한다. 이 논문에서는 design space의 configuration을 조정하면서 general design principle을 발견하는 것을 목적으로 삼고 있다. 즉 다음과 같은 목표가 달성되어야 한다.

 

  1. 보다 간단한 구조의 모델을 포함하는 design space
  2. interpretibility가 좋은 모델을 포함하는 design space
  3. 이전과 동일하거나 더 나은 성능의 model들을 포함하는 design space
  4. 모델들의 다양성을 유지할 수 있는 design space