본문 바로가기
딥러닝 with Python

[딥러닝 with Python] NAS(Neural Architecture Search) 알아보기 - 강화학습을 기반으로

by CodeCrafter 2025. 2. 23.
반응형

1. NAS(Neural Architecture Search)

- 신경망 설계는 딥러닝 모델의 성능을 결정하는 핵심 요소 중 하나입니다. 그러나 최적의 네트워크 구조를 찾는 것은 보통 연구자들의 경험과 실험에 의존하는 수작업 과정이 필요합니다. 이를 해결하기 위해 Neural Architecture Search라는 개념이 등장하게 되었습니다.

 

- Neural Architecture Search(NAS)는 이러한 문제를 해결하기 위해, 최적의 신경망 구조를 자동으로 탐색하는 방법입니다.

 

- 이는 주어진 데이터셋과 태스크에 대해 최적의 성능을 보이는 신경망 구조를 자동으로 설계하는 것입니다. 이를 통해 연구자들은 더 효과적인 모델을 빠르게 찾을 수 있으며, 모델 개발 시간을 단축할 수 있습니다.

 

- 특히, 기존 신경망의 설계에서는 

 a) 연구자의 경험에 의존하여 신경망을 설계하거나

 b) 수많은 실험을 거쳐 최적의 구조를 찾아야 하므로 시간과 비용이 많이 들며

 c) 하드웨어 및 응용 환경에 따라 모델을 최적화하는 것이 어렵다

 는 문제점들이 있습니다. 

 

- 이를 해결하기 위해 NAS가 적용되었으며, 이를 수학적인 수식으로 정의하면 아래와 같습니다.

 

 

이번 포스팅에서는 강화학습을 기반으로 한 NAS 방법에 대해서 알아보도록 하겠습니다.

 

2. 강화학습 기반 NAS

- 강화학습 기반 NAS는 신경망 구조를 정의하는 컨트롤러(Controller)를 학습하여 최적의 아키텍처를 탐색합니다.

- 여기서 컨트롤러는 강화학습의 에이전트(Agent)로 작동하며, 생성한 아키텍처의 성능을 기반으로 보상을 받아 탐색 전략을 개선합니다.

 

- 강화학습 기반의 NAS는 다음과 같이 강화학습의 주요 구성요소를 정의합니다.

 

a) 에이전트

 * 신경망 구조를 설계하는 역할을 하며, 일반적으로 RNN이나 Transformer 또는 강화학습 정책 네트워크를 사용합니다.

 * 각 신경망 레이어의 하이퍼파라미터(필터 크기, 채널 수, 활성화 함수 종류 등)를 결정합니다.

b)환경

 * 에이전트가 생성한 신경망 구조를 실제로 학습시키고 성능을 평가하는 역할을 합니다.

 * 평가 방식은 해당 아키텍처를 일정 에포크 동안 훈련한 후 성능(Accruacy, F1 score, FLOPs 등)을 측정합니다.

 c)보상함수

 * 성능 평가 결과를 기반으로 보상을 계산하여 에이전트에게 피드백을 제공해주는 역할을 하며, Accuracy나 FLOPs 제약을 고려한 점수를 사용할 수 있게합니다.

 d) 탐색 기법

 * 에이전트가 새로운 신경망 구조를 탐색하는 과정에서 탐색(Exploration)과 활용(Exploitation)의 균형을 맞추어갑니다.

 * 이때 Policy Gradient 또는 Q-learning 등의 기법을 사용해 점진적으로 더 나은 아키텍처를 찾아갑니다.

 

 

- 대표적인 강화학습 기반의 NAS 연구를 한 논문은

 " NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING ( Zoph & Le, 2017 )" 입니다.

 

- 해당 논문에서는 아래 그림과 같이 NAS의 구조를 설명하는데요

* 컨트롤러는 RNN 기반이고, 이는 신경망의 아키텍처를 샘플링하고 샘플링하는 확률은 p입니다.

* 컨트롤러는 p의 확률로 생성한 아키텍처인 A를 가지고 실제 신경망인 Child Network를 학습시키고, 학습된 네트워크의 성능을 평가해 정확도인 R을 얻습니다.

* 정확도인 R을 기반으로 컨트롤러를 업데이트하며, 정확도가 높은 아키텍처일수록 강화학습의 보상 함수인 R이 증가하여 컨트롤러가 더 나은 아키텍처를 생성하도록 합니다. 

 

이때 RNN 기반의 아키텍처를 컨트롤러로 생성하는 이유는, 하나의 신경망을 이루는 여러개의 서례 요소(레이어, 필터 크기, 채널 수 등)을 연속적이고 순차적으로 탐색하기 위함입니다.

 

예시를 보면 아래와 같습니다.

 

 

* 즉, 각 선택은 앞에서 선택된 값과 연관될 수 있으며, 순차적인 의사 결정 과정을 따라야합니다.

* 하나의 신경망 구조는 토큰들의 시퀀스처럼 표현될 수 있기 때문입니다.

반응형

댓글