서론
이 장은 NAS의 개념에 대해 설명한다.
목차
- NAS
- Search Space
- Search Strategy
- Search Algorithm
- Performance Estimation
- Search Strategy & Search Algorithm 차이점
- Example
NAS
Neural Architecture Search(NAS)는 AutoML의 한 분야(subfield)로 정해진 목표에 대해서 최적의 신경망 구조를 탐색하는 분야로 쉽게 말하면 Artificial Neural Network(인공신경망)를 자동으로 설계하는 기술이다.
NAS = Optimal Architecure + Optimize HyperParameter.

대부분의 AI연구는 데이터마다 사람이 목적에 맞는 신경망 구조를 디자인한다. 하지만 매번 데이터가 바뀔 때마다, 혹은 목적이 달라질 때마다 그에 적합한 구조를 찾는 것은 어려운 일이다. 그래서 최적의 구조를 찾는 과정도 AI로 해결하려는 시도가 바로 NAS다.
아래 그림은 NAS를 도식화 한 그림이다.

Search Space
우리가 선택할 수 있는 activation function,layer 개수, node 개수 등을 정의한 것이다. 더 많은 선택 가능항을 space에 포함할수록 최적의 구조를 찾을 가능성은 높아지지만, 그 만큼 더 많은 시간과 비용을 소요하게 된다.
Search Strategy
그 다음 정의된 search space안에서 어떤 것을 선택하여 구조를 찾을지 결정하는 것이 search strategy로, 진화 알고리즘, 강화학습, 베이지안 최적화 등 다양한 형태를 가질수 있다.
Search Algorithm
특정 Search Strategy를 구현하는 방법을 나타낸다. 예를 들어, 진화 알고리즘 전략을 사용할 경우 특정 Search Algorithm은 선택, 교차, 변이 등의 연산을 어떻게 적용할 지를 정의한다. 또한, 강화학습 전략을 사용하는 경우에는, Q-Learning, Policy Gradient, Actor-Critic 등과 같은 알고리즘이 해당 전략을 구현하는 방법이 될 수 있다.
Performance Estimation
그리고 이렇게 탐색된 구조는 그 성능을 측정한 후, 이 결과를 다시 다음 구조를 찾는데 활용한다. NAS는 여러 변형이 존재하지만 대체로 이러한 구조를 가지고 있다. 단순하게 보면 탐색하고 측정하는 실험을 굉장히 여러 번 반복하면서 최적의 구조를 탐색하는 것으로 볼 수 있다.
Search Strategy & Search Algorithm 차이점
쉽게 말하면 Search Stragey는 학습 방식이다. 비유하자면 지도학습을 선택했다면 Search Algorithm은 지도학습에 사용되는 cross-entropy와 같은 loss함수로 생각하면 된다.
Example
다양한 방법이 존재하지만 NAS의 Model Architecture중 RNN을 controller로 사용하는 경우에 대해서 알아보자. 이 경우 Search Strategy는 강화학습을 사용하고 Search Algorithm은 Policy Gradient가 된다. RNN controller는 모델의 아키텍처 생성하고, Policy Gradient 방법을 통해 아키텍처의 성능에 대한 보상을 기반으로 controller가 더 나은 아키텍처를 제안하도록 한다.

위 그림을 보면 알 수 있듯, Conv layer의 경우 filter의 height, width / stride height, width / number of filters와 같은 hyperparam들을 출력하고, 이를 다시 입력으로 예측하는 RNN 형식으로 network 구조를 형성한다. 모든 형성이 끝나면 이 구조(child-network)로 학습하여 Validation Accuracy를 구해, RNN의 Parameter를 backward로 학습하도록 한다.
[reference]
https://m.post.naver.com/viewer/postView.naver?volumeNo=33500636&memberNo=52249799
Comment