Efficient Architecture design이란

1. motivation

 

효율적인 architecture를 디자인하여 큰 모델 못지 않은 성능을 내는 모듈을 만들고자 하는 것이 efficient architecture design

 

최근 trend는 사람이 디자인하는 것보다 AutoML이나 Neural Architecture Search같은 컴퓨터가 optimization으로 모델을 찾게 만듦

 

 

2. 필요성

 

매일 다양한 특성을 가지는 module들이 쏟아져나오고 있음

 

이 module들은 특징이 다양함.

 

parameter가 적은데 성능은 좋다든지 성능만 좋고 parameter는 너무 많다든지 연산량이 적은데 성능이 떨어진다든지

 

 

 

 

왼쪽 그림은 연산횟수에 따른 정확도 비교. 원의 크기는 model의 parameter

 

오른쪽 그림은 model의 parameter 대비 정확도 효율..

 

squeezeNet이 parameter수가 적으면서도 정확도가 높게 나온다는 것이다.

 

위 그림에서 동그라미된 부분이 ‘efficient model’이라고 부르기에 적절한, 모델의 parameter도 대체로 적고 연산량도 적은데 성능은 충분히 좋은 모델들

 

이런 efficient model을 찾는 작업이 efficient architecture design

 

 

3. software 2.0 시대

 

Andrej Karpathy , ‘ Gradient descent가 너보다 코드를 더 잘 쓴다.’

 

software 1.0이 사람이 명확히 지시를 내려 만든 module이라고 한다면

 

software 2.0은 사람이 전체적인 목표로 ‘최고의 정확도, parameter는 충분히 적게’ 등의 목표를 제시하면

 

알고리즘이 이에 맞는 최적의 모듈을 찾아줌

 

 

4. 모델을 찾는 network

 

‘the controller’ network는 확률 p로 architecture A를 제안함

 

제안된 A를 학습하고 evaluation으로 accuracy로 R을 얻음

 

A에 대응하는 값이 R이라고 하여 the controller를 training함

 

training 결과로 더 좋은 architecture를 제안함

 

반복적으로 수행

 

AutoML이 model을 찾는 일반적인 과정

 

 

찾아낸 모델들은 사람이 이해하기 쉽지 않다. 왜 그렇게 connection되었는지 같은 해석이 불가능할정도로 복잡함

 

그러나 대부분 사람의 직관을 뛰어넘는 성능을 가진 모듈들을 찾아낼 수 있다는 것이 AutoML의 장점

 

AutoML로 찾아낸 모델들 예시

TAGS.

Comments