Markdown 수식추가 Markdown 추가 네이버 스크립트 구글 스크립트

Designing Network design Spaces

I. Radosavovic R. P. Kosarahu R. Girshick K. He P. Dollar

Abstract

본 논문의 목표는 네트워크 설계에 대한 이해를 높히는 것이고 설정 전반에 걸쳐 일반화되는 설계 원칙을 발견하는 것이다. 개별적인 네트워크 인스턴스 설계에 초점을 맞추지 않고 네트워크 모집단을 매개 변수화하는 네트워크 설계 공간을 설계한다. 기존의 네트워크 디자인과 비슷하지만 디자인 space level이 더 높다. 본 논문은 네트워크 디자인의 구조적인 측면을 연구했으며, RegNet이라 불리는 단순하고 규칙적인 네트워크로 구성된 low-dimension 설계 공간에 도달했다고 한다. RegNet 매개변수화의 중심

 

insight는 놀랍게도 단순한데: 좋은 네트워크의 widths와 depths는 quantized linear function으로 설명될 수 있다. RegNet의 디자인 공간을 분석했는데, 최근 네트워크 디자인 실정과는 다름을 나타낸다. RegNet의 디자인 공간은 단순하고 flop 여역에서 매우 좋은 성능을 보이는 빠른 네트워크이다. RegNet은 EfficientNet 모델보다 GPU에서 5배나 더 빠르다.

1.Introduction

LeNet~ResNet까지는 효과적이면서 잘 알려지 네트워크 디자인이다. 위의 네트워크들은 convolution, network 그리고 데이터 크기, depth, residuals 등 각각이 중요하다는 것으 알려준다. 이것은 실질적인 네트워크 예시이며 디자인 원칙이다.

직접 네트워크를 설계하는 것이 큰 발전을 이뤄았지만, 선택의 수가 증가함에 따라 잘 최적화된 네트워크를 수동을 찾는 것은 어렵다. 따라서, NAS 라고 불리는 고정된 search space에서 가능한 좋은 네트워크를 찾아주는 기술이다.

NAS는 특정 설정에서 단일 네트워크 인스턴스만을 찾는 한계가 존재하며, 본 논문은 일반화를기반으로 하는 매우 단순한 네트워크를 찾는 것에 집중한다.

 

따라서, 본 논문은 수동의 디자인과 NAS의 이점을 조합한 새로운 네트워크 디자인 파라다임을 제시한다. 즉, 매개변수화 시킨 네트워크의 모집단인 디자인 공간들을 디자인한다. (여기서 디자인 공간은 탐색 공간이 아니다. 네트워크 인스턴스를 찾는 것이 아닌 말 그대로 공간을 디자인하는 것이다.)

 

전체적인 과정은 수동 디자인 방법과 유사한데, 모집단 수준으로 올리고 네트워크 디자인 공간들을 분산 평가를 통해 이끌어낸다.

먼저, VGG, ResNet, 그리고 ResNeXt와 같은 네트워크 구조를 찾았으며, 상대적으로 자유로운 디자인 공간을 가지는 AnyNet을 만들었고, 단순한 "regular" 네트워크로 이뤄진 저차원 디자인 공간을 발견했다. stage widths와 depths를 양자화 선형 함수로 결정할 수 있는 공간이다. AnyNet과 비교해 더 단순하고, 해석하기 쉽고, 좋은 모델들에 더 많이 집중할 수 있다.

RegNet의 디자인 공간은 적은 계산, 적은 epoch을 가진다. 더 쉽게 해석가능하고 우리가 생각한 방식과 이어진다. 또한, 기존의 일반적인 생각과 다르게, bottleneck 또는 inverted bottleneck을 사용하지 않고도 20 block 가까이 에서도 안정적임을 보인다.

RegNet은 모바일 환경에서 더 효과적이며, ResNe(X)t보다 더 좋은 성능을 보인다. 그리고 활성화 함수 횟수가 GPU와 같은 가속기의 런타임에 큰 영향을 미칠 수 있으므로 고정된 활성화함수에 대한 개선된 점을 강조한다. 또한, EfficientNet보다 5배나 더 빠르며, 일반화 성능도 높다.

 

네트워크 구조는 고려할 수 있는 디자인 공간 디자인의 가장 단순한 형태라고 할 수 있으며, 더 풍부한 설계 공간을 설계하는데 집중하면, 더 나은 네트워크로 이어질 수 있음을 나타낸다.

2. Related Work

Manual network design AlexNet부터 이어져온 manual network design은 많은 발전을 이뤄왔다. 이와 비슷하게 본 논문도 새로운 디자인 원칙을 발견했으며, manual design과 비슷하며 단지 디자인 공간 수준에서 실행되는 것이 차이점이다.

 

Automated network design 최근에는 NAS를 통해 효과적인 네트워크를 찾는데 집중한다. 본 논문은 search space를 디자인하는 방향으로 연구를 했으며, 2가지의 가정이 깔려있다. 1) 더 좋은 디자인 공간은 효과적으로 NAS의 search algorithm을 개선시킬 것. 2) 디자인 공간이 풍부해지면 더 좋은 모델을 찾을 수 있을 것.

 

Network scaling. 보통 네트워크를 만들 때는 특정 영역(flops, compare, etc)에서 최고의 성능을 내는 것으로 찾기 때문에, 다른 영역에서 사용하기에는 좋지않다. 따라서, 본 논문은, 일반적인 디자인 원칙을 발견함에 동시에 어떤 목표 영역에서도 최적화된 네트워크로 효과적으로 튜닝을 할 수있는 네트워크를 찾는다.

 

Comparing networks. 네트워크 디자인 공간들의 수는 거대하기 때문에, 뛰어난 comparison metric은 필수적이다. 최근에는 새플림 된 네트워크 모집단을 비교하고 분석하는 방법론이 존재하는데, 본 논문의 목표와 일치하며, 효과적인 방법을 제안한다.

 

Parameterization. 최종 양자화 선형 파라미터화는 이전 논문들과 비슷하지만, 다른 점이 2가지 있다. 1) 설계 선택을 정의하는 실증적 연구를 제공함. 2) 이전에 이해하지 못했던 구조 설계 선택에 대한 insight를 제공함.

3. Design Space Design

특정 설정에서 단일의 최고 모델을 찾거나 디자인하는 것보다는, 모델들의 모집단의 행동을 연구하는 것이다. 일반적인 디자인 원칙을 발견하고 이것을 모델의 모집단에 적용하는 것이다.

 

Radosavovic et al. [21][21]의 디자인 공간 개념을 사용하는데, 디자인 공간으로부터 모델들의 샘플링하고, 모델 분포를 생성하며, 그리고 고전 통계방법으로 이러한 디자인 공간을 분석할 수 있다는 것이다.

본 논문은 자유로운 디자인 스페이스에서 계속해서 단순한 버전의 initial network을 디자인하는 design space design을 제안한다. 입력은 초기의 디자인 공간이며 출력은 더 단순하거나 좋은 성능을 가진 모델들의 모집단을 가지는 디자인 원칙인 재정의된 디자인 공간이다.

 

본 논문에서 제안하는 RegNet의 디자인 공간은 다음과 같다. 1) 허용하는한 네트워크 구성의 차원과 유형 측면에서 단순화 2) 최고 성능 모델들의 더 높은 집중이 포함되어있으며, 3) 분석 및 해석이 더 용이해야한다.

3.1 Tools for Design Space Design

본 논문은 디자인 공간을 평가하기 위해 [21][21]의 방법을 사용하는데, 해당 설계 공간에서 모델 세트를 샘플링하고 모델 오류 분포 결과를 특성화하여 설계 공간의 품질을 정량화한다. 이것은 분포를 비교하는 것이 더 강인하며 search algorithms을 사용하는 것보다 더 유익하다.

 

모델의 분산을 얻기위해 디자인 공간에서 n개의 모델을 샘플링하고 학습한다. 효율성을 위해 400M FLOPs와 10 epochs만을 사용한다. n이 100일 때, 모델들 모두를 학습하는 것과 ResNet-50을 학습하는 것과 같은 FLOPs를 가진다. (ImageNet에서 학습한 결과)

 

[21][21]의 디자인 공간의 퀄리티를 분석하기위 empirical distribution function (EDF)를 사용한다.

$$ F(e) = \frac{1}{n} \sum_{i=1}^n 1[e_i < e]. $$

$e_i$는 모델의 에러이며 $e$는 threshold이다.

밑의 그림 2의 좌측은 $n=500$에서 AnyNetX 디자인 공간으로부터 샘플링한 모델들의 EDF 이다. 훈련된 모델의 모집단이 주어지면 다양한 네트워크 속성과 네트워크 오류를 시각화하고 분석할 수 있다.

여기서, empirical bootstrap를 통해 최고 모델이 속하는 범위를 추정할 수 있다.

 

즉, 이렇게 요약할 수 있다. 1) 디자인 공간으로부터 n개의 모델을 샘플링하고 학습하여 모델의 분포를 얻는다. 2) EDF를 사용해 디자인 공간의 퀄리티를 계산하고 시각화한다. 3) 디자인 공간의 속성을 보고 empirical bootstrap을 통해 insight를 얻는다. 4) 이것으로 다시 디자인 공간을 재정의하여 더 나은 디자인 공간을 만든다.

3.2 The AnyNet Design Space

이 section에서는 표준이며 고정된 네트워크르 블럭을 가정한 네트워크의 구조를 탐구하는 것이다. 즉, 블럭의 수, 블럭의 너비 그리고 블럭의 다른 매개변수들에 대한 탐구다. 이러한 것들은 계산량, 매개변수 그리고 메모리의 분포를 결정하는 동시에 정확도와 효율성을 결정한다.

 

AnyNet의 디자인 공간은 간단하면서 쉬운데, 그림 3의 a와 같이 입력단의 stem, 그 뒤에 body 그리고 class를 예측하는 head 부분으로 나눠져있다. 여기서 stem과 head를 최대한 고정시키고 네트워크의 body를 변경하여 계산량과 정확도를 결정한다.

body는 총 4개의 stages로 구성되어 있으며, 계속해서 resolution을 줄여간다. (그림 3의 b) 각 stage는 개별적인 block들을 가지며, 각각의 stage는 block의 갯수 ($d_i$), block의 너비 ($w_i$), 그리고 block 매개변수를 가진다. 이러한 AnyNet의 구조는 매우 방대하다.

 

그림 4에서 볼 수 있듯이 대부분의 실험에서는 residual bottleneck blcok을 사용하며, 이것을 x block 이라고 지칭한다. 그리고 이러한 block으로 이뤄진 네트워크를 AnyNetX라고 하며, 네트워크 구조가 최적화 되었을 때, 놀랍운 효율성을 보인다.

 

AnyNetX의 디자인 공간은 총 16단계로 정해지는데 4개의 stage와 각 stage에서 4개의 매개변수를 가진다. blocks의 수 ($d_i$), block의 너비 ($w_i$), bottleneck ratio ($b_i$), 그리고 group width ($g_i$)이다. $d_i \leq16$인 log-uniform sampling, $w_i \leq 1024$인 8의 배수, $b_i \in {1,2,4}$, $g_i \in {1,2,...,32}$ 이다. $n=500$, epoch 은 10, 그리고 목표 계산량은 300MF~400MF이다.

 

총 $10^18$의 가능성이 나오며 이것이 AnyNetX의 디자인 공간이다. ~$10^18$의 최고성능 모델을 찾는 것이 아닌 일반적인 디자인 원칙을 찾는데 집중했으며 디자인 공간을 이해하고 재정의 하는데 도움이 된다. 그리고 4가지의 접근법을 사용해 AnyNetX를 총5가지로 나눴다.

 

AnyNey$X_A$ 초기의 AnyNetX의 디자인 공간이다.

 

AnyNet$X_B$ 여기서 제한하는 부분은 bottleneck ratio를 공유하는 것이다. 즉, 모든 stage에서 bottleneck ratio $b_i = b$로 고정한다. 똑같이 500개의 모델을 만들어 AnyNet$X_A$와 비교했으며, 그림 5의 좌측은 결과이다. 이것으로 보아 bottlenck ratio는 그렇게 큰 차이를 못내는 것 같으며 그림 5의 우측은 b에 따른 결과를 보여준다.

AnyNet$X_C$ 여기서는 AnyNet$X_B$에서 group convolution을 공유했다. 성능 변화는 거의 없어 보이며 그림 5의 중앙을 보면 알 수 있다.

AnyNet$X_D$ 여기서는 AnyNet$X_C$의 좋은 네트워크와 안좋은 네트워크를 탐구했으며, 그림 6에서 볼 수 있다. 결과적으로 widths가 증가할 수록 성능도 증가하는 패턴을 발견했다. 따라서, $w_{i+1} \geq w_i$라는 디자인 원칙을 발견했다. 그림 7에서 확연하게 알 수 있다.

AnyNet$X_E$ 여기서는 stage depths $d_i$를 width와 같이 형성했다. 즉, $d_{i+1} \geq d_i$이다. 그림 7에서 볼 수 있으며, $w_i$와 $d_i$는 각각 4!만큼 줄어들었다. 따라서, $O(10^7)$만큼 가진다. <-> $O(10^18)$

3.3 The RegNet Design Space

그림 8의 상단좌측은 AnyNet$X_E$의 최고 20개의 모델을 보여준다. 또한, grady curves는 각각 모델의 편차를 보여주는데, 패턴이 나타난다. ($w_j=48\cdot(j+1)\ and\ 0 \leq j \leq 20$)이다. 놀랍게도 이 사소한 linear fit은 상위 모델에 대한 네트워크 너비 증가의 모집단 추세를 설명하는 것 같다. 하지만, linear fit는 각 블럭마다 다른 width를 할당하는 것처럼 보일 수 있다.

이러한 패턴을 개별적인 모델들에 적용하기위 piecewise constant function을 양자화하는 전략을 선택했다. 즉, 각 block의 너비들을 linear parameterization로 할당한다

$$ u_j = w_0+w_{\alpha}\cdot j \quad for \quad 0 \leq j < d $$

$d$: depth, $w_0 >0$: initial width, $w_\alpha >0$: slop, 그리고 각 block $j<d$에서 다른 너비인 $u_j$를 가진다.

$u_j$를 양자화 하기위해서 추가적인 매개변수인 $w_m >0$을 소개한다. 먼저, $u_j$로부터 각 블럭 j 에서 $s_j$를 계산한다.

$$ u_j = w_0 \cdot w_m^{s_j} $$

그 후에, $u_j$를 양자화 하기위해 $s_j$를 반올림하고 블럭당 너비인 $w_j$를 양자화하여 계산한다.

$$ w_j=w_0 \cdot w_m^{\left [ s_j \right]} $$

block당 width인 $w_j$를 stage당 width로 확장하고 $w_i=w_0\cdot w_m^i$와 같이 된다. 그리고 블럭의 갯수인 $d_i=\sum_j1[\left [s_j \right] = i].$가 된다. 4단계 네트워크 만 고려할 때 다른 수의 stage를 발생시키는 매개 변수 조합을 무시한다.

 

AnyNetX에 위의 매개변수화를 적용해서 테스트를 진행했으며, d로 네트워크 깊이를 설정하고 grid search를 통해 $w_0,\ w_\alpha$를 찾았다. 그 후 $w_m$은 관측된 블록당 너비로 예측된 $e_{fit}$라고 불리는 평균 로그 비율을 최소화한다. 그림 8의 상단 우측에서 dashed curves는 양자화 linear fits가 최고 모델 (solid curves)와 유사하다.

fitting error인 $e_{fit}$와 네트워크 에러를 살펴보기위해 그림 8의 하단을 보면 된다. 각 디자인 공간에서 최고 모델이 좋은 linear fits를 가짐에 주목했으며, 실제로 각각의 디자인 공간 안에서 최고 모델은 $e_{fit}$의 좁은 영역 안에 포함된다. 그리고 평균에도 주목했는데, $X_c$에서 $X_E$까지 감에 따라 $e_{fit}$가 개선되며 이것은 $w_i$와 $d_i$가 증가하면 성능도 좋아짐을 나타낸다.

 

더욱더 디자인 공간을 제한했으며, 6개의 파라미터들인 $d,\ w_0,\ w_m, w_\alpha,\ b,\ g$로 구성된다. 각각으로 위의 2~4 수식을 통해 block width와 block depth가 정해지고 이것은 RegNet이라고 부른다. $d<64,\ w_0,w_\alpha <256,\ 1.5 \leq w_m \leq 3$ and $b$ and $g$는 전의 AnyNet$X_E$와 같다.

그림 9의 좌측을 보면 AnyNetX보다 RegNetX가 훨씬 더 좋은 성능을 보인다. 또한 2가지의 단순화를 시켰는데, 그림 9의 중앙을 보면 1) $W_m=2$(stage마다 width는 2배)로 성능을 증가시킴 2) $w_0=w_\alpha$는 수식 2인 선형 매개변수화를 단순하게 만들며 성능 또한 좋아진다. 하지만, 다양성을 위해 이와같은 방법은 사용x 그리고 그림 9의 우측은 RegNetX의 random search 효율성을 보여준다.

표1은 AnyNetX와 RegNetX의 디자인 공간 크기에 대한 표이며, 약 $10^10$만큼 줄었지만 여전히 RegNet은 다양성을 가지고 있다고 주장한다.

3.4 Design Space Generalization

본논문에서 RegNet을 디자인 했지만, 더 일반화된 설정을 발견했다.

일반화를 위해서 먼저 AnyNet을 더 많은 flops, 더 많은 epochs 그리고 5-stage networks로 구성해서 성능을 테스트 했다. 여기서도 RegNet이 성능이 더 뛰어 났으며, overfitting의 징조를 보지 못했다. 이것은 아직도 RegNet이 더 많은 stages 에서도 일반화될 수도 있다는 것이다.

4. Analyzing the RegNetX Design space

RegNetX의 디자인 공간을 분석하고 공통적으로 deep network 디자인에서 많이 선택하는 것을 조사했다. 여기서는 $N=100,\ epoch=25,\ learning\ rate=0.1$로 사용했다.

RegNet trends.

1) depth: 약 20 blocks(60 layers)에서 최적화된다. -> 깊이가 늘어날 수록 성능 증가한다는 일반적인 이론과 다름 2) bottleneck ratio: 1.0에서 최적화된다. -> bottleneck 구조가 좋다는 일반적인 이론과 다름 3) width multiplier: 2.5에서 최적화된다. -> 일반적인 이론은 2배를 보통 한다. 4) 남은 매개변수들: 복잡해질수록 성능이 증가한다.

Complexity analysis.

모든 conv layers의 출력 텐서 크기를 뜻하는 activations에 대한 탐구이다. 그림 12의 상단을보면 actiavtions은 GPUs, TPUs와 같은 메모리가 제한된 하드웨어 가속이의 실행시간에 크게 영향을 준다. 그림 12의 하단에서 특히 모집단의 최고 모델을 보면, activaations는 FLOPs의 제곱근을 증가시키며, 매개변수들도 선형적으로 증가시키며, 실행시간은 선형과 제곱근의 조합으로 설명될 수 있다.

 

RegNetX constrained 위의 결과들을 종합해 새로운 디자인 공간을 정의했다. 1) 그림 11의 상단을 참고하여 $b=1,\ d \leq 40,\ and\ w_m >2$로 설정함. 2) 그림 12 하단을 참고해 매개변수와 activation을 제한함. 3) 따라서, 빠르고, 적은 매개변수와 적은 메모리를 가지는 모델을 만들었으며, 그림 13에서 확인할 수 있다.

보는 것과 같이 모든 FLOPs에서 더 좋은 성능을 보인다.

 

 

Alternate design choices.

최근 모바일 네트워크에서 inverted bottleneck (b<1)와 depthwise conv(g=1)을 강조했는데, 이와 같은 방법은 그림 14 좌측을 보면 성능 저하를 가져오는 것을 확인할 수 있다. 그리고 input image를 증가시키면 도움이 된다고는 하지만, regNetx는 $224\times224$로 고정하는 것이 제일 좋은 성능을 보인다.

SE. 자중 사용되는 Squeeze-and-Excitation (SE) op를 추가해 RegNetY로 부르며 그림 14의 우측과 같이 좋은 성능을 보인다.

5. Comparison to Existing Networks.

ImageNet에서 비교를 위해 RegNet 매개 변수의 25가지로 임의 설정에서 최상의 모델을 선택하고 상위 모델에 대해 100epoch으로 5번 재훈련한다.

 

그림 15와 그림 16은 각각 RegNetX와 RegNetY의 성능을 보여준다. 여기서 흥미로운 패턴을 발견했는데, 상위 플롭 모델은 3 stage에 많은 수의 블럭이 있고 마지막 단계에 적은 수의 블럭을 가지는데 이것은 ResNet과 유사하다.

본 논문의 목표는 공평한 비교와 쉽고 재생산할 수 있는 baselines를 제공하는 것이다. 따라서, 특별한 학습 구성이나 정규화를 사용하지 않았다.

5.1 SOTA Comparision: Mobile Regime

모바일 영역은 보통 600MF보다 작은 영역을 뜻하는데 표2에서 보는 것과 같이 RegNet이 더 좋은 성능을 보인다.

또한, 비교된 네트워크 구조는 더 긴 학습 시간과 많은 정규화를 사용했기 때문에, RegNet이 더 좋은 성능을 가져올 수 있다고 생각한다.

5.2 Standard Baselines comparison: ResNe(X)t

ResNet과 ResNeXt에 대한 비교이며, 모든 학습 설정은 ResNet과 ResNeXt를 따랐다. 그림 17과 표 3을 보는 것처럼 매우 좋은 성능을 보인다.

activations으로 따로 구별한 이유는 activations의 수가 GPU와 같은 가속기의 실행시간에 영향을 주기 때문이다. 따라서, RegNetX는 적은 실행시간을 가지므로 효과적이다.

5.3 SOTA Comparison: Full Regime

EfficientNet과의 비교이다. EfficientNet을 재구현하였으며, 본 논문 저자들이 정한 학습 설정인 100 epoch과 정규화 비사용을 사용함. 오직 learning rate와 weight decay를 사용했으며, RegNet과 같은 설정이다. 결과는 그림 18과 표 4에서 볼 수 있으며, 적은 flops에서는 EfficientNet이 더 좋지만 큰 flops에서는 RegNetY이 더 좋은 성능을 가진다. 또한, EfficientNet이 더 많은 activations을 가지는 것으로 보이는데, 이것은 추론 시간을 증가시켜 RegNetX-8000이 EfficientNet-B5보다 약 5배 빠르다.

 

6. Conclusion

새로운 네트워크 디자인 표준을 제시했으며, 네트워크 디자인 공간을 디자인 하는 것이 유망있는 기술이면 좋겠다.

 

 

 

 

 

 

 

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Mingxing Tan Quoc V.Le

Abstract

ConvNet들은 공통적으로 고정된 자원안에서 계발되고 그 후에 더 좋은 정확도를 위해 이용가능한 자원을 사용한다. 본 논문에서는 네트워크의 깊이, 너비, 그리고 해상도를 적당히 조절하여 더 좋은 성능을 가져옴을 연구했다. 해당 요소를 'compound coefficient'라고 한다.
또한, neural architecture search 기술을 이용해 EfficientNet이라는 베이스라인을 사용했으며, 8.4배 더 작고 6.1배 더 빠른 내트워크를 만들었다. 물론, SOTA도 기록했다.

1. Introduction

Scaling을 통해 정확도를 올리는 것은 옛날부터 이어져왔다. ResNet이나 GPIpe 같은 모델들이 있다. 현재 scaling 방법에는 총 3가지 정도가 유행하는데, depth (ResNet [1][1]) , width (Wide ResNet [2][2]) 그리고 resolution (Gpipe [3][3]) 이 있다. 위의 3가지 차원을 임의로 scaling 하는 것은 지루한 tuning이 되고 그것 또한 sub-optimal accuracy와 efficiency 일 것이다.

논문에서는, ConvNet scaling 과정에 대해서 다시 생각해보고 연구했다. 주요 물음은 "더 좋은 정확도와 효율성을 달성하기 위해 ConvNet을 scaling하는 원칙에 입각한 방법이 있을까?" 이다. 고정된 비율로 각 요소에 대해 scaling을 하면 적절한 balance를 가질 수 있다. 이러한 방법을 Compound Scaling Method라고 한다. 이 방법은 공평하게 네트워크의 너비, 깊이 그리고 해상도를 scaling 하는 것이다. 예를 들어 제한된 자원이 $2^N$이라면, 깊이는 $\alpha^N$, 너비는 $\beta^N$ 그리고 해상도는 $\gamma^N$이다. 상수의 계수는 original model에서 grid search를 통해서 결정된다. 밑의 그림에서 확인 할 수 있다.

직갑적으로, 복합체 scaling 방법은 의미가 있다. 본 논문은 width, depth 그리고 resolution 세가지 사이의 관계에 대해 수량화한 첫번째 논문이다.

특히, 모델 scaling의 유효성은 베이스라인 네트워크에 의존 적인데, NAS를 사용해 EfficientNet을 베이스라인으로 사용했다. 그림 1을 보면 현저한 차이를 볼 수 있다. 이 때 당시의 최고 성능인 GPipe [3][3] 보다 8.4배 작은 파라미터를 가지며, 6.1배 더 빠르다. 또한,** EfficientNet들은 ImageNet에서 학습한 후 transfer learning을 통해 다른 데이터 셋에서도 좋은 성능을 보임을 보였다.**

2. Related Work

ConvNet Accuracy: AlexNet을 시작으로 ConvNet들은 정확도를 올리기 위해 더욱 더 커져갔다. 최근에는 GPipe 라는 제일 좋은 성능을 가지는 네트워크가 나왔는데, 특별한 pipeline parallelism library를 사용해 네트워크를 나누고 다른 accelerator를 각 부분에 분배하는 방식을 사용한다. 또한, ImageNet에서 성능이 좋으면 다른 데이터 셋으로 transfer learning에서 좋은 성능을 보였다. 하지만, 더 높은 정확도가 중요하지만, 하드웨어 메모리에 제한은 있으므로, 더 좋은 효율성을 얻는 것이 중요해졌다.

ConvNet Efficiency: Deep ConvNet들은 너무 과도한 파라미터들을 가진다. 따라서 모델 압축 기술이 나왔는데 [4][4], [5][5], 그리고 [6][6] 등이 있다. 또한, 직접 모델을 구축한 ,SqueezeNet, MobileNet 그리고 ShuffleNet 등이 있다. 최근에는 NAS가 등장해 효과적인 모바일 크기의 ConvNet ( [7][7] [8][8] )등이 등장 했으며 사람이 디자인한 ConvNet들 보다 더 좋은 성능을 보인다. 본 논문에서는 SOTA에 대한 모델 효율성에 집중한다. 그 후에 scaling에 따라 재분류한다.

Model Scaling: ResNet ([1][1]) 과 같은 모델은 네트워크의 깊이에 대해 신경을 썼으며, Wide ResNet ([2][2])과 MobileNet ([9][9])은 네트워크의 너비에 대해 신경을 썼다. 또한, 입력 해상도가 클 수록 좋은 성능을 보이는 것은 잘 알려진 사실이다. 과ㅏ거의 논문들은 깊이와 너비가 다 중요하다고 하지만 여전히 효율성과 정확도를 더 좋게하는 것에 대한 연구는 지속적으로 진행중이다. 본 논문에서는 ConvNet에 대한 너비, 깊이 그리고 해상도의 모든 차원 scaling에 대한 연구이다.

3. Compound Model Scaling

본 섹션에서는 scaling 문제를 공식화 하고 다른 접근법에 대해 소개하고 논문에서 만든 새로운 scaling method를 소개한다.

3.1 Problem Formulation

ConvNet Layer를 $i$라고 할 때, $Y_i=F_i(X_i)$ 이라고 할 수 있다.
$F_i$는 operator, $Y_i$는 출력, $X_i$는 입력 그리고 tensor 모양은 $<H_i, W_i, C_i>$ 이다. 따라서, ConvNet을 다음과 같이 나타낼 수 있다: $N=F_k \odot...\odot F_2 \odot F_1(X_1)=F_k \odot_{j=1...k}F_j(X_1)$
보통 Deep convNet의 경우 각 stage와 같은 구조를 가진다. ResNet의 경우 5개의 stage로 나눠져잇으며, 다운 샘플링을 하는 부분을 제외하고 같은 convolutional type을 가진다. 따라서 밑의 수식과 같이 ConvNet을 표현할 수 있다.
$$
N=\odot_{i=1...s}F_i^{L_i}(X_{<H_i,W_i,C_i>})
$$
i stage에서 $F_i$ layer가 $L_i$번 반복 되는 것을 뜻한다. fig2 (a)는 전형적인 ConvNet을 보여주며, 점점 spatial dimension이 작아지지만, Channel의 수는 증가한다.

일반적인 ConvNet을 디자인 하는 것과 다르게, 본 논문은 네트워크 layer의 구조가 아닌, lenghth, width 그리고 resolution을 변경한다. 물론, 고정적인 상수를 두고 비율을 변화시키는 방법을 사용하였다. 이것을 공식화하면:
$$
\max_{d,w,r} Accuracy(N(d,w,r)) \\
s.t. \quad N(d,w,r)=\odot_{i=1..s} \hat{F}i^{d \cdot \hat{L_i}} (X{<r\cdot \hat{H}_i, r\cdot \hat{W}_i,r\cdot \hat{C}_i}) \\

Memory(N)\leq target_memory \\
FLOPS(N)\leq target_flops
$$

w,d,r 은 각각 width, depth 그리고 resolution을 뜻하며 $\hat{A}$이 들어간 것은 이미 정의된 베이스라인 네트워크를 뜻한다.

3.2 Scaling dimensions

d, w, r은 서로서로 의존적이고 다른 resource constraints 아래에서 바꿔야함으로 scaling이 매우 어렵다. 각각은 다음과 같이 scaling 한다.
Depth (d): scaling network depth는 ConvNet의 정확도를 올리는 간편한 방법중 한가지이다. 하지만, 깊은 네트워크 일수록 gradient vanishing 문제를 해결하기가 어렵다. 하지만, Skip connection과 batch normalization이라는 방법이 나왓지만, 그래도 여전히 깊어질 수록 무조건 좋은 성능을 가져오는 것은 아니다.

Width (w): 더 넓은 너비를 가지는 네트워크는 쉽게 학습되고 fine-grained feature들을 잘 추출할 수 있다. 하지만, higher level feature들을 봅아 오는 걸 어려워하는 경향이 있다.

Resoultio (r): 더 큰 해상도는 더 많은 fine-grained pattern을 찾을 수 있다. 299x299 (Inception), 331x331 그리고 480x480 (GPipe)에 이르는 해상도를 가진 네트워크들도 있다. 하지만, 매우 높은 (560x560) 해상도에서는 도리어 정확도가 떨어지는 경향이 있다.

Observation 1: 너비, 깊이 그리고 해상도를 증가시키면 정확도가 상승하지만 도리어 매우 클 경우 정확도 상승이 없어진다. -> 즉, 적당한 크기가 존재한다는 것이다.

3.3 Compound Scaling

실험적으로, 다른 scaling dimensions들이 의존적이라는 것을 관찰했다. 직관적으로, 더 큰 해상도에서 더 깊은 네트워크나 넓은 네트워크의 정확도가 좋을 것이다. 따라서, 본 논문에서는 단일 dimension에 대해 실험을 진행한 것이 아니라, 여러 조합을 사용해 진행하였다.

위의 그래프를 살펴보면 깊이만 늘린 것보다 해상도와 함께 깊이를 올리는 것이 더 좋은 성능을 가져온다.

Observation 2: 더 좋은 정확도와 효율성을 추구하기 위해서는 너비, 깊이 그리고 해상도를 적절하게 scaling 해야한다.

본 논문에서는 새로운 compound scaling method를 제안하며 compound coefficient $\phi$로 표현한다.
$$
depth:\ d=\alpha^{\phi} \
width:\ w=\beta^{\phi} \
resolution:\ r=\gamma^{\phi} \
s.t \quad \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 \
\alpha \geq1,\beta \geq1, \gamma \geq1
$$

$\alpha,\beta,\gamma$는 grid search를 통해서 결정된다. 일반적으로 FLOPS는 $d,\ w^2,\ r^2$의 배율로 증가한다. 본 논문에서 새로운 $\phi$로 제한을 햇으며, 전체적인 FLOPS는 대략적으로 $2^\phi$만큼 증가한다.

4. EfficientNet Architecture

model scaling은 베이스라인 네트워크를 바꾸는 것이 아니기 때문에, 새로운 mobile-size baseline 인 EfficientNet을 만들었다.

MNAS ([7][7])에서 영감을 얻어 같은 search space와 $ACC(m) \times [FLOPS(m)/T]^w$를 사용했다. $T$는 목표하는 FLOPS 이며 $w=-0.07$로 정확도와 FLOPS 사이를 제어하는 하이퍼 파라미터이다. MNAS랑은 다르게 지연속도보다는 FLOPS를 최적화 하는데 목표를 두었다. 따라서 EfficienNet-B0가 나왔으며, MNASNet과는 유사하지만, 조금 더 많은 FLOPS를 가진다. 밑의 표1에서 구조를 확인할 수 있다. mobile inveted bottleneck인 MBConv를 주요 block으로 두고 squeeze-and-excitation ([10][10]) 최적화도 추가했다.

밑의 2가지 단계를 거쳐 scaling 된다.

  • STEP 1: $\phi=1$로 고정하고 grid search를 통해 $\alpha,\beta,\gamma$를 수식 2, 3에서 찾는다.
  • STEP 2: $\alpha, \beta, \gamma$를 고정한뒤 다른 $\phi$를 적용하여 수식 3을 완성한다.

간략하게 요약하면, 작은 베이스라인 네트워크를 찾고 (STEP 1) 적절한 scaling coefficient들을 찾는다. (STEP 2)

5. Experiments

5.1 Scaling Up MobileNets and ResNets

당시에 대표적인 ConvNet들인 mobileNet과 ResNet에 대한 scaling method를 적용하고 비교했다. 밑의 표3에서 확인할 수 있다.

5.2 ImageNet Results for EfficientNet

첫 문단에서는 ImageNet을 학습하는 환경에 대한 설명들이다.

  • RMSProp optimizer, decay: 0.9, momentum: 0.9
  • BN 사용, momentum: 0.99
  • weight decay: 1e-5
  • Initial learning rate: 0.256, 매 2.4 epoch 마다 decay:0.97
  • SiLU (Swish-1) 사용
  • AutoAugment 사용
  • 잔존확률: 0.8로 stochastic depth 사용
  • dropout 사용, 0.2(B0) ~ 0.5(B7)
  • trainingset에서 25K를 minival set으로 사용
  • validation 도중 최종 validation accuracy 도달 시 early-stopping

위의 표를 보면 비슷한 정확도에서 좀 더 효율적인 구조를 가지는 것으로 확인할 수 있다.

그림1과 그림 5를 비교하면 EfficientNet이 더 작고 효율적이라는 것을 확인할 수 있다.

지연시간 평가를 했으며, 위의 표 4를 보면 확인 할 수 있다.

5.3 Transfer Learning Results for EfficientNet

위의 표6을 보면 transfer learning에 사용한 데이터셋에 대해서 볼 수 있다.

위의 표5를 보면 tranfer learning에 대한 결과를 볼 수 있다.

1) 유명한 모델들인 NASNet-A 와 Inception-v4 에 대한 결과를 비교 했다.
2) 당시 SOTA 인 Gpipe에 DAT를 적용한 것과 비교를 했다.

마지막으로 밑의 그림 6을 보면 각 데이터 셋에서 EfficientNet이 얼마나 효율적인지를 볼 수 있다.

6. Discussion

Efficient 모델과 scaling method에 대한 공헌을 구분하기위해 그림 8을 보면 확연하게 알 수 있다. 다른 scaling method와의 비교를 통해 본 논문에서 제안한 scaling method가 더 효율적인 것을 알 수 있다.

또한 그래프상이 아닌 activation map을 통한 비교를 그림 7에서 볼 수 있다. 확연하게 compound scaling method가 더 잘 나타내는 것을 알 수 있다.

7. Conclusion

깊이, 너비 그리고 해상도를 밸런스있게 하는 것도 중요하지만, 더 나은 정확성과 효율성을 방해한다는 사실을 발견했다. 본 논문에서는 더 적은 FLOPS와 더 좋은 성능을 가진 EfficientNet 모델을 발견했다.

[1]: https://arxiv.org/abs/1512.03385 ""ResNet""
[2]: https://arxiv.org/abs/1605.07146 "Wide ResNet"
[3]: https://arxiv.org/abs/1811.06965 ""GPipe""
[4]: https://arxiv.org/pdf/1510.00149.pdf "Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding"
[5]:https://arxiv.org/abs/1802.03494 "Amc: Automl for model compression and acceleration on mobile devices"
[6]:https://arxiv.org/abs/1804.03230 "Netadapt: Platform-aware neural network adaptation for mobile applications"
[7]:https://arxiv.org/abs/1807.11626 "MNASNet"
[8]:https://arxiv.org/abs/1812.00332 "ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware"
[9]: https://arxiv.org/abs/1704.04861 ""MobileNet""
[10]: https://arxiv.org/abs/1709.01507 ""SENet""

+ Recent posts