본문 바로가기

개발/딥러닝

[논문 리뷰] Neural Architecture Search: A Survey(NAS)

Neural Architecture Search(NAS)는 인공지능을 만들어 주는 인공지능입니다. 보통 인공지능을 만들 때 모델을 만드는데 이 모델을 인공지능을 이용해서 만들어 보자는 것입니다. 이 인공지능의 컨셉과 발전 과정 집중해서 이야기해 보겠습니다.

기본 전략

3가지 개념을 알아야 합니다.

 

search space : dense net, convolution, skip connection 등 여러 레이어가 있습니다.

search strategy : search space를 어떻게 탐색할지 정합니다.

performance estimation strategy : 찾은 아키텍쳐가 얼마나 성능을 내는지 구합니다. 직접 트레이닝해도 되고 퍼포먼스를 예측하는 알고리즘을 도입할 수 있습니다.

 

search strategy와 performance estimation strategy를 계속 반복하면서 가장 좋은 아키텍쳐를 찾습니다.

 

가장 단순한 방법으로는 왼쪽 그림처럼 일렬로 쭉 만드는 것입니다. pooling, convolution 등을 조합하는 것입니다.

조금 복잡한 구조로는 오른쪽처럼 그물 형대가 있습니다. 이 전까지 나온 레이어들의 출력($L_0, L_1, ..., L_{n-1}$)에서 몇 개를 골라 다음 레이어를 구성합니다. ($L_4=L_2+L_3,L_8=L_0+L_6$)

 

두번째 방법은 탐색할 영역이 너무 많습니다. 그래서 몇가지 셀을 구성한 다음(아래 그림의 왼쪽) 그것들을 일렬로 쭉 잇는 것입니다.(아래 그림의 오른쪽)

 

이런 아키텍쳐를 빨리 찾기 위해서 찾을 수 있는 네트워크를 미리 다 정해두는 것입니다. 아래에서 정점이 노드, 간선이 적용할 수 있는 오퍼레이션이라고 해봅시다.

처음에 어떤 정점끼리 연결될 수 있는지, 해당 연결이 어떤 연산으로 연결되는지 미리 정해둡니다. 이제 이 중에서 가장 좋을 연산을 찾으면 됩니다. 스킵 커녁션 같은 것도 연산으로 정의해 주면 조금 더 다양하게 쓸 수 있습니다.