안녕하세요. 지난 포스팅의 [IC2D] Progressive Neural Architecture Search (ECCV2018)에서는 효율적인 NAS 알고리즘을 위해 searching space를 획기적으로 줄이고 전체 모델을 학습하기 않고 각 모델들의 성능을 대략적으로 유추할 수 있는 predictor에 대한 내용을 보았습니다. 오늘 역시 주제는 NAS입니다. 하지만 지금까지 보았던 MobileNetV1 및 MobileNetV2를 기반으로 구성되었기 때문에 쉽게 이해할 수 있습니다.
Background
기본적으로 효율적인 모델은 높은 정확도도 중요하지만 상대적으로 낮은 지연속도 (latency)와 함께 전기소비량을 적게 사용해서 배터리 사용시간을 늘리는 것이 중요합니다. 이는 지난 MobileNetV1 부터 시작해서 끊임없이 효율적인 모델을 개발하기 위한 노력에서도 볼 수 있습니다. 특히, 타겟 지연속도에 맞추어 플랫폼에 상관없이 NAS 알고리즘을 적용할 수 있는 MNAS는 오늘 말씀드릴 MobileNetV3의 가장 중심이 되는 내용입니다. 뿐만 아니라, 전체 네트워크 구조를 MNAS로 찾은 뒤 계층별 상세 파라미터를 NetAdapt라는 알고리즘을 이용해서 한번 더 서칭하게 됩니다. 이러한 MobileNetV3는 근본적으로 MobileNetV2의 구조를 가지고 있지만 새로운 비선형함수인 hard-swish 함수도 함께 제안하여 quatization-friend한 모델을 제안하게 되었습니다.
Efficient Mobile Building Blocks
1). MobileNetV1
현재 수많은 효율성이 강조한 모델들이 출판되어 활용되고 있지만 근본 모델은 MobileNetV1일 것 입니다. 그전에 제안된 많은 논문들은 성능을 중심으로 강조하였죠. 대표적으로 VGG, ResNet, Wide ResNet 등이 있겠습니다. 이러한 모델들의 공통적인 특징 중 하나는 깊이 (채널)에 대한 합성곱과 공간에 대한 합성곱을 동시에 적용한다는 점 입니다. 이로 인해 파라미터의 개수와 모델의 레이턴시가 증가하는 문제가 발생하였죠. 그 와중에 MobileNetV1은 Depth-wise Separable Convolution을 통해 이러한 문제를 해결하였습니다.
위 그림에서 (a)는 전형적인 합성곱 연산, (b)는 깊이별 합성곱 연산, (c)는 포인트별 합성곱 연산을 보여주고 있습니다. 기본적으로 DSC는 깊이별 및 포인트별 연산을 분해하여 사용하기 때문에 연산량이 필터 크기의 제곱만큼 단일 계층에서 감소하게 됩니다. 하지만, MobileNetV1의 문제는 성능하락폭이 너무 큰게 문제였죠.
2). MobileNetV2
이러한 MobileNetV1의 문제를 해결하기 위해 MobileNetV2에서는 Linear Bottleneck과 Inverted Residual Structure를 통해 고차원의 특징을 효율적으로 복원하는 방법에 대해서 설명합니다.
3). MNASNet
지금까지 제안된 Neural Architecture Search 알고리즘들은 실제로 새로운 플랫폼에서 다시 검색하기 부담스럽습니다. PNAS에서는 어느정도 검색 공간을 줄이기는 했지만 여전히 $10^{12}$ 정도로 매우 큽니다. MNASNet은 이러한 문제를 해결하기 위해 MobileNetV2 구조를 기반으로 SE Block을 추가해 다양한 플랫폼에서 효율적으로 검색할 수 있는 방식을 제안합니다.
Network Search
본격적으로 오늘 설명드릴 MobileNetV3는 3개의 키워드만 기억하시면 됩니다. 각각 MNASNet, NetAdapt, h-swish 함수입니다. MNASNet은 방금도 말씀드렸지만 MobileNetV2를 기반으로 새로운 모델을 검색하는 알고리즘입니다. MobileNetV3는 이러한 MNASNet를 기본으로 초기 학습할 모델을 검색합니다. 일단, 기존의 MNASNet은 다음의 다중-목표 보상을 부여합니다.
$$ACC(m) \times \lfloor \frac{LAT(m)}{TAR} \rfloor^{w}$$
여기서, $ACC(m)$과 $LAT(m)$은 각각 검색과정에서 얻은 $m$번째 모델의 정확도와 레이턴시를 의미합니다. 그리고 $TAR$은 저희가 MNASNet을 통해 최종적으로 줄이고자 하는 레이턴시이죠. 이때, 본 논문의 저자들은 작은 모델에서 레이턴시에 대한 성능 변화가 굉장히 큰 것을 관찰하였습니다. 따라서, 이를 조절하는 파라미터인 $w$를 -0.15에서 -0.07로 절반 가량 감소히겼습니다. 이를 통해 서로 다른 레이턴시에 대한 큰 정확도 변동량을 보완할 수 있는 것이죠. 나머지 수식은 건들지 않고 이 상태로 MNASNet 알고리즘을 수행합니다. 그러면 어떤 초기 학습 모델을 얻을 수 있는 것이죠. 이러한 과정은 모델의 전체적인 구조를 선택하는 것으로 이제 저희는 모델의 각 계층별 상세 파라미터를 업데이트하는 과정이 필요합니다.
본 논문에서는 이를 위해 NetAdapt 알고리즘을 이용합니다. 기본적인 NetAdapt 알고리즘은 다음과 같이 동작합니다.
NetAdapt 알고리즘에서는 proposal이라는 개념이 있습니다. 이는 단순히 NAS에서 모델과 같은 것이라고 보면 됩니다. 이 단계 역시 궁극적인 목표는 정확도는 최대한 보존하되 모델의 레이턴시는 줄이는 것이 목표입니다. 따라서, 기존의 목표함수인 $\Delta ACC$를 최소화하는 것이 아니라 $\frac{\Delta ACC}{\Delta latency}$를 최대화하는 것을 목표료 합니다. 이 과정에서 허용하는 연산은 크게 두 가지 입니다.
Network Improvements
MNASNet과 NetAdapt 알고리즘을 통해 어느정도 괜찮은 모델을 얻었다고 해도 본 논문에서는 더 낮은 레이턴시를 가지는 모델을 얻기 위한 노력을 시행합니다. 이때, 저자는 최종적으로 얻은 모델의 마지막 및 초기 계층은 상대적으로 높은 연산량을 가지는 것을 발견합니다. 이러한 문제를 해결하기 위해 마지막 계층은 다음과 같이 수정합니다.
연산량이 많은 이유는 Average Pooling을 수행하기 전 Invertible Residual Block을 사용하기 때문입니다. 따라서, 이 과정을 Average Pooling 다음으로 옮겨주면 어느정도 해소가 되는 것이죠. 또한, 초기 계층의 경우에는 필터의 개수를 더 줄였다고 언급하였습니다.
마지막으로 저자는 quantization-friendly한 비선형 모델을 만들기 위해 hard-swish 함수를 제안합니다. 기존의 sigmoid 함수는 곡선 형태이기 때문에 미분과정이 복잡하지만 hard sigmoid 함수는 구간 별로 전부 미분이 상수이기 때문에 연산량에서 훨씬 빠릅니다. 이를 hard swish 함수에 적용하는 것이죠.
MobileNetV3 Architecture
1). MobileNetV3-Large
2). MobileNetV3-Small
Experiment Results
MobileNetV3는 위 표와 같이 다양한 플랫폼에서 효율적으로 높은 성능을 달성하는 것을 볼 수 있습니다.
'논문 함께 읽기 > 2D Image Classification (IC2D)' 카테고리의 다른 글
[IC2D] Selective Kernel Networks (CVPR2019) (0) | 2023.09.28 |
---|---|
[IC2D] Drop an Octave: Reducing Spatial Redundancy in Convolution Neural Networks with Octave Convolution (ICCV2019) (0) | 2023.09.20 |
[IC2D] Progressive Neural Architecture Search (ECCV2018) (0) | 2023.09.05 |
[IC2D] Dual Path Networks (NIPS2017) (0) | 2023.08.30 |
[IC2D] CBAM: Convolutional Block Attention Module (ECCV2018) (0) | 2023.07.15 |