안녕하세요. 지난 포스팅의 [IC2D] Dual Path Networks (NIPS2017) 에서는 HORNN을 기반으로 ResNet과 DenseNet의 장점과 본질적인 한계점에 대해 분석하고 이를 해결하기 위한 DPN에 대한 설명을 하였습니다. 오늘은 저와 익숙하지 않은 주제인 Neural Architecture Search (NAS)에 대한 논문을 가져왔습니다. 오늘 소개할 모델은 PNAS로 기존 NASNet에 비해 훨씬 적은 search space를 정의함으로써 효율적인 모델을 구현하였습니다.
Background
기본적으로 NAS는 두 가지 방법론으로 분류할 수 있습니다. 첫번째는 진화 알고리즘 (Evolutionary Algorithm; EA) 기반으로 각각의 뉴럴 네트워크를 문자열로 인코딩하는 것으로 시작합니다. 다음으로 유전 알고리즘 (돌연변이 및 재조합)을 수행하여 각 문자열에 대해 학습 및 평가를 수행합니다. 이때, 최고의 성능을 가지는 뉴럴 네트워크만 살리고 나머지 모델들은 제거합니다. 해당 뉴럴 네트워크는 자식 모델을 생성하여 위 과정을 반복하게 됩니다. 두번째는 강화학습 (Reinforcement Learning; RL) 기반으로 기존의 NASNet에서 수행한 방법입니다. 지난 포스팅에서도 설명했지만 RNN Controller를 도입하여 cell 기반의 뉴럴 네트워크를 구성합니다. 이때, 보상은 검증 성능을 기준으로 부여합니다.
한눈에 보시면 아시겠지만 NAS 방법론 자체가 굉장히 많은 컴퓨팅 자원을 잡아먹게 됩니다. 대표적인 RL 기반 모델인 NASNet은 500개의 GPU를 사용해서 20,000개의 뉴럴 네트워크를 탐색하여 4일만에 최고 성능을 달성하기도 하였죠. 이러한 비효율적인 문제를 해결하기 위해 PNAS에서는 작고 얕은 모델에서 시작하여 복잡한 모델로 성장시키는 알고리즘을 제안하였습니다. 이때, 필요치 않은 구조는 가지치기 (pruning)을 하게 되죠. 하지만, 이 과정 역시 비용이 높기 때문에 전체 모델을 학습하지 않고도 현재 모델의 성능을 평가할 수 있는 surrogate function을 정의하여 빠르게 평가를 수행하게 됩니다.
Architecture Search Space
NASNet에서 보았던 Cell 구조와 거의 동일하기 때문에 짧게 설명하도록 하겠습니다. 기본적으로 Cell은 완전 합성곱으로 구성된 모델입니다. 그리고 입력 형상이 $H \times W \times F$이면 출력 형상은 $H^{'} \times W^{'} \times F^{'}$가 되죠. 이때, $H$와 $W$는 각각 특징 맵의 높이와 너비를 의미하고 $F$는 채널 개수를 의미합니다. 여기서 중요한 점은 저희가 합성곱 연산을 수행할 때 stride $s$라는 파라미터가 있다는 것 입니다. $s = 1$로 하면 입력 형상이 유지되지만 $s = 2$로 하면 높이와 너비가 절반만큼 줄어들죠. 이때, 채널의 개수를 2배 늘려주게 됩니다. 이를 정리하면 다음과 같습니다.
- $s = 1$ : $H \times W \times F \rightarrow H \times W \times F$
- $s = 2$ : $H \times W \times F \rightarrow H/2 \times W/2 \times 2F$
이때, Cell을 정의할 때 필수적인 요소는 입력 특징 맵 입니다. NASNet과 마찬가지로 이전 블록의 특징 맵과 이전 블록의 이전 블록의 특징 맵도 함께 사용하기 때문에 1개의 Cell에 입력되는 특징 맵의 개수는 2개가 됩니다. 이를 각각 $I_{1}$과 $I_{2}$라고 하죠. 다음으로 입력된 특징 맵들 사이에 어떤 연산을 수행할 것 인가에 대한 것도 선택합니다. 이를 각각 $O_{1}$과 $O_{2}$라고 하죠. 마지막으로 연산을 수행한 뒤 두 특징 맵을 합치는 방법으로 덧셈과 concat이 있습니다. 이를 $C$라고 하죠.
여기서 searching space를 최대한 줄이기 위해 PNAS에서는 NASNet에서 사용되지 않은 operation 개수를 줄여 8개만 사용하였습니다. 다음으로 특징 맵을 합칠 때도 NASNet에서는 대부분 덧셈만 사용했기 때문에 이를 고정하였습니다. 이를 통해, 기존의 NASNet에서는 약 $10^{28}$개의 조합을 가졌지만 PNAS에서는 $10^{12}$개로 대폭 줄이게 됩니다. 따라서, 훨씬 빠른 탐색이 가능하겠죠.
그림1은 선택된 특징 맵 및 연산으로 실제 뉴럴 네트워크를 구성하는 모습니다. 오른쪽 그림에서는 CIFAR10과 ImageNet을 학습하기 위해 사용한 구조가 조금 다른 것을 볼 수 있습니다. 기본적으로 ImageNet의 해상도는 $224 \times 224$로 CIFAR 보다 약 8배 정도 큽니다. 연산량은 제곱수만큼 증가하기 때문에 이러한 문제를 해결하기 위해 처음에 $s = 2$를 가지는 합성곱 계층과 Cell을 두어 해상도를 줄여 이후 연산량을 감소시키게 됩니다.
Progressive Neural Architecture Search
그림2는 PNAS를 이용해서 점진적으로 모델이 커지는 과정을 보여주고 있습니다. 또한 predictor를 정의하여 만들어진 모델에 대한 대략적인 성능을 빠르게 평가하게 되죠.
Experiment Results
표5는 ImageNet을 기준으로 학습한 실험 결과 입니다. AmeobaNet-C 보다는 성능이 조금 낮거나 비슷하지만 연산량이 파라미터는 절반정도 적은 것을 볼 수 있습니다.
'논문 함께 읽기 > 2D Image Classification (IC2D)' 카테고리의 다른 글
[IC2D] Drop an Octave: Reducing Spatial Redundancy in Convolution Neural Networks with Octave Convolution (ICCV2019) (0) | 2023.09.20 |
---|---|
[IC2D] Searching for MobileNetV3 (ICCV2019) (0) | 2023.09.11 |
[IC2D] Dual Path Networks (NIPS2017) (0) | 2023.08.30 |
[IC2D] CBAM: Convolutional Block Attention Module (ECCV2018) (0) | 2023.07.15 |
[IC2D] BAM: Bottleneck Attention Module (BMVC2018) (0) | 2023.07.05 |