안녕하세요. 모카의 머신러닝 입니다. 이번 포스팅은 “Progressive Neural Architecture Search, ECCV 2018”에 대해 리뷰합니다. 영어로 된 논문을 한글로 같이 해석하며 논문에서 의미하는 것이 무엇인지 같이 공부하며 이해하고 활용하실 수 있도록 준비해보았습니다.
Progressive Neural Architecture Search
Abstract
강화학습 기반과 유전 알고리즘에 기반한 최근의 sota 모델보다 더 효율적으로 컨볼루션 네트워크의 구조를 학습할 수 있는 새로운 방법을 제안한다. 우리의 방법은 복잡성이 증가하는 순서로 구조를 search하는 동시에 구조 공간을 통해 search를 안내하는 대리 모델(surrogate model)을 학습하는 sequential model-based optimization (SMBO) strategy를 사용한다. 같은 search space 하에서 비교를 하자면 RL 기반의 방법보다 5배 더 효율적이고 전체 계산에 대해서 8배 더 빠르다. 구조는 CIFAR10과 ImageNet에서 sota의 claassification 정확도를 얻었다.
1. Introduction
좋은 뉴럴 네트워크 아키텍쳐를 자동으로 학습하는데에 최근에 많은 관심들을 보이고 있다. 최근의 기법들은 두가지 카테고리로 분류된다: 유전 알고리즘 (Evoluionary algorithm, EA) 기반과 강화학습 (Reinforcement learning, RL) 기반이 있다. EA와 RL 방법 모두는 수동으로 설계된 아키텍쳐를 능가하는 네트워크 구조를 학습하는것이 가능하지만, 상당한 컴퓨터 자원을 요구한다.
본 논문에서, 우리는 아키텍쳐 검색 시 5배 더 적은 evaluation을 요구하면서 정확도 측면에서 이전 기술과 매치되는 CNN을 학습할 수 있는 방법을 설명한다.
우리는 간단한 모델에서부터 시작해서 점진적으로 복잡한 것으로 가고, 유망하지 않은 구조들을 가지치기 하는, cell 구조의 공간을 찾기 위한 휴리스틱 search를 사용하는 것을 제안한다. 알고리즘의 b번째 iteration에 K개의 후보 셀들을 가지고 있다. 우리는 훈련이 필요 없이 구조의 성능을 예측할 수 있는 모델 또는 대리 함수 (surrogate function)를 학습한다. 우리는 모든 K’개의 children을 랭크하는데 대리 함수를 사용하고, top K개를 선택한 후 훈련하고 평가한다.
3. Architecture Search Space
우리는 먼저 셀 구조를 학습하고 그다음 이 셀을 쌓아서 마지막 CNN을 생성한다.
operator space에 있는 8가지 함수는 다음과 같다.
- 3x3 depthwise-separable convolution
- 5x5 depthwise-separable convolution
- 7x7 depthwise-separable convolution
- 1x7 followed by 7x1 convolution
- identity
- 3x3 average pooling
- 3x3 max pooling
- 3x3 dilated convolution
셀을 평가하기 위해서 셀을 CNN으로 변환한다. 이를 위해, 사전에 정의된 basic cell의 여러개의 카피를 쌓는다.
4. Method
4.1 Progressive Neural Architecture Search
많은 이전의 접근법들은 전체의 셀 또는 더 심하면 전체의 CNN의 공간에서 직접적으로 검색한다.
대신에, 우리는 점진적인 순서로 가장 간단한 모델을 먼저 공간에서 검색하는 방법을 제안한다. 우리는 B1으로부터 모든 가능한 셀의 구조를 구성하는 것으로부터 시작하고 그 다음 이것들을 큐에 더한다. 우리는 큐에서 모든 모델들을 훈련하고 평가하며, B2로부터 모든 가능한 블록의 구조를 더함으로써 확장한다. 우리는 이러한 child network들을 모두 훈련하고 평가할 여유가 없으므로, 우리는 learned predictor function을 참고한다. 우리는 그 다음 모든 후보의 셀들을 평가하가 위해서 predictor를 사용하고, K개의 유망한 것들을 선택한다.
4.2 Performance Prediction with Surrogate Model
우리는 실제로 훈련하기 전에 셀의 마지막 성능을 예측하는 메커니즘이 필요하다.
- Handle variable sized inputs: 우리는 predictor가 가변 길이의 입력 스트링을 위해 일하도록 하는 것이 필요하다. b개의 블록으로 훈련됬음에도 불구하고 b+1개의 셀의 성능을 예측할 수 있어야 한다.
- 다양한 크기의 input을 다룰 수 있어야 한다. b block까지만 학습되어있어도 b+1 block인 경우까지 예측할 수 있어야 한다.
- Correlated with true performance: 우리는 low mean square error를 달성하는 것을 필수적으로 필요하지 않지만, 우리는 predictor가 그들의 실제의 성능 값만큼 모델을 랭크하기를 원한다.
- 실제 performance와의 연관성 (즉 잘 예측해야 한다.)
- Sample efficiency: 우리는 가능한 적은 수의 셀들을 훈련하고 평가하기 원하고 이것은 predictor를 위한 학습 데이터가 부족함을 의미한다.
- Sample 효율성: 최소한의 cell을 학습 및 평가하고 싶기 때문에, predictor에게 주어지는 학습 데이터는 적을 것이다.
5. Experiments and Results
다음은 MLP ensemble predictor의 정확도이다.
같은 search space 하에서 NAS, PNAS, random search의 상대적 효율성을 비교한 결과이다.
CIFAR 테스트 셋에서 서로 다른 CNN들의 성능이다.
모바일 셋팅에서 ImageNet classification의 결과이다.
Large 셋팅에서 ImageNet classification의 결과이다.
6. Conclusion and Future Work
본 연구의 주요한 기여는 탐색할 가장 유망한 모델을 효율적으로 식별하기 위해 learned prediction function과 결합하여 점점 더 복잡해지는 그래프의 공간을 통해 점진적인 검색을 사용하여 좋은 CNN 구조에 대한 검색을 가속화할 수 있는 방법을 보여주는 것이다.
지금까지 PNAS 논문 리뷰를 해보았습니다. 저도 논문을 읽으며 공부해나가는 단계라 부족한 점이 있을 수 있습니다. 같이 잘 공부해나가요! 질문이나 지적, 요청해주실 부분이 있다면 댓글이나 메일 부탁드립니다.
읽어주셔서 감사합니다. 😃