NAS(Neural Architecture Search) 기법에 대해 알아보기

1. NAS에 대한 오해

 

model의 일반적인 설계 방식은 model 구조인 architecture를 설계하고 그 위에 hyperparameter를 설정하고

 

그 위에 데이터를 넣어 train하면서 parameter를 tuning하여 model을 완성하여 사용

 

이제 가장 밑단의 architecture를 어떤 것을 써야할지 고민이다.

 

딥러닝이 상식처럼 알려져있지만 딥러닝이 아닌 architecture도 많고 SqueezeNet, ResNet, VGGNet 등등 여러가지가 많다

 

architecture는 사람이 직접 손으로 만드는 방법도 있지만 automatic하게 찾아내는 방법도 있다.

 

ResNet의 residual block

 

ResNet의 residual block은 기계가 만든 것이 아니라 사람이 창의적으로 만드는 것

 

Neural architecture search를 처음 배울 때 마치 performance를 올리기 위해 architecture를 자동적으로 찾는듯한 인상을 받았는데 반드시 그렇지는 않다.

 

multi objective NAS는 network compression과 밀접하게 관련되어 있다.

 

performance only가 아니라 CO2 emission을 줄이거나 model size를 줄이거나 inference time을 올리는 것 같은 것도 objective에 포함된다해서 multi objective

 

well performing <performance를 높이는>한 network를 찾는 것도 목표긴 하지만 efficient architecture인 것도 찾고 싶다는 것이 NAS

 

그래서 어떤 compression method는 NAS method로 볼 수 있고 그 역도 성립한다. (모든 compression method가 NAS라는 것은 아님)

 

compression 자체가 model의 parameter를 압축하겠다는?(그런것도 있을수 있겠지만…) model의 architecture를 바꾸겠다는 의미가 더 크다.

 

 

2. automatic NAS

 

search space 위에 architecture의 여러 setting을 올려두고 하나씩 돌려보고 평가하는 과정을 자동으로 반복

 

기준에서 가장 좋은 모형을 선택하겠죠?

 

 

이렇게 찾으면 사람이 만들었다고 보기는 어려운 기형적인 모양이 나옴

 

 

3. search strategy

 

NAS 과정에서 다음 architecture를 어떻게 찾을지?

 

search space에 어디 어디 layer를 connection할지

 

어디어디는 depthwise separable을 쓸지

 

어디 어디는 몇층 layer를 쓸지 여러가지 setting으로 candidate architecture를 여러가지 만들어

 

 

여러 연산(depth-separable, pooling, convolution 등) 후보군을 둬서 search space도 자동으로 구성한다고 해야할까?

 

이 set에서 grid search를 한다든지 random search를 한다든지 강화학습으로 현재 평가의 피드백을 바탕으로 더 좋은 것을 선택해본다든지 여러가지 전략이 있다.

 

이런 전략 조차도 모델에 의해서 결정하여 architecture를 search하는 것이 automatic NAS

 

Automatic NAS의 기본 흐름

 

search space의 여러 후보군을 search strategy에 따라 선택하여 평가를 진행하고 피드백에 따라 여러 전략으로 architecture를 search

 

 

 

TAGS.

Comments