Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Neural Architecture Search (NAS)

신경망 아키텍처 탐색(NAS)은 레이어와 연결을 탐색해 신경망 설계를 자동화합니다. 방법, 연산 비용, NAS로 구축한 모델을 살펴봅니다.

신경망 아키텍처 탐색(NAS)은 자동화 머신러닝(AutoML) 분야 중 하나로, 신경망의 구조를 자동으로 설계합니다. 엔지니어가 컨볼루션 및 기타 레이어 유형, 깊이, 너비, 연결을 직접 선택하는 대신 탐색 알고리즘이 후보 아키텍처를 제안하고, 각 아키텍처의 작업 성능을 추정한 후 결과를 활용해 더 나은 아키텍처를 제안합니다. 목표는 대개 정확도이며, 대상 하드웨어의 추론 지연 시간, 파라미터 수 또는 FLOPs와 같은 비용을 함께 고려하기도 합니다. NAS는 EfficientNet과 MobileNetV3를 비롯해 널리 사용되는 여러 컴퓨터 비전 백본을 만들어 냈습니다.

NAS의 작동 방식#

Journal of Machine Learning Research의 서베이 논문은 NAS 방법을 세 가지 차원으로 분류합니다.

  1. 탐색 공간: 구축할 수 있는 아키텍처의 집합입니다. 사용할 수 있는 연산 유형, 커널 크기, 스킵 연결 및 연결 방식 등이 여기에 포함됩니다. 많은 방법은 반복해서 쌓을 수 있는 작은 셀을 탐색합니다. 이 방식은 공간을 줄이고 작은 데이터셋에서 찾은 셀을 대규모 데이터셋에 적용할 수 있게 합니다.
  2. 탐색 전략: 강화 학습 컨트롤러, 진화 알고리즘, 경사 기반 방법, 단순 무작위 샘플링 등을 포함해 시도할 후보를 선택하는 알고리즘입니다.
  3. 성능 추정 전략: 학습 에포크 수를 줄이거나 더 작은 이미지 또는 데이터셋을 사용하고, 최종 정확도를 예측하거나 후보 간 가중치를 공유하여 전체 학습 없이 후보의 점수를 매기는 방법입니다.

수천 GPU일에서 몇 시간으로#

초기 NAS는 각 후보를 수렴할 때까지 학습했기 때문에 비용이 많이 들었습니다. Zoph와 Le의 2016년 연구에서는 강화 학습으로 학습한 순환 컨트롤러가 네트워크를 생성했고 탐색은 GPU 800개에서 동시에 실행되었습니다. 후속 연구인 NASNet은 GPU 500개를 4일간 사용해 CIFAR-10에서 ImageNet으로 전이할 수 있는 셀을 찾았습니다. AmoebaNet은 정규화된 진화 기법으로 비슷한 결과를 얻었지만 약 3,150 GPU일이 들었습니다. ENAS는 대규모 네트워크 하나의 서브그래프로 간주되는 모든 후보가 모델 가중치를 공유하게 하여 단일 GPU에서 탐색 시간을 16시간 미만으로 줄였습니다. DARTS는 연산의 이산 선택을 연속 가중치로 완화해 아키텍처 자체를 며칠간의 GPU 연산으로 경사 하강법 최적화할 수 있게 했습니다. 벤치마킹은 이 분야의 기대를 조정하기도 했습니다. Penn Treebank 및 CIFAR-10 벤치마크에서 조기 중단을 적용한 무작위 탐색은 ENAS와 최소한 동등한 성능을 보였습니다.

하드웨어 인식 NAS 및 NAS로 구축한 모델#

NAS는 특정 디바이스에서 속도와 정확도의 균형을 맞춰야 하는 엣지 AI용 효율적인 모델에 가장 큰 실질적 영향을 미쳤습니다. MnasNet은 실제 휴대전화에서 측정한 지연 시간을 탐색 목표에 포함해 Pixel 휴대전화에서 78ms에 ImageNet top-1 정확도 75.2%를 달성했습니다. 이는 MobileNetV2보다 1.8배 빠르고 정확도는 0.5% 높습니다. EfficientNet-B0도 비슷한 탐색으로 만들어진 후 복합 스케일링으로 B1~B7 제품군까지 확장되었습니다. MobileNetV3는 하드웨어 인식 NAS와 NetAdapt 알고리즘을 결합해 모바일 CPU에 맞게 조정했습니다. 객체 탐지에서는 Deci의 YOLO-NAS 모델이 AutoNAC 탐색 엔진으로 탐색되었으며 INT8 양자화 후에도 정확도 손실이 적도록 설계되었습니다. 이 모델은 학습을 제외한 추론, 검증, 내보내기에 NAS 클래스를 통해 Ultralytics 패키지에서 실행할 수 있습니다. 이후 NVIDIA가 Deci를 인수했으며, 원래 팀은 더 이상 해당 모델을 업데이트하지 않습니다.

간단한 NAS 예제#

다음 예제는 scikit-learn의 손글씨 숫자 데이터에서 다층 퍼셉트론의 작은 탐색 공간을 대상으로 가장 단순한 탐색 전략인 무작위 샘플링을 실행합니다. 비용을 줄이기 위해 각 후보는 에포크 30회만 학습하고 검증 데이터로 점수를 계산합니다.

import random
import warnings

from sklearn.datasets import load_digits
from sklearn.exceptions import ConvergenceWarning
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier

warnings.simplefilter("ignore", ConvergenceWarning)  # short training runs are the cheap estimate
X, y = load_digits(return_X_y=True)
X_train, X_val, y_train, y_val = train_test_split(X / 16, y, random_state=0)

# Search space: 1-3 hidden layers, each 8-128 units wide. Search strategy: 12 random samples
random.seed(0)
space = [8, 16, 32, 64, 128]
candidates = {tuple(random.choices(space, k=random.randint(1, 3))) for _ in range(12)}

# Performance estimation: train each candidate for only 30 epochs, then score it on validation data
scores = {}
for layers in candidates:
    model = MLPClassifier(hidden_layer_sizes=layers, max_iter=30, random_state=0)
    scores[layers] = model.fit(X_train, y_train).score(X_val, y_val)

worst, best = min(scores, key=scores.get), max(scores, key=scores.get)
print(f"{len(scores)} architectures: worst {worst} {scores[worst]:.3f}, best {best} {scores[best]:.3f}")

12개 샘플에서 서로 다른 아키텍처 10개가 나오며, 검증 정확도는 유닛이 8개인 레이어 2개를 사용한 모델의 0.398부터 유닛이 128개, 128개, 16개인 레이어를 사용한 모델의 0.978까지 분포합니다. 따라서 아키텍처 선택만으로 정확도가 거의 60%p 달라집니다. 전체 NAS 실행에서는 최적 모델을 수렴할 때까지 다시 학습하고 별도의 테스트 세트에서 점수를 보고합니다.

  • 하이퍼파라미터 튜닝: 고정된 아키텍처에서 학습률과 같은 학습 설정을 최적화합니다. NAS는 아키텍처 자체를 변수로 다루며, 두 방법은 함께 실행되는 경우가 많습니다.
  • 모델 가지치기 및 지식 증류: 학습이 끝난 후 기존 네트워크의 크기를 줄이거나 기존 네트워크를 모방합니다. NAS는 학습 전에 효율적인 설계를 탐색합니다.
  • 전이 학습: 사전 학습된 모델의 학습된 가중치를 재사용합니다. NAS는 해당 가중치가 채워질 구조를 결정하며, EfficientNet과 같이 NAS로 발견한 네트워크 자체도 널리 사용되는 사전 학습 백본입니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요