NAS(Neural Architecture Search)는 신경망 관련 공부를 해온 분들이라면 한번쯤 들어본 단어일 것이다. 신경망 구조를 자동으로 설계하고 최적화하는 기법을 의미하는 NAS는 우리가 일반적으로 성능을 높이기 위해 고정된 모델 구조를 제안하는 것과 달리 가장 높은 성능을 보이는 모델 구조를 찾아내는 것을 목적으로 한다.
나도 들어는 봤지만 자세히 알지는 못하기 때문에 조금이나마 개념을 정리하며 공부하려 한다.
NAS
- 주어진 Task와 Dataset에 대해 가장 최적화된 신경망 구조를 자동으로 탐색하는 기법
- Layer 개수, 활성화 함수, 필터 크기 등 사용자가 일반적으로 결정하는 모델 아키텍처 요소를 결정
NAS의 사용 배경
- 최근 딥러닝이 발전하며 모델 구조가 점점 복잡해지고 있음
- 이에 복잡한 모델 구조 속에서 가장 성능이 좋게 나오는 모델 구조를 자동으로 찾고자 함
NAS의 3가지 요소
1. Search Space
- 가능한 신경망 아키텍처의 집합을 의미
(1) Macro(Global) Search Space
- 전체 신경망의 큰 구조를 탐색하는 방식(ex. Layer 유형, Layer 개수, Layer 연결 방식 등)
- 신경망 전체를 탐색하기 때문에 필요한 연산량이 많음
(2) Micro(Cell-based) Search Space
- 신경망의 작은 단위(ex. 블록)를 탐색하는 방식
- 최적의 성능을 내는 작은 단위를 찾고 이를 반복함
- 때문에 연산량이 작고 탐색이 빠르다는 장점을 가짐
2. Search Strategy
- 최적의 신경망 구조를 찾기 위한 방법(어떻게 최적의 아키텍처를 찾아낼 것인가?)
(1) Black-Box Optimization
- 모델 내부 구조를 모른채 최적의 아키텍처를 학습하는 방법
- 대표적으로 Random Search, Local Search, Reinforcement Learning, Evolution, Bayesian Optimization 방법이 있다.
- 좋은 아키텍처를 찾을 가능성이 높지만, 아키텍처 별로 학습을 진행해야하기 때문에 연산 비용이 높다.
예시
Reinforcement Learning: Controller가 아키텍처를 생성하면 해당 아키텍처에 대한 평가를 Reward로 받아 모델을 Update
Evolutionary Algorithm: 유전 알고리즘으로 최적의 아키텍처를 찾은 후 성능이 좋은 모델끼리 Crossover & Mutation
Bayesian Optimization: Surrogate Model은 신경망 구조의 실제 성능을 추정하고, Acquisition Function은 모델이 예측한 성능과 불확실성을 바탕으로 판단을 진행. 이 때 Surrogate Model을 기반으로 Acquisition Function을 최대화하는 아키텍처를 선택함
(2) One-Shot Optimization
- 단일 네트워크를 사용하여 탐색고안에 있는 모든 아키텍처를 포함하는 네트워크(Supernet)를 한번에 학습함(탐색 비용을 줄이기 위함)
- 장점: 각 아키텍처를 별도로 학습할 필요가 없어 탐색 비용이 낮고 탐색 속도가 빠름
- 단점: 가중치 공유로 인한 성능 저하, 메모리 소모
ex. ENAS, DARTS 등
ENAS(Efficient NAS)
- Weight Sharing + RL
- Supernet에서 Subnet을 샘플링하며 평가하고 이를 통해 Supernet과 Controller의 가중치를 업데이트 해나가는 방식
여기서 Controller는 RL에서 신경망 구조를 생성하는 Agent를 말한다. 예시로 생각해보면 Search Space에서 신경망의 어떤 Layer에 어떤 연산을 적용할지를 결정한다고 볼 수 있다.
DARTS(Differentiable Architecture Search)
- 연속적인 탐색 공간에서 경사하강법을 활용하여 신경망 구조를 탐색(최적화 문제로의 변환)
- 일반 NAS에서는 주로 비연속적인 Search Space에서 RL, Evolution을 진행했지만, DARTS에서는 Search Space를 미분가능한 연속적인 Space로 변환시켜 효율적인 탐색을 가능하게 만듦
ProxylessNAS
- 기존 NAS 방식은 대리 모델(Proxy Task)을 사용해 작은 데이터 셋이나 네트워크를 활용해 최적의 아키텍처를 찾음
- 하지만 이 경우 Proxy 모델을 기준으로 탐색하기 때문에 실제 모델에서 다른 성능을 낼 수 있으며, 여러 Proxy 모델을 학습해야하기 때문에 많은 계산 비용이 듦
- 이에 ProxylessNAS에서는 Proxy 모델을 사용하지 않고 실전 환경에서 경사 하강법을 통해 최적의 아키텍처를 찾음(One sample One path)
메타 러닝 개념 추가!
- 메타 러닝 개념을 NAS에 적용하여 매번 처음부터 모델을 탐색하는 NAS와 다르게 이전 탐색 경험을 활용하여 모델을 더 빠르게 탐색할 수 있도록 설계
T-NAS(Task-Agnostic NAS)
- 다양한 데이터셋과 Task에서 NAS를 여러 번 실행하여 공통된 최적화 패턴을 학습
→ 새로운 Task가 주어지면, 과거의 학습된 NAS 경험을 활용하여 빠르게 최적 모델을 탐색
MetaNAS
- T-NAS와 비슷하지만 T-NAS에서 신경망 구조를 자동탐색하고 불필요한 부분을 제거할 때 Hard-pruning으로 가중치를 제거한다면 MetaNAS에서는 Soft-pruning으로 가중치를 점진적으로 줄여나감
이외에도 Transformer 모델을 NAS에 도입한 Evolved Transformer, AutoFormer, NAS for efficient LLM 등의 모델 또한 존재한다.
3. Performance Estimation Strategy
일반적으로 사용되는 평가지표
- Accuracy
- Latency
- FLOPS
본 개념 정리 글은 제가 수업을 듣고 이해한 내용과 인터넷 검색을 통해 찾은 정보를 바탕으로 작성되었습니다. 잘못된 개념이 있다면 언제든 알려주시면 감사하겠습니다.
'AI & CS 지식 > 메타러닝' 카테고리의 다른 글
[메타러닝] 6. AutoAugment (0) | 2024.12.31 |
---|---|
[메타러닝] 4. Bayesian Meta-Learning (0) | 2024.12.16 |
[메타러닝] 3. Meta Reinforcement Learning (1) | 2024.12.16 |
댓글