Neural Architecture Search (NAS)
Sinir mimarisi araması (NAS), katmanları ve bağlantıları arayarak sinir ağı tasarımını otomatikleştirir. Yöntemler, hesaplama maliyetleri ve NAS ile oluşturulmuş modeller.
Sinir ağı mimarisi araması (NAS), sinir ağının yapısını otomatik olarak tasarlayan otomatik makine öğrenimi (AutoML) dalıdır. Bir mühendisin evrişim ve diğer katman türlerini, derinlikleri, genişlikleri ve bağlantıları elle seçmesi yerine bir arama algoritması aday mimariler önerir, her birinin görevde ne kadar iyi performans göstereceğini tahmin eder ve sonuçları kullanarak daha iyilerini önerir. Amaç genellikle doğruluktur; bu amaç çoğunlukla hedef donanımdaki çıkarım gecikmesi, parametre sayısı veya FLOPs gibi bir maliyetle birlikte değerlendirilir. NAS, EfficientNet ve MobileNetV3 dahil, yaygın kullanılan birkaç bilgisayarlı görü omurgasını ortaya çıkardı.
NAS Nasıl Çalışır#
Journal of Machine Learning Research'te yayımlanan bir tarama makalesi, NAS yöntemlerini üç boyuta göre sınıflandırır:
- Arama uzayı: Hangi işlem türlerine, çekirdek boyutlarına ve atlamalı bağlantılara izin verildiği ve bunların nasıl bağlanabileceği gibi oluşturulabilecek mimariler kümesidir. Birçok yöntem, küçük bir tekrarlayan hücre arar ve bu hücrenin kopyalarını üst üste dizer; bu, arama uzayını küçültür ve küçük bir veri kümesinde bulunan hücrenin büyük bir veri kümesine aktarılmasını sağlar.
- Arama stratejisi: Pekiştirmeli öğrenme denetleyicileri ve evrimden gradyan tabanlı yöntemlere ve basit rastgele örneklemeye kadar, hangi adayların deneneceğini seçen algoritmadır.
- Performans tahmin stratejisi: Daha az eğitim dönemi, daha küçük görüntüler veya veri kümeleri, nihai doğruluk tahminleri ya da adaylar arasında paylaşılan ağırlıklar kullanarak bir adayın tam eğitim olmadan nasıl puanlanacağıdır.
Binlerce GPU-Gününden Saatlere#
İlk NAS yöntemleri maliyetliydi, çünkü her aday yakınsayana kadar eğitiliyordu. Zoph ve Le'nin 2016 tarihli çalışmasında, pekiştirmeli öğrenme ile eğitilen tekrarlayan bir denetleyici ağları üretti ve arama aynı anda 800 GPU'da yürütüldü; NASNet'in devam çalışmasında ise CIFAR-10 üzerinde bulunan ve ImageNet'e aktarılan bir hücreyi keşfetmek için dört gün boyunca 500 GPU kullanıldı. AmoebaNet, düzenlileştirilmiş evrim ile benzer sonuçlara yaklaşık 3.150 GPU-gününde ulaştı. ENAS, tüm adayların model ağırlıklarını tek bir büyük ağın alt grafikleri olarak paylaşarak aramayı tek GPU'da 16 saatin altına indirdi; DARTS ise işlemlerin ayrık seçimini sürekli ağırlıklara dönüştürdü, böylece mimarinin kendisi birkaç GPU-gününde gradyan inişi ile optimize edilebildi. Kıyaslama çalışmaları da alandaki beklentileri ölçülü hale getirdi: erken durdurmalı rastgele arama, Penn Treebank ve CIFAR-10 kıyaslamalarında ENAS kadar iyi veya daha iyi performans gösterdi.
Donanım Farkındalıklı NAS ve NAS ile Oluşturulmuş Modeller#
NAS, doğruluğun belirli bir cihazdaki hızla dengelenmesi gereken uç yapay zekâ için verimli modellerde en büyük pratik etkiyi yarattı. MnasNet, gerçek telefonlarda ölçülen gecikmeyi arama hedefine ekledi ve Pixel telefonda 78 ms'de %75,2 ImageNet ilk 1 doğruluğuna ulaştı; MobileNetV2'den 1,8 kat hızlı ve doğruluğu 0,5 puan daha yüksekti. EfficientNet-B0 da benzer bir aramayla ortaya çıktı ve ardından bileşik ölçekleme yöntemiyle B1-B7 ailesine genişletildi; MobileNetV3 ise mobil CPU'lar için ayarlamak üzere donanım farkındalıklı NAS'ı NetAdapt algoritmasıyla birleştirdi. Nesne algılama için Deci'nin AutoNAC arama motoruyla bulunan ve INT8 kuantizasyonundan sonra doğruluk kaybını düşük tutacak şekilde tasarlanan YOLO-NAS modelleri, eğitim için olmasa da çıkarım, doğrulama ve dışa aktarma işlemlerinde NAS sınıfı aracılığıyla Ultralytics paketinde çalışır. NVIDIA, Deci'yi daha sonra satın aldı ve modeller özgün ekipleri tarafından artık güncellenmiyor.
Basit Bir NAS Örneği#
Aşağıdaki örnek, scikit-learn'ün el yazısı rakamları veri kümesindeki çok katmanlı algılayıcıların küçük bir arama uzayında en basit arama stratejisini, rastgele örneklemeyi, uygular. Ucuz bir performans tahmini elde etmek için her aday yalnızca 30 dönem boyunca eğitilir ve doğrulama verilerinde puanlanır:
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 örnek 10 farklı mimari üretir; doğrulama doğruluğu, 8 birimli iki katmanda 0.398 ile 128, 128 ve 16 birimli katmanlarda 0.978 arasında değişir. Dolayısıyla yalnızca mimari seçimi doğruluğu neredeyse 60 puan değiştirir. Tam kapsamlı bir NAS çalıştırması, kazananı yakınsayana kadar yeniden eğitir ve puanını ayrı bir test kümesinde raporlar.
NAS ve İlgili Terimler#
- Hiperparametre ayarı: Sabit bir mimari için öğrenme oranı gibi eğitim ayarlarını optimize eder. NAS, mimarinin kendisini değişken olarak ele alır ve bu iki yöntem genellikle birlikte uygulanır.
- Model budama ve bilgi damıtma: Eğitimden sonra mevcut bir ağı küçültür veya taklit eder; NAS ise eğitimden önce verimli bir tasarım arar.
- Aktarım öğrenimi: Önceden eğitilmiş bir modelin öğrendiği ağırlıkları yeniden kullanır. NAS, bu ağırlıkların dolduracağı yapıyı belirler ve EfficientNet gibi NAS ile bulunan ağlar da popüler önceden eğitilmiş omurgalardır.










