Efficient Neural Architecture Search with Network Morphism
이 글은 2018년 9월 루닛 블로그에 올렸던 글입니다. (https://blog.lunit.io/2018/09/11/efficient-neural-architecture-search-with-network-morphism/)
데이터에 맞는 neural network를 디자인하는 일은 시간이 많이 듭니다. 지금까지 성능이 좋은 network가 많이 소개 되어왔으나, 같은 network라도 데이터의 특성이나 양에 따라 성능이 크게 달라지기 때문입니다. 성능이 좋은 네트워크를 찾으려면 일일이 네트워크의 layer나 skip connection의 수를 바꾸면서 학습을 시켜봐야 합니다.
이런 문제를 하기 위해 다양한 NAS(Neural Architecture Search) 방법들이 제안되었습니다. NAS란 사람이 neural network의 구조를 직접 정하지 않고 자동으로 찾아주는 것을 의미합니다. 하지만 최근 소개된 많은 NAS 방법들은 대부분 강화학습과 유전알고리즘 기반이라, 많은 네트워크를 학습해보아야만 좋은 성능의 network를 얻을 수 있습니다. 때문에 시간이 오래 걸리고, 계산 자원도 많이 필요합니다.
이번 주에 소개할 논문은 AutoKeras라는 라이브러리의 기반이 되는 “Efficient Neural Architecture Search with Network Morphism” 입니다. 기존의 NAS가 긴 시간과 클라우드 서비스의 금전적인 부담 때문에 개인이 사용하기 어려웠던 반면, AutoKeras는 비교적 가볍게 개인이 활용할 수 있다는 장점이 있습니다.
Bayesian Optimization
앞에서 언급한 것처럼 강화학습이나 유전 알고리즘 기반의 NAS는 시간이 많이 걸리기 때문에, 저자들은 Bayesian optimization을 통해 문제를 해결하려 합니다.
Bayesian optimization은 블랙박스 시스템의 최적값을 찾기 위한 방법으로, 크게 observation-update-generation의 3가지 과정으로 이루어집니다. Observation은 블랙박스 시스템을 직접 확인하는 과정으로, NAS에서는 네트워크를 데이터에 학습시켜서 성능을 확인하는 것이 여기에 해당합니다. Update에서는 observation을 통해 얻은 기록으로 Gaussian process regressor를 학습합니다. Gaussian process regressor는 supervised learning 방법으로, 학습을 통해 mean과 variance를 예측할 수 있습니다. 이를 통해, generation 과정에서 가장 높은 값이 있을 것이라 기대되는 지점을 추천해줍니다. 이 추천함수를 acquisition function이라고 하는데, 위의 이미지에서는 mean과 standard deviation의 합인 upper-confidence bound를 사용합니다. 덕분에 2D space를 탐색하는데 단순하게 grid search를 하지 않고, Gaussian process를 가정하여 가장 높은 값이 나올 것이라 예측되는 점들을 먼저 확인합니다.
Edit distance with network morphism
그러나 NAS에서의 search space는 Euclidean이 아닙니다. 이 때문에 Gaussian process regressor를 위한 kernel을 새로 만들어줘야하고, 이를 위한 distance metric도 필요합니다. 저자들은 network morphism을 적용한 edit distance를 아래와 같이 정의합니다.
두 network f_a와 f_b에 대해 D_l, D_s는 각각 layer와 skip connection에 대한 edit distance입니다. φ는 두 network간 가장 잘 매칭되는 layer와 skip connection의 mapping 함수로, 각각 dynamic programming과 Hungarian algorithm으로 가장 유사하게 매칭을 찾습니다.
D_l의 왼쪽 항은 layer의 두께(wider)의 차이, 오른쪽 항은 layer의 갯수(insert) 차이를 나타냅니다. 마찬가지로 D_s에서의 왼쪽 항은 skip connection의 위치 차이, 오른쪽 항은 skip connection의 갯수 차이가 됩니다. 이렇게 두 network 간의 거리를 명시하면 neural network space에 대한 valid kernel을 아래 수식처럼 만들 수 있습니다. (ρ는 kernel validity를 위한 Bourgain algorithm입니다.)
Acquisition function optimization
이제 Bayesian optimization을 위한 Gaussian process regressor는 준비가 됐습니다. 하지만 network morphism을 위한 acquisition function이 없으므로 이를 새로 만들어줘야 합니다. 저자들은 A* 기반의 tree search 알고리즘에 simulated annealing을 적용한 acquisition function 최적화를 제안합니다.
Neural kernel로 구현된 Gaussian process regressor는 기존에 학습해 본 network들의 성능을 기반으로 새로운 network 성능의 mean, variance를 예측할 수 있습니다. 이를 통해 구한 upper-confidence bound로 다음에 학습시켜 볼 더 좋은 예시를 고를 수 있습니다.
Conclusion
많이 쓰이는 강화학습 및 유전알고리즘을 통한 NAS와의 비교는 없지만, 기존에 많이 사용하던 탐색 방법과의 성능 비교에서는 좋은 성능을 보입니다.
논문에서 제시된 방법은 network morphism의 특성상 새로운 network space를 탐색할 때 기존에 사용하던 parameter들을 버릴 필요 없이 새로 추가된 layer에 대해서만 학습할 수 있다는 장점이 있어 효율적이고, 개인이 사용하기에도 부담이 적습니다. 논문에서는 image classification 하나의 문제만 실험했지만, 구현에 따라 다양한 문제와 데이터에도 적용될 수 있을 것으로 기대됩니다.