NAS(Neural Architecture Search) 기법에 대해 알아보기
1. NAS에 대한 오해
model의 일반적인 설계 방식은 model 구조인 architecture를 설계하고 그 위에 hyperparameter를 설정하고
그 위에 데이터를 넣어 train하면서 parameter를 tuning하여 model을 완성하여 사용
이제 가장 밑단의 architecture를 어떤 것을 써야할지 고민이다.
딥러닝이 상식처럼 알려져있지만 딥러닝이 아닌 architecture도 많고 SqueezeNet, ResNet, VGGNet 등등 여러가지가 많다
architecture는 사람이 직접 손으로 만드는 방법도 있지만 automatic하게 찾아내는 방법도 있다.
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
search space의 여러 후보군을 search strategy에 따라 선택하여 평가를 진행하고 피드백에 따라 여러 전략으로 architecture를 search
'딥러닝 > light weight modeling' 카테고리의 다른 글
공간(space)과 시간복잡도(time) 사이 관계 (0) | 2022.10.31 |
---|---|
MNasNet과 PROXYLESSNAS와 ONCE-FOR-ALL network 알아보기 (0) | 2022.04.05 |
딥러닝 모델의 hyperparameter search (0) | 2022.03.15 |
유명한 model compression 논문 몇가지 미리보기 (0) | 2022.03.06 |
model compression에서 고려되는 특이한 제약조건들 (0) | 2022.03.05 |