신경망 구조 검색 (Neural Architecture Search)
요약
신경망 구조 검색(NAS)은 인간 전문가가 설계한 아키텍처의 한계를 극복하고, 체계적이고 자동화된 방식으로 고성능 모델 아키텍처를 학습하는 방법론입니다. NAS는 크게 '검색 공간', '검색 알고리즘', '평가 전략' 세 가지 핵심 구성 요소로 이루어집니다. 검색 공간은 네트워크 토폴로지를 정의하며, 순차적 레이어별 연산 방식과 Inception/ResNet에서 영감을 받은 셀 기반 표현 방식 등이 있습니다. NAS는 이 복잡한 구조를 탐색하고 최적의 아키텍처를 찾아내기 위해 다양한 기법을 활용합니다.
핵심 포인트
- NAS는 인간 전문가의 편향성을 넘어선 자동화된 고성능 모델 아키텍처 학습 방법론이다.
- NAS는 검색 공간(Search space), 검색 알고리즘(Search algorithm), 평가 전략(Evaluation strategy) 세 가지 핵심 요소로 구성된다.
- 순차적 레이어별 연산 방식은 직관적이지만, 표현력이 크고 엄청난 컴퓨팅 자원을 요구한다.
- 셀 기반 표현(Cell-based Representation)은 Inception/ResNet과 같은 반복 모듈 설계에서 영감을 받아 효율적인 아키텍처 검색을 가능하게 한다 (예: NASNet).
- NAS의 성공적인 구현에는 모델 성능 평가가 필수적이며, 이는 계산 비용이 매우 높다는 문제가 있다.
대부분의 인기 있고 성공적인 모델 아키텍처는 인간 전문가에 의해 설계되었지만, 이는 전체 네트워크 아키텍처 공간을 탐색하고 최적의 옵션을 결정했다는 것을 의미하지 않습니다. 우리는 체계적이고 자동화된 방식으로 고성능 모델 아키텍처를 학습하는 방식을 채택할 경우 최적의 해법을 찾는 데 더 좋은 기회를 가질 것입니다.
네트워크 토폴로지를 자동으로 학습하고 진화시키는 것은 새로운 아이디어가 아닙니다 (Stanley & Miikkulainen, 2002). 최근 몇 년 동안 Zoph & Le 2017 와 Baker et al. 2017 의 선구적인 작업은 신경망 구조 검색 (Neural Architecture Search, NAS) 분야에 많은 관심을 끌었으며, 더 빠르고 비용 효율적인 NAS 방법을 위한 흥미로운 아이디어들을 이끌어냈습니다.
내가 NAS 를 연구하기 시작했을 때, Elsken, et al 2019 의 이 설문조사가 매우 도움이 되었습니다. 그들은 NAS 를 세 가지 주요 구성 요소로 특징화하며, 이는 깔끔하고 간결하며 다른 NAS 논문에서도 일반적으로 채택되고 있습니다.
검색 공간 (Search space): NAS 검색 공간은 연산자 (예: 컨볼루션, 풀 연결, 풀링) 의 집합과 연산자가 유효한 네트워크 아키텍처를 형성하는 방법을 정의합니다. 검색 공간의 설계는 일반적으로 인간 전문가의 지식과 불가피하게 인간의 편향을 포함합니다.
검색 알고리즘 (Search algorithm): NAS 검색 알고리즘은 네트워크 아키텍처 후보 집단을 샘플링합니다. 이는 자식 모델 성능 지표를 보상으로 받습니다 (예: 높은 정확도, 낮은 지연 시간) 및 고성능 아키텍처 후보를 생성하기 위해 최적화합니다.
평가 전략 (Evaluation strategy): 우리는 검색 알고리즘이 학습할 수 있는 피드백을 얻기 위해 제안된 자식 모델의 성능을 측정하거나 추정하거나 예측해야 합니다. 후보 평가 과정은 매우 비싸고 많은 새로운 방법이 시간이나 컴퓨팅 리소스를 절약하기 위해 제안되었습니다.
검색 공간 (Search Space)
NAS 검색 공간은 기본 네트워크 연산자 집합과 유효한 네트워크 아키텍처를 구성하는 연산자의 연결 방법을 정의합니다.
순차적 레이어별 연산 (Sequential Layer-wise Operations)
신경망 아키텍처의 검색 공간을 설계하는 가장 단순한 방법은 CNN 또는 RNN 을 순차적 레이어별 연산 목록으로 네트워크 토폴로지를 묘사하는 것입니다. 이는 초기 Zoph & Le 2017 와 Baker et al. 2017 의 작업에서 볼 수 있습니다. 네트워크 표현의 직렬화에는 상당한 전문가 지식이 필요하며, 각 연산자는 다른 레이어별 매개변수와 관련이 있으며 이러한 연관성은 하드코딩되어야 합니다. 예를 들어, conv 연산을 예측한 후 모델은 커널 크기, 스트라이드 크기 등을 출력해야 하며; 또는 FC 연산을 예측한 후 다음 예측으로 단위 수를 확인해야 합니다.
생성된 아키텍처가 유효하도록 보장하기 위해 추가 규칙이 필요할 수 있습니다 (Zoph & Le 2017):
- 레이어가 입력 레이어와 연결되지 않은 경우, 해당 레이어는 입력 레이어로 사용됩니다;
- 최종 레이어에서 연결되지 않은 모든 레이어 출력을 가져와서 연결합니다;
- 하나의 레이어가 많은 입력 레이어를 가진 경우, 모든 입력 레이어는 깊이 차원에서 연결됩니다;
- 연결할 입력 레이어의 크기가 다르면 작은 레이어를 0 으로 패딩하여 연결된 레이어가 동일한 크기를 갖도록 합니다.
Skip connection 또한 attention 스타일의 메커니즘을 사용하여 예측할 수 있습니다. $i$ 번째 레이어에서, 이전 레이어 중 어떤 것과 연결할지 표시하기 위해 $i-1$ 개의 콘텐츠 기반 sigmoid 가 추가됩니다. 각 sigmoid 는 현재 노드의 숨겨진 상태 $h_i$ 와 이전 $i-1$ 개 노드의 숨겨진 상태 $h_j (j=1,
ots, i-1)$ 를 입력으로 사용합니다.
순차적 검색 공간은 많은 표현력을 가지지만 매우 크며, 검색 공간을 포괄적으로 커버하기 위해 엄청난 컴퓨팅 자원을 소모합니다. Zoph & Le 2017 의 실험에서는 800 개의 GPU 를 병렬로 28 일 동안 실행했으며, Baker et al. 2017 은 검색 공간을 최대 2 개의 FC 레이어를 포함하도록 제한했습니다.
Cell-based Representation
성공적인 비전 모델 아키텍처 (예: Inception, ResNet) 의 반복 모듈 설계에 영감을 받아, NASNet search space (Zoph et al. 2018) 는 컨볼루션 신경망의 아키텍처를 여러 번 반복하여 사용하는 동일한 셀로 정의하며, 각 셀은 NAS 알고리즘에 의해 예측된 여러 가지 연산을 포함합니다. 잘 설계된 셀 모듈은 데이터셋 간 전이 학습을 가능하게 합니다. 또한 모델 크기를 셀 반복 횟수를 조정하여 쉽게 축소하거나 확대할 수 있습니다.
정확히 말하면, NASNet search space 는 네트워크 구성을 위해 두 가지 유형의 셀을 학습합니다:
Normal Cell: 입력과 출력의 피쳐맵은 동일한 차원을 가집니다.Reduction Cell: 출력 피쳐맵의 너비와 높이가 절반으로 줄어듭니다.
각 셀의 예측은 $B$ 개의 블록 ($B=5$) 으로 그룹화되며 (NASNet 논문에서), 각 블록에는 5 개의 다른 softmax 분류자에 의해 수행된 5 단계의 예측 단계를 포함하며 이는 블록 요소의 이산적 선택에 해당합니다. NASNet search space 는 셀 간 잔차 연결을 가지지 않으며, 모델은 블록 내에서 자체적으로만 skip connection 을 학습합니다.
실험 과정에서, ScheduledDropPath라는 이름의 DropPath 수정 버전이 NASNet 실험의 최종 성능을 크게 개선한다는 것을 발견했습니다. DropPath 는 고정 확률로 경로 (즉, 연산이 연결된 간선) 를 무작위로 제거합니다. ScheduledDropPath 는 훈련 시간 동안 경로의 제거 확률이 선형적으로 증가하는 DropPath 입니다.
Elsken et al. (2019) 은 NASNet search space 의 세 가지 주요 장점을 지적했습니다:
- 검색 공간 크기가 급격히 축소됩니다;
- 모티프 기반 아키텍처는 다른 데이터셋으로 더 쉽게 전이할 수 있습니다.
- 모듈을 반복적으로 쌓아 올리는 아키텍처 엔지니어링의 유용한 디자인 패턴에 대한 강력한 증거를 보여줍니다. 예를 들어, CNN 에 잔차 블록을 쌓거나 Transformer 에 멀티헤드 어텐션 블록을 쌓아 강력한 모델을 구축할 수 있습니다.
Hierarchical Structure
이미 발견된 잘 설계된 네트워크 모티프를 활용하기 위해, NAS search space 는 Hierarchical NAS (HNAS; (Liu et al 2017)) 와 같이 계층 구조로 제한할 수 있습니다. 이는 개별 연산자 (예: 컨볼루션 연산, 풀링, identity 등) 를 포함한 작은 원소 집합으로 시작합니다. 그런 다음 이 원소들이 구성된 작은 서브그래프 (또는 "모티프") 가 재귀적으로 사용되어 더高层次의 계산 그래프를 형성합니다.
수준 $
=1,
\dots, L$ 의 계산 모티프는 $(G^{(\ell)}, \mathcal{O}^{(\ell)})$ 로 표현될 수 있으며,
- $\ ext{O}^{(\ell)}$는 연산자의 집합이며, $\mathcal{O}^{(\ell)} = \{ o^{(\ell)}_1, o^{(\ell)}_2, \dots \}$이다.
- $G^{(\ell)}$는 인접 행렬로, 엔트리가 $G_{ij}=k$일 때 연산자 $o^{(\ell)}_k$가 노드 $i$와 $j$ 사이에 배치됨을 나타낸다. 노드 인덱스는 DAG 의 위상 정렬 순서를 따르며, 인덱스 1 은 소스 (source) 노드이고 최대 인덱스는 싱크 (sink) 노드이다.
계층적 구조에 따라 네트워크를 구축하기 위해 가장 낮은 수준 $\ ext{\ell}=1$부터 시작하여 $m$ 번째 모티프 연산자를 레벨 $\ ext{\ell}$에서 재귀적으로 정의한다.
계층적 표현은 $\ig( \big\ackslash { G_m^{(\ell)} \}\{m=1}^{M\ell} \big\}_{\ell=2}^L, \mathcal{O}^{(1)} \big), \forall \text{\ell}=2, \dots, L$이다. 여기서 $\mathcal{O}^{(1)}$는 기본 연산자의 집합을 포함한다.
$\ ext{assemble}()$ 과정은 위상 정렬 순서를 따라 전제 노드 $j$ 의 모든 특징 맵 (feature map) 을 집계하여 노드 $i$ 의 특징 맵을 순차적으로 계산하는 것과 동치이다:
여기서 $\text{merge}[]$는 논문에서 깊이 우선 연결 (depth-wise concatenation) 로 구현된다.
NASNet 과 동일하게, Liu et al (2017) 의 실험은 반복되는 모듈을 가진 미리 정의된
Action space: Action space 는 컨트롤러가 예측한 자식 네트워크를 정의하기 위한 토큰 목록입니다 (위 섹션에서 더 참조). 컨트롤러는 총 토큰 수 $T$ 를 기준으로 action을 출력하며, 이를 $a_{1:T}$로 표기합니다.Reward: 자식 네트워크가 수렴했을 때 달성할 수 있는 정확도가 컨트롤러 훈련의 보상 $R$입니다.Loss: NAS 는 REINFORCE loss 를 사용하여 컨트롤러 파라미터 $ heta$를 최적화합니다. 우리는 다음과 같은 그래디언트를 통해 기대 보상을 (높은 정확도) 최대화하고자 합니다. 정책 그래디언트에서 좋은 점은 보상이 미분 불가능하더라도 작동한다는 것입니다.
MetaQNN (Baker et al. 2017) 은 Q-learning과 $\ ext{epsilon}$-greedy 탐색 전략을 사용하여 CNN 레이어를 순차적으로 선택하는 에이전트를 훈련시킵니다. 보상은 검증 정확도입니다.
여기서 상태 $s_t$는 레이어 연산과 관련 파라미터의 튜플입니다. 행동 $a$는 연산자 간의 연결성을 결정합니다. Q-값은 두 연결된 연산자가 높은 정확도를 유도할 확신이 얼마나 확실한지에 비례합니다.
Evolutionary Algorithms
NEAT (NeuroEvolution of Augmenting Topologies의 약칭) 은 2002 년 Stanley & Miikkulainen 가 제안한 유전 알고리즘 (GA) 을 사용하여 신경 네트워크 토폴로지를 진화시키는 접근법입니다. NEAT 는 연결 가중치와 네트워크 토폴로지를 함께 진화시킵니다. 각 유전자는 노드 가중치와 엣지까지 포함하여 네트워크를 구성하기 위한 완전한 정보를 인코딩합니다. 개체군은 두 부모 유전자 간의 교차 및 가중치와 연결의 돌연변이를 적용함으로써 성장합니다. 신경 진화에 대한 자세한 내용은 Stanley et al. (2019) 의 심층 조사에 참조하세요.
Real et al. (2018) 은 AmoebaNet으로 명명된 고성능 네트워크 구조를 탐색하는 방법으로 진화 알고리즘 (EA) 을 채택합니다. 그들은 각 반복에서 무작위 샘플 집합 중 최선의 후보를 선택하고 돌연변이 후손을 개체군에 다시 배치하는 토너먼트 선택 방법을 적용합니다. 토너먼트 크기가 $1$일 경우 이는 랜덤 선택과 동일합니다.
AmoebaNet 은 토너먼트 선택을 수정하여 younger 유전형을 선호하고 각 사이클 내에서 항상 가장 오래된 모델을 폐기하도록 했습니다. 이러한 접근법을 aging evolution이라고 하며, 이는 AmoebaNet 이 좋은 성능 모델에 너무 일찍 수렴하기보다는 더 넓은 탐색 공간을 커버하고 탐험할 수 있게 합니다.
정확히 말하면, aging regularization 을 적용한 토너먼트 선택의 각 사이클에서 (Figure 11 참조):
- 개체군에서 $S$개의 모델을 샘플링하고 가장 높은 정확도를 가진 모델을 parent로 선택합니다.
- 돌연변이를 통해 parent를 변형하여 child모델을 생성합니다.
- 그런 다음 child 모델은 훈련, 평가 및 개체군에 다시 추가됩니다.
- 가장 오래된 모델은 개체군에서 제거됩니다.
두 가지 유형의 돌연변이가 적용됩니다:
Hidden state mutation: 무작위로 쌍을 이루는 조합을 선택하고 그래프에 루프가 없도록 랜덤한 끝을 리와이어합니다.Operation mutation: 기존 연산자를 무작위 연산자로 대체합니다.
실험에서 EA 와 RL 은 최종 검증 정확도 측면에서 동일하게 잘 작동하지만, EA 는 더 나은 anytime 성능을 가지며 더 작은 모델을 찾을 수 있습니다. 여기서는 NAS 에서 EA 를 사용하더라도 각 실험이 450 개의 GPU 를 사용하여 7 일 동안 소요되므로 계산 비용이 여전히 높습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Lilian Weng Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기