-
Efficient net 정리paper(논문 정리) 2021. 10. 4. 19:22
Efficient net 말 그대로 효율적인 network를 의미한다.
딥러닝 모델을 설계할 때 어떻게 하는것이 효율적인지에 관해 얘기를 한다. NAS(neural architecture search)에 관해 얘기하는 것으로 기존의 모델 설계 방법과 상관관계를 분석하여 효율적인 모델이 어떻게 될 수 있는지를 얘기한다.
compound scaling이라는 모델 scaling기법을 설명하고 있다.
논문이 하고자 하는 것을 한문장으로 나타내면 아래와 같다.
In this paper, we want to study and rethink the process of scaling up ConvNets.
model scaling
가장 핵심이 되는 내용이 그림 한장에 표현되어 있다.
base line을 만들고 성능과 효율을 올리기 위해 사용할 수 있는 scaling 방법이다.
성능(정확도)를 높히는 것도 중요하지만 성능이 조금 떨어지더라도 빠른 수행시간 효율이 중요한 경우도 있다 그때 다양하게 스케일을 변화시켜 모델을 얻어낸다.
일반적으로 모델을 설계할 때 여러 경우의 수가 있었다. b,c,d로 표현되어 있는데 하나 씩 알아보자
(a) baseline : 말그대로 base line이다. 모델을 설계하고 다양한 방법으로 scale를 키워서 성능을 올리는 방법을 사용한다.예를 들어 resnet의 경우는 18-200까지 scale를 올리는 방법으로 모델을 바꿀 수 있다.
(b) width scaling : 각 레이어의 너비를 넓히는 방법으로 스케일을 키운다. 레이어의 너비를 넓히는 것은 채널의 개수를 많이 사용하는것을 의미한다. 흔하게 사용하는 기법이다. wideresnet, mobilenet에서 사용한 방법이다.
(c) depth scaling : 레이어를 많이 쌓아서 깊게 만드는 방법으로 대표적으로 resnet18 - 200까지 레이어의 갯수를 늘려서 스케일을 높힌것을 의미한다고 보면 된다.
(d) resolution scaling : 많이 사용되지는 않지만 입력 이미지의 해상도에 따라 모델을 변경하는 것이다. 입력되는 이미지의 해상도가 높다면 각 레이어에서는 높은 receptive field가 필요하다. 작은 해상도에서 사용하는 모델을 그대로 사용하면 성능이 좋지 못하기 때문에 해상도에 따라서도 모델 스케일을 조정하는 것이 필요하다.
종합하자면 모델 스케일을 변화시킬때 고려 요소는 깊이,너비,해상도 세개를 꼽을 수 있다.
compound scaling란 세가지 변수를 모두 고려하여 값을 설정하여 모델을 찾는것을 의미한다.
compound scaling
일반적인 모델의 경우 아래의 식을 따른다고 볼 수 있다.
간단하게 F가 레이어들을 의미하고 X는 입력이다. 입력된 값은 레이어들을 지나면서 최종적으로 N으로 나온다.
식을 간단하게 표현하면 다음과 같다.
이 논문에서 최종적으로 하고싶은 것은 다음과 같다.
d,w,r은 각각 depth, width, resolution 으로 모델 scale up에 사용할 변수들이고 정확도가 세개의 변수를 통해 가장 높은 정확도를 가지는 d,w,r을 찾는 것이다.
또한 resource는 한정되어 있으므로 메모리와,FLOPS의 제한을 두어 이 안에서 가장 높은 정확도를 나타내는 w,d,r 을 찾는것이 목표이다.
w,d,r에 따른 성능을 나타내는데 w,d,r 초기에는 가파르게 오르다가 어느 정도 상승을 하면 수렴하는 모양을 보인다.
FLOPS는 적게 가져가면서 높은 정확도를 얻는 것이 목표이므로 이 3개를 잘 조합해서 사용하면 효율적이면서 좋은 성능을 나타내는 모델을 얻을 수 있다.
w,d,r은 위의 식에 맞게 설정해야 한다고 말하고 있다. phi는 사용자가 지정하는 변수로서 제한된 resource에서 사용하는 변수이다.
w와 r은 증가하면 제곱으로 FLOPS가 증가하므로 제곱의 형태를 띈다.
d * w^2 * r^2 가 2에 수렴해야하고 각각의 값은 1보다 커야 한다고 말하고 있다.
Efficient Net 구조
Mnas net의 구조에서 영감받아서 baseline으로 삼고 compound searching을 통해 scale를 변화 시킨것을 모델로 사용했다.
MnasNet의 구조이고 w,d,r은 아래의 단계로 찾았다.
실험
다른 모델들과의 비교에서 정확도와 파라미터수, FLOPS모두 좋은 성능을 나타낸것을 볼 수 있다.
정확도의 측면에서는 큰 차이점이 없다. 하지만 가장큰 변화를 보인것은 params와 FLOPs로 드라마틱한 변화를 보여준다.
모델의 연산량은 극적으로 줄이면서 높은 정확도를 유지한다는 측면에서 뛰어난 모델이라고 볼 수 있다.
mobilenet, resnet에 compound searching을 통해서도 compound searching에 대해서 유효성을 실험했다.
base line에 스케일을 다르게 주고 정확도와 FLOPS를 측정했을때, w,d,r만 조정해서 scale을 높인것보다 높은 정확도를 보였으며 FLOPS는 크게 변하지 않음을 보여주었다.
다양한 데이터 셋에 transferlearning을 했을때도 높은 성능을 나타냈으며
같은 Efficient net에서도 compound searching을 적용하여 scale을 다르게 했을경우 더 좋은 성능을 나타냈다.
내 생각
흥미로운 결과였다. 모델을 스케일을 변화시킬때 고려해야하는것이 많기 때문에 어떤것을 바꾸는게 더 좋은지 쉽게 판단하기가 쉽지않다.
이 논문에서는 compound searching을 통해 scale을 변화시키는 법을 기술하였고 성능에서도 뛰어난 결과를 보였다.
하지만 또 다른 생각으로는 실험 결과의 정확도는 비슷 비슷함을 알 수 있다.
모델의 성능은 소수점싸움이 된것같고 성능은 유지하면서 효율을 높이면서 빠르게 학습되는것이 중요해진것 같다.
※ 참고 블로그
'paper(논문 정리)' 카테고리의 다른 글
SR-GAN 정리 및 코드 (0) 2021.10.06 FCN 논문 생각 정리 (0) 2021.10.04 UNIT (Unsupervised Image to Image Translation Network) (0) 2021.04.27