글 작성자: 만렙개발자

AutoML?

딥러닝에서는 인공신경망이 특징을 발견하고 추출하는 "패턴"을 찾아내는 것을 직접 학습하였습니다. 데이터셋을 학습하기에 적합한 형태로 만들기 위해 전처리, 데이터 분석, 특징 공학 등을 수행합니다. 그리고 모델링도 여러 각도에서 실험해보고, 거기서 최적의 파라미터를 찾기위해 노력합니다. AutoML은 이러한 것들도 자동화할 수 없을까 라는 생각에서 출발하였습니다. AutoML은 데이터셋으로부터 모델을 학습하고, 배포하여 예측하는 그 전체 파이프라인을 자동화하는 것입니다. 이를통해 비전문가가 기계 학습 모델과 기술을 활용할 수 있는 것을 기대합니다. (내 밥그릇...) 

 

일반적인 머신러닝에서는 데이터셋을 학습하기에 적합한 형태로 만들기 위해 전처리, 데이터 분석, 특징 공학 등을 수행합니다. 그리고 모델링도 여러 각도에서 실험해보고, 거기서 최적의 파라미터를 찾기위해 노력합니다. 이러한 과정들 하나하나가 매우 선택지가 많고, 어렵습니다. 이러한 과정을 자동화하기 위해서 AutoML은 다양한 부분으로 제안되었습니다. 그 중에 대표적인 것은 모델링을 자동으로하는 신경망 아키텍쳐 탐색 기술입니다.

신경망 아키텍쳐 탐색(Neural Architecture Search; NAS)

NAS는 검색 공간(search space), 검색 전략(search strategy) 및 성능 추정 전략(performance estimation strategy)의 세가지 측면으로 분류됩니다.

 

1. 검색 공간: 검색 공간은 원칙적으로 표현할 수 있는 아키텍처를 정의합니다. 테스크에 적합한 아키텍처의 일반적인 속성에 대한 사전 지식을 사용하면, 검색 공간의 크기를 줄이고 검색을 단순화할 수 있습니다. 예를들어 이미지 분류를 할 때에는 residual connection을 이용하여 residual block을 만들어 활용하면 좋을 것이라고 알려져있고, 그러한 블록들로 구성한 아키텍처를 기반으로 신경망 아키텍쳐 탐색을 수행할 수 있습니다. 그러면, 검색 시간은 줄어들고, 쉽게 원하는 성능에 도달할 수 있을 것입니다. 하지만 이러할 경우 인간의 편견이 가미되어 현재의 인간의 지식을 넘어서는 새로운 아키텍처를 찾을 수는 없게 됩니다.

 

2. 검색 전략: 검색 전략은 검색 공간을 탐색하는 방법에 대한 것입니다. 최고 성능의 아키텍처를 찾는 것과 차선의 성능의 아키텍처를 신속하게 찾는 것 사이에서 원하는 전략을 택해야합니다.

 

3. 성능 추정 전략: NAS의 목표는 일반적으로 학습하지 못했던 데이터에 대해 높은 예측 성능을 갖는 아키텍처를 찾는 것입니다. 성능 추정은 이러한 성능을 평가하는 프로세스를 말합니다. 성능 추정의 가장 간단한 방법은 학습셋과 검증셋으로 나누어 성능을 평가하는 것입니다. 

트랜스퍼 러닝과 신경망 아키텍쳐 탐색 중에 어떠한 기술이 나의 문제에 적합할까요?

트랜스퍼 러닝의 기본적인 아이디어는 신경망 아키텍쳐가 비슷한 유형의 문제를 풀기에 좋다는 것입니다.  반면에 모든 문제에 대한 신경망 구조를 탐색한다는 것은 각 데이터셋에 대해서 딱 맞게 고유화된 아키텍쳐를 만들어낸다는 것입니다. 즉, 트랜스퍼 러닝은 일반성, 신경망 구조 탐색은 특수성에 집중하는 개념이라고 보시면 좋을 것 같습니다. 하지만, 신경망 아키텍쳐를 탐색하는 일은 비용이 많이 듭니다. 따라서 비용적인 측면에서는 트랜스퍼 러닝이 우위에 있고, 특정 문제에 대한 성능적인 측면에서는 신경망 구조 탐색 방법이 우위에 있습니다.

 

신경망 아키텍쳐 탐색 방법은 그저 성능이 좋아서 사용하는 정도를 넘어서, 새로운 아키텍쳐를 찾는데 도움을 줍니다. 딥마인드의 알파고를 통해서 바둑의 새로운 세계를 발견하고, 그것을 통해 공부하며 성장하는 바둑기사들처럼 인공지능 연구를 하는 사람들도 신경망 아키텍쳐 탐색 기술을 통해 새로운 아키텍처의 세계를 발견할 수 있습니다.

 

대표적인 모델로는 AmoebaNet, MobileNet, NasNet 등이 있습니다.