[논문 리뷰] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

권유진·2022년 6월 26일
0

논문 리뷰

목록 보기
7/17

Abstract

  • CNN은 고정된 비용으로 발전되어왔고 만약 자원이 더욱 있었다면 성능이 더 올랐을 것이다.
  • 해당 논문에서는 모델의 크기를 체계적으로 조절하고 신경망의 깊이, 너비, 해상도의 균형을 맞추면 성능을 더욱 높일 수 있을 것이라고 말한다.
  • 이러한 관점으로 새로운 크기 조정 방법을 제안한다.
    • 복합계수(coefficient)를 사용해 균일하게 깊이, 너비, 해상도의 차원을 조절
    • MobileNet과 ResNet을 크기 조정한 방법을 제안
  • CNN기반 SOTA 모델보다 8.4배 더 작고 6.1배 더 빠르지만 SOTA인 EfficientNet 제안

Introduction

  • Covnet의 크기 증가는 정확도를 더욱 높이기 위해 널리 사용된다.
    • ResNet은 layer를 더 많이 가져가면서 크기 증가
    • GPipe는 baseline 모델보다 크기를 4배 크게 가져가면서 정확도 상승시켰다.
    • Convnet의 크기를 증가시키는 방법은 많다.
      • 가장 쉬운 방법은 크기, 너비를 늘리는 것
      • 해상도 크기 증가
  • 이전까지는 깊이, 너비, 해상도 중 하나만 조정하는 것이 일반적
    • 2,3차원을 조정하는 것은 가능하지만 수동적으로 해야하고 정확도, 효율성 둘 다 최적의 값이 아니다.
  • 해당 논문에서는 ConvNet의 크기를 증가시키는 과정을 다시 생각해본다.
    • 특히 효율성과 정확도 둘 다 가져가면서 크기를 증가시키는 원칙적인 방법을 개발한다.
  • 해당 연구에서 너비, 깊이, 해상도의 차원을 균형을 맞추는 것은 매우 중요하다는 것을 발견
    • 일정한 비율로 크기를 증가시키는 것이 가장 균형적이다.
    • 이것을 기반으로 효율적인 compound scaling 방법을 제안
  • 고정된 크기 계수로 너비, 깊이, 해상도를 균형적으로 증가시킴
    • 만약 2N2^N배 더욱 계산 자원을 사용하기를 원한다면, 깊이, 너비, 해상도 모두 αN,βN,γN\alpha^N, \beta^N, \gamma^N배 증가시킨다. ($\alpha, \beta, \gamma = $계수)
  • 복합 크기 조정 방법은 input이 클 수록, 신경망이 더 많은 레이어를 필요로 하고 receptive field를 증가시켜야 하고 더 많은 채널을 확보해야하기 때문에 타당하다.
  • 또한 신경망의 너비와 깊이 사이에는 특정 관계가 있다.
    • 해당 연구에서 처음으로 밝혀냄
    • MobileNet과 ResNet에서 잘 작동함
  • 모델의 크기를 증가시키는 것의 효과성은 베이스라인 신경망에 의존한다.
    • 새로운 베이스라인 신경망을 발전시키기위해 새로운 신경망 구조를 사용했다.
    • 그리고 가족 모델을 얻기위해 크기를 증가시켰다. (EfficientNet)
      • 다른 모델 성능 능가, 8.4배 더 적은파라미터, 6.1배 빠른 추론 속도

ConvNet Accuracy

  • AlexNet이 2012년 ImageNet에서 우승한 후, ConvNet은 모델이 커지면서 더욱 정확해졌다.
    • 2014년 우승한 GoogLeNet은 640만개 파라미터로 1위 달성
    • 2017년 우승한 SENet은 1억 4500만개 파라미터로 1위 달성
    • GPipe는 최근 5억 5700만개 파라미터로 84.3% 검증 정확도 달성
      • 하지만 모델의 크기가 너무 커서 전문화된 파이프라인 구조에서만 학습 가능
  • 대부분 ImageNet을 위해 모델링되었지만 전이학습을 통해 다른 데이터셋에서도 좋은 성능 발휘
  • 높은 성능은 매우 중요하지만 하드웨어 메모리의 한계에 마주해서 더욱 효율적으로 성능을 향상시키는 것이 중요하다.

ConvNet Efficiency

  • 깊은 ConvNet은 종종 파라미터가 매우 많은다.
  • 모델 압축은 효율성을 정확도와 거래해 모델의 크기를 줄이는 것이다.
  • 핸드폰이 어디에나 있기에 들고다닐 수 있을 만한 효율적인 ConvNet이 흔해졌다. (SqueezeNet, MobileNet, ShuffleNet)
  • 최근 신경망 구조를 점점 효율적인 들고다닐만한 크기의 ConvNet으로 고안하는 것이 유행했다.
    • 네트워크의 너비, 깊이, kernel type, 크기를 조정함으로써 더욱 효율적으로 만들었다.
  • 하지만 더욱 큰 모델에 어떻게 적용할지는 불명확하다.
  • 해당 연구에서는 매우 큰 ConvNet의 효율성에 초점을 맞춘다.
    • 이를 위해 모델 크기를 재조정했다.

Model Scaling

  • ConvNet의 크기를 조절하는 여러가지 방법이 있다.
    • ResNet은 깊이(레이어)를 통해 크기를 조절했다.
    • WideResNet과 MobileNet은 너비(채널)를 통해 크기를 조절했다.
  • 커다란 input 이미지 크기가 더 많은 FLOPs를 사용하며 정확도에 도움이 되는 것은 널리 알려져있다.
  • 신경망의 깊이, 너비 둘 다 ConvNet의 표현력에 중요하고 어떻게 ConvNet을 효율성과 정확성 모두 챙기면서 효율적으로 크기를 조절할 지는 여전히 열린 문제다.
  • 이 연구는 체계적으로 ConvNet의 너비, 깊이, 해상도 삼 차원의 크기를 조절하는 것을 다룬다.

Compound Model Scaling

Problem Formulation

  • 합성곱 레이어 ii는 다음과 같이 정의된다.
    • Yi=Fi(Xi)Y_i = F_i(X_i)
      • FiF_i: operator, YiY_i: output tensor, XiX_i: input tensor(Hi,Wi,CiH_i, W_i, C_i)
        • Hi,WiH_i, W_i: 공간 차원, CiC_i: 채널 차원
  • ConvNet NN은 다음과 같이 정의
    • N=FkF2F1(X1)=j=1,,kFj(X1)N = F_k \odot \dots \odot F_2 \odot F_1 (X_1) = \odot_{j=1, \dots, k} F_j(X_1)
    • ConvNet은 종종 여러 개의 stage로 나뉜다.
      • 각 stage는 동일한 구조를 보유
      • ResNet은 5개의 Stage로 나뉨
      • N=i=1,,nFiLi(X(Hi,Wi,Ci)N = \odot_{i=1, \dots, n} F_i^{L_i}(X_{(H_i, W_i, C_i})
        • FiLiF_i^{L_i}는 stage ii에서 FiF_iLiL_i번 반복
  • 일반적인 모델은 최상의 구조를 찾기위해 FiF_i에 집중한다.
    • 하지만 모델의 크기 조정은 구조 변화 없이 길이, 너비(Li,CiL_i, C_i)를 증가시키고 또는 해상도(Hi,WiH_i, W_i)를 조절한다.
    • 모델의 공간을 줄이기 위해, 모든 레이어가 균일한 비율로 변화하도록 제한
    • 우리의 목적은 고정된 자원으로 최상의 정확도를 내는 것이다.
      maxd,w,r  Accuracy(N(d,w,r))s.t.  N(d,w,r)=i=1,,sF^idL^i(rH^i,rW^i,rC^i)Memory(N)targetmemoryFLOPS(N)targetflopsmax_{d,w,r} \; Accuracy(N(d,w,r))\\ s.t. \; N(d,w,r) = \odot_{i=1, \dots, s} \hat F_i^{d \cdot \hat L_i} (r \cdot \hat H_i, r \cdot \hat W_i, r \cdot \hat C_i)\\ Memory(N) \le target_memory\\ FLOPS(N) \le target_flops
  • w,d,rw, d, r은 신경망의 너비, 깊이 해상도를 크기 조절하기 위한 계수이다.
  • F^i,L^i,H^i,W^i,C^i\hat F_i, \hat L_i, \hat H_i, \hat W_i, \hat C_i는 사전 정의된 파라미터이다.

Scaling Dimensions

  • 최적의 d,w,rd, w, r는 다른 것에 의존하고 값은 제약사항에 따라 변한다는 어려움 존재
    • 그래서 기존 방법은 3개의 차원 중 1개만 크기 조절 했다.
  • Depth (d)
    • 깊이 조절은 ConvNet에서 사용되는 가장 흔한 방법이다.
    • 신경망이 깊을 수록 더 풍부하고 복잡한 feature을 포착하고 새로운 task를 잘 일반화한다.
    • 더욱 깊은 신경망은 사라지는 경사 문제로 인해 학습시키기 어렵다.
      • skip-connection, batch normalization 같은 방법이 기법 사용
    • ResNet-1000과 ResNet-101은 비슷한 정확도를 갖고 있다.
      • 계수 dd에 따른 base model의 성능을 살펴보니 더 깊은 모델일수록 정확도의 증가량이 감소하였다.
  • Width (w)
    • 너비 확장은 주로 작은 크기의 모델에서 많이 사용된다.
    • 넓은 신경망은 세밀한 feature를 잘 포착하고 학습하기 쉬운 경향이 있다.
    • 하지만 매우 넓고 얕은 모델은 고차원의 feature를 찾기는 어렵다.
    • ww가 커져 모델이 넓어질수록 정확도를 빠르게 포화된다.
  • Resolution (r)
    • 입력 이미지의 높은 해상도는, ConvNet이 더욱 세밀한 패턴을 포착할 수 있도록 한다.
    • 이전에는 224*224를 사용했지만 최근에는 정확도 향상을 위해 299*299, 331*331을 사용한다.
    • GPipe는 480*480으로 SOTA를 달성했다.
    • 600*600과 같은 더욱 높은 해상도는 객체 탐지와 같은 task에서 많이 사용된다.
    • 더욱 높은 해상도일수록 정확도는 증가하지만 증가량은 해상도가 높아질수록 감소한다.
  • Observation1
    • 신경망의 너비, 깊이, 해상도를 향상시키는 것은 정확도를 향상시키지만, 그 증가량은 모델이 커질수록 감소한다.

Compound Scaling

  • 서로 다른 차원의 크기 조절은 서로 독립적이지 않다.
  • 더 높은 해상도를 다루기 위해서는 신경망의 깊이가 증가해야한다.
    • receptive field가 더 큰 이미지에서 feature을 잘 포착하는 것을 돕기 위해
    • 동일하게 더욱 세밀한 패턴 포착을 위해 너비도 증가시켜야 한다.
  • 그러므로 서로 다른 차원의 크기를 조절할 때는 균형을 맞춰야한다.
    • 실험 결과, base model의 계수를 모두 1로 했을 때는 정확도가 빠르게 포화됐고, 여러 차원을 같이 증가시킬 경우 가장 성능이 높았다.
  • 그렇기 때문에 해당 논문에서는 복합적인 크기 조절 방법을 제안한다.
    • 복합 계수 ϕ\phi 사용
    • d=αϕ,w=βϕ,r=γϕs.t.αβ2γ22(α1,β1,γ1)d = \alpha^{\phi}, w = \beta^{\phi}, r = \gamma^{\phi}\\ s.t. \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 (\alpha \le 1, \beta \le 1, \gamma \le 1)
    • α,β,γ\alpha, \beta, \gamma는 Grid Search를 통해서 탐색
      • 너비, 깊이, 해상도에 자원을 어떻게 할당할 지 결정
    • ϕ\phi는 유저가 설정
  • FLOPs는 d,w2,r2d, w^2, r^2에 비례하여 증가
    • 위 방법에서는 FLOPs가 α,β2,γ2\alpha, \beta^2, \gamma^2^\phi에 비례하여 증가
    • αβ2γ22\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2로 제한을 해서 FLOPs는 대략적으로 2ϕ2^{\phi}로 증가한다.

EfficientNet Architecture

  • 모델의 크기 조정이 F^i\hat F_i를 바꾸지 않기 때문에 baseline network 설정은 중요하다.
  • 정확도와 FLOPS 모두 고려하여 다중 목표 신경망 구조 검색을 활용해 baseline 신경망 발전시켰다.
    • 검색 공간은 (Tan et al., 2019)와 동일하게 하였고 최적화 목표로 ACC(m)\[FLOPS(m)/T]ACC(m) \cdot \[FLOPS(m)/T]를 사용
      • mm: 모델, TT: target FLOPS, ww: 정확도와 FLOPS 사이 trade-off 관리
    • 탐색을 통해 효과적인 신경망 EfficientNet-B0를 발견
      • MnasNet과 유사하지만 조금 더 크다.
      • 주요 블록은 mobile inverted bottleneck MBConv
      • squeeze-and-excitation 최적화 기법 추가
  • compound scaling
    • 계산 효율성을 위해 우선 작은 모델에서 파라미터 탐색 후 모델 크기 조정
      • ϕ=1\phi=1로 고정하고 자원을 두 배 더 사용할 수 있다고 가정
      • α,β,γ\alpha, \beta, \gamma를 Grid Search를 통해 탐색
        • α=1.2,β=1.1,γ=1.15\alpha=1.2, \beta=1.1, \gamma=1.15
      • α,γ,β\alpha, \gamma, \beta를 고정하고 ϕ\phi를 조정해 모델 크기 조정
        • EfficientNet-B1 ~ B7까지 생성

Experiments

Scaling Up MobileNets and ResNets

  • compound scaling의 검증을 위해, 널리 사용되는 MobileNets과 ResNet에 적용
    • 한 개의 차원만 조절하는 기존 방식보다 compound scaling이 더욱 성능을 증가시킴

ImageNet Results for EfficientNet

  • EfficientNet을 ImageNet 데이터로 학습
    • RMSProp(감소 0.9, 모멘텀 0.9, 배치 정규화 모멘텀 0.9,가중치 감소 1e-5)
    • 초기 학습률은 0.256, 2.4 에폭마다 0.97씩 감소
    • 활성화 함수로 SiLU 사용
    • AutoAugment, stochastic depth(0.8) 사용
    • EfficientNet-B0는 dropout 0.2, B7는 0.5 적용
  • 모든 EfficientNet은 비슷한 성능이지만 훨씬 적은 파라미터 보유
    • B7은 GPipe보다 8.4배 작은 모델로 정확도 84.3% 달성
      • 이는 좋은 구조, 크기 조정, 학습 방법에서 나왔다.
    • B3는 ResNeXt-101보다 18배 FLOPS가 작지만 성능은 더 높다.
    • B1은 ResNet-152보다 5.7배 빠르고, B7은 GPipe보다 6.1배 빠르다.

Transfer Learning Results for EfficientNet

  • ImageNet 데이터로 사전 학습 후 여러 데이터셋으로 fine-tuning해 성능 평가
  • 9.6배 적은 파라미터로 8개의 데이터셋중 5개 데이터셋에서 SOTA 달성

Discussion

  • 모든 scaling 방법은 정확도와 FLOPS를 모두 증가시킨다.
    • 하지만 coumpound scaling은 정확도를 더 많이 증가시킨다.
profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글