NasNet
MnasNet
Neural Architecture Search(NAS)
본격적으로 논문을 리뷰하기 전, 기본적으로 NasNet와 MnasNet은 Nas를 기반으로 만들어졌기 때문에, Nas에 대해 짚고 넘어가도록 하겠다. Nas는 사람의 개입 없이 최적화된 아키텍처를 찾는 방법론으로, 데이터나 해결하고자 하는 목표가 달라질 때마다 적합한 구조를 인간이 일일이 설계하는 것이 어렵다는 점에서 등장했다. Nas는 크게 3가지 요소로 구성된다.
- search space : 가능한 모든 아키텍처의 집합을 말한다. 모델의 구조와 연산의 단위 등을 정의한다.
- search strategy(algorithm) : search space 내에서 최적의 아키텍처를 찾는 알고리즘을 말한다.
- evaluation strategy : 찾은 아키텍처의 성능을 평가하는 방법을 말한다.
search space 내에서 search strategy을 따라 구조를 탐색하고, evaluation strategy로 성능을 측정해서 그 결과를 다시 다음 구조를 찾는데 활용한다. (Nas에 대해 더 궁금하다면, 이 글을 참고하면 좋을 것 같다.)
Intro
문제
- convolution 아키텍처가 이미지 분류 작업에 좋은 성능을 보이는 반면, 이를 설계하는데 많은 노력이 필요하다.
- NAS와 같은 아키텍처 검색 기법을 큰 데이터셋에 직접 적용하는 건 계산량이 많아 비용이 많이 든다.
아이디어
- 대규모 데이터셋에 대해 사람의 개입 없이 스스로 모델 아키텍처를 설계할 수 있는 방법을 제안한다.
- 작은 데이터셋에 적합한 아키텍처를 찾고(NASNet), 이를 큰 데이터셋에 전이한다.
- 일반화 성능을 위해 새로운 정규화 기법(ScheduledDropPath)을 제안한다.
Method
NasNet Architecture
전체적인 NasNet 구조다. normal cell & reduction cell이 반복적으로 쌓여 만들어진 네트워크를 작은 데이터셋(CIFAR)에 대해 학습하여 나온 최적의 네트워크를 큰 데이터셋(ImageNet)에 적용한다. 그럼 각 cell의 역할은 뭘까?
- normal cell : 입력과 동일한 해상도의 feature map를 만든다.
- reduction cell : feature map 크기를 절반으로 줄이면서 계산 효율성을 높인다.
Search space
구체적으로 네트워크가 어떻게 만들어지는지 알아보자.
- hidden state set에서 하나의 hidden state를 선택한다.
- 다른 하나의 hidden state를 선택한다.
- 첫 번째 hidden state에 적용할 연산을 선택한다.
- 두 번째 hidden state에 적용할 연산을 선택한다.
- 연산을 통해 나온 출력값들을 결합할 방법을 선택한다.
위 과정을 통해 하나의 convolution block이 생성되고, 이를 5번 반복하여 하나의 cell을 생성한다(논문에서는 block 수를 5로 설정했다) 특히, 3~5번째 단계에서 연산 및 결합 방법을 선택할 때, 효율적인 탐색을 위해 제한된 범위 내에서 선택한다. 연산은 아래와 같은 방법에서 선택하도록 하고, 결합 방법은 element-wise addition, concatenation 중에서 선택하도록 제한한다.
Search Algorithm
- RNN controller가 위와 같이 cell 구조를 생성한다.
- 이 구조를 child model로서, CIFAR데이터셋을 이용해서 학습하고, 검증 정확도를 통해 성능을 평가한다.
- 평가한 검증 정확도를 바탕으로 보상 값을 계산한다.
- 이 보상 값을 가지고 policy gradient을 사용해 RNN controller 자신의 파라미터를 업데이트한다.
위 과정을 반복하여 RNN controller는 보상값을 최대화하도록 학습해서, 더 나은 셀 구조를 생성하는 방향으로 학습한다. 이렇게 만들어진 최적화된 셀 구조를 ImageNet에 적용한다.
ScheduledDropPath
NasNet을 학습시킬 때 쓰는 정규화 기법으로, DropPath을 수정한 방법이다. DropPath는 일정한 확률로 path가 drop 하는 방법을 말한다. 여기서 ScheduledDropPath는 확률을 학습하는 동안 선형적으로 증가시킨다.
- Droppath ?
- dropout과 비슷한 아이디어지만, dropout은 개별 뉴런을 제거한다면, droppath는 일부 경로(path)를 제거한다.
- 각 cell들은 여러 연산과 연결되어 있는데, 특정 cell에서 일부 경로를 무작위로 비활성화해서 과적합을 방지한다.
Result
- NasNet은 정확도를 중심으로 모델들의 성능을 비교했다.
- 500개의 GPU를 사용하여 약 4일 동안 수행한 결과, CIFAR 데이터셋에 대해 최소 2.4%까지의 테스트 오류율을 보인다.
- ImageNet 데이터셋에 대해서는 계산량이 28% 감소했음에도 불구하고, 정확도가 최대 96.2%를 기록하는 성능을 보인다.
- 이외에도, 여기에 정리는 안했지만 객체 탐지와 같은 다른 비전 작업에 적용했을 때에도 기존 성능 대비 4% 향상된 결과를 보여줬다. 이를 통해 NASNet이 이미지 분류 외에도 다양한 비전 작업에서 좋은 성능을 낸다는 것을 시사한다.
Intro
문제
- 모바일의 제한된 계산 자원을 고려했을 때, 대규모 데이터셋에 대한 모바일용 convolution 아키텍처 설계하기 까다롭다.
- FLOPS을 통해 근사하는 방법을 지연 시간(latency)을 구하여, 지연 시간을 중요하게 고려하지 않고 있다.
- 동일한 cell을 반복적으로 쌓아 구조를 설계하기 때문에, 비교적 다양한 모델을 찾질 못한다.
아이디어
- 정확도와 지연 시간의 균형을 맞출 수 있는 모델을 자동으로 탐색하는 방법을 제안한다.
- 직접 모바일 장치에서 실제 지연 시간을 측정한다.
- 계층적 탐색 공간을 도입해서, layer끼리 구조적으로 다르게 만들어 탐색 과정의 다양성을 보장한다.
Method
MnasNet Architecture
전체 아키텍처를 보면, reduction cell 혹은 normal cell으로만 구성된 NasNet과 달리, MnasNet은 다양한 convolution layer들로 구성된 것을 확인할 수 있다.
Search space
NasNet이 효율적인 탐색을 위해 제한된 범위 내에서 연산 방법을 선택했듯이, MnasNet도 미리 정해져 있는 범위 내에서 layer들을 골라 block을 구성한다.(이 논문에서는 이를 sub space search를 가진다고 표현한다)
sub space search
- sub space search는 하나의 layer를 만드는 경우의 수를 말한다.
- 3x3 sub space search를 가진다고 하면, convolution 종류 3가지와 kernel 종류 3가지를 가지고 하나의 layer를 구성한다는 것을 의미한다.
(NasNet과 비교하면서 용어가 헷갈릴 수 있는데, NasNet은 여러 개의 block들을 묶어 하나의 cell을 만들고, 이 cell들을 바탕으로 전체 아키텍처를 설계한다면 / MnasNet은 여러 개의 layer를 묶어 하나의 block을 만들고, 여러 block들을 기반으로 전체 아키텍처를 설계한다.)
Search Algorithm
- RNN controller는 각 CNN 블록들을 조합해서 전체 네트워크를 만든다.
- 이 네트워크는 child network로서 데이터셋을 사용해 학습하고, 정확도와 실제 지연시간을 평가한다.
- 정확도와 지연시간을 기반으로 보상 값을 계산한다. (이때 균형을 위해 정확도와 지연 시간 간의 중요도 비율을 조정한다)
- 이 보상 값을 가지고 policy gradient을 사용해 RNN controller 자신의 파라미터를 업데이트한다.
위를 반복하면서 최적의 네트워크 구조를 선정한다.
Result
- MnasNet은 NASNet-A보다 2.3배 빠르고, 1.2% 더 높은 정확도를 기록했다.
Review
위 내용을 정리해보면 다음과 같다.
Nas
- 사람의 개입 없이 최적의 모델 아키텍처를 찾는 방법
- 전체 아키텍처를 search space로 설정하기 때문에, 큰 데이터셋에 적용할 때는 오랜 시간이 걸린다.
NasNet
- Nas + 대규모 데이터셋에 최적화
- 작은 데이터셋으로 찾은 셀 구조를 search space로 설정하여 반복적인 학습을 통해 나온 최적의 셀 구조를 큰 데이터셋에 적용한다.
- 때문에, 크고 다양한 데이터셋에 Nas에 비해 쉽게 적용할 수 있고, 훨씬 정확하다.
- 그러나, 아키텍처가 normal cell & reduction cell으로만 구성되기 때문에 다양성이 부족하다.
MnasNet
- NasNet + 모바일 환경에 최적화
- 아키텍처가 여러 block으로 이루어져 있는데, 각 block 마다 다양하고 구성할 수 있다. (hierarchical search space)
- 또한, 정확도 뿐만 아니라 실제 지연 시간을 최적화하여, 모바일 환경에서 뛰어난 성능을 발휘한다.