Meta Learning
Meta-öğrenme, bir modelin az sayıda örnekle yeni bir göreve uyum sağlaması için onu çok sayıda görev üzerinde eğitir. Bölümlerin, MAML'ın ve prototip ağların nasıl çalıştığını öğren.
Genellikle "öğrenmeyi öğrenme" olarak adlandırılan meta-öğrenme, modelin yeni bir göreve çoğunlukla az sayıda etiketli örnekle hızla uyum sağlayabilmesi için modeli birbiriyle ilişkili birçok görev üzerinde eğiten bir makine öğrenimi (ML) yaklaşımıdır. Denetimli öğrenme tek bir veri kümesine uyum sağlarken meta-öğrenme, öğrenme sürecinin kendisini optimize eder: başlangıç ağırlıklarını, örnekleri karşılaştırmak için kullanılan gömme uzayını veya tek bir ileri geçişte örneklerden öğrenen bir ağı. Başlıca uygulaması, her biri için bir ila birkaç örnekten yeni sınıfları tanıyan az örnekli öğrenmenin yanı sıra yeni koşullara anında uyum sağlaması gereken robotları ve diğer ajanları kapsar.
Meta-Öğrenme Nasıl Çalışır#
Meta-öğrenme, modelin test sırasında karşılaşacağı durumu taklit eden bölümler hâlinde eğitim yapar. Her bölümde bir görev örneklenir; örneğin, her biri bir etiketli görüntü içeren beş sınıftan oluşturulmuş 5 yönlü, 1 örnekli bir sınıflandırma problemi. Etiketli örnekler destek kümesini, aynı sınıflara ait ve eğitim dışında tutulan örnekler ise sorgu kümesini oluşturur. İç döngüde model destek kümesine uyum sağlar; dış döngüde ise uyarlanmış modelin sorgu kümesindeki başarısına göre meta parametreler güncellenir. Böylece model tek bir görevi ezberlemek yerine iyi uyum sağladığı için ödüllendirilir. Meta testinde kullanılan sınıflar meta eğitiminde hiçbir zaman yer almaz.
Başlıca Yaklaşımlar#
- Optimizasyon tabanlı: Modelden Bağımsız Meta-Öğrenme (MAML), yeni bir görevin destek kümesinde atılan bir veya birkaç gradyan inişi adımının iyi performans vermesini sağlayan bir başlangıç noktası öğrenir. Dış döngü, iç güncelleme üzerinden türev alır ve bu ikinci dereceden gradyanlar gerektirir. OpenAI'nin Reptile gibi birinci dereceden varyantları, her görevde uyarlanmış ağırlıklara doğru başlangıç noktasını kaydırarak bu maliyetten kaçınır.
- Metrik tabanlı: Bu yöntemler, örneklerin uzaklığa göre sınıflandırılabileceği bir gömme uzayı öğrenir. Prototip Ağları, her sınıfın destek gömmelerinin ortalamasını alarak bir prototip oluşturur ve her sorguyu en yakın prototipe atar; böylece test sırasında sınıf eklemek için hiç eğitim gerekmez.
- Model tabanlı: Harici belleğe sahip tekrarlayan sinir ağı (RNN) gibi bir ağ, destek kümesini okur ve sorguların etiketlerini doğrudan tahmin eder; uyarlama prosedürünü aktivasyonlarında öğrenir. GPT-3 makalesi, büyük dil modellerinde (LLMs) bağlam içi öğrenmeyi, istemdeki örneklerden hareketle bir görevi çözme biçimini, bu tür meta öğrenmenin iç döngüsü olarak tanımlarken ön eğitimi dış döngü olarak ele alır.
MAML'ın kendi regresyon kıyaslamasında, küçük bir ağdan her biri 10 noktadan oluşan, genliği ve fazı rastgele belirlenmiş sinüs dalgalarını öğrenmesi istenir. Aşağıdaki PyTorch örneği, her iki döngüyü kullanarak başlangıç değerlerini meta-eğitir ve ardından yeni sinüs dalgalarında tek bir uyarlama adımını test eder:
import torch
import torch.nn.functional as F
from torch import nn
from torch.func import functional_call
torch.manual_seed(0)
net = nn.Sequential(nn.Linear(1, 40), nn.ReLU(), nn.Linear(40, 40), nn.ReLU(), nn.Linear(40, 1))
meta_optimizer = torch.optim.Adam(net.parameters(), lr=0.001)
def sine_task_losses():
"""Sample a sine-wave task, adapt on 10 points with one gradient step, and return query losses before and after."""
amplitude, phase = torch.empty(1).uniform_(0.1, 5), torch.empty(1).uniform_(0, 3.14)
x = torch.empty(20, 1).uniform_(-5, 5)
y = amplitude * torch.sin(x + phase)
params = dict(net.named_parameters())
support_loss = F.mse_loss(functional_call(net, params, x[:10]), y[:10])
grads = torch.autograd.grad(support_loss, list(params.values()), create_graph=True) # inner loop
adapted = {name: p - 0.01 * g for (name, p), g in zip(params.items(), grads)}
before = F.mse_loss(functional_call(net, params, x[10:]), y[10:])
after = F.mse_loss(functional_call(net, adapted, x[10:]), y[10:])
return before, after
# Outer loop: update the shared initialization so that one inner step fits each new task
for step in range(10000):
meta_loss = sum(sine_task_losses()[1] for _ in range(4))
meta_optimizer.zero_grad()
meta_loss.backward()
meta_optimizer.step()
# On 500 unseen sine waves, compare query error before and after the one-step adaptation
losses = torch.tensor([[loss.item() for loss in sine_task_losses()] for _ in range(500)])
print(f"query MSE before adaptation: {losses[:, 0].mean():.2f}, after one step: {losses[:, 1].mean():.2f}")query MSE before adaptation: 3.10, after one step: 0.70 çıktısını verir. Meta-öğrenilmiş başlangıç noktası belirli bir sinüs dalgasına uymaz; ancak 10 nokta üzerinde atılan tek bir gradyan adımı, görülmemiş bir dalganın yeni noktalarındaki hatayı dört kattan fazla azaltır.
Meta-Öğrenme ve İlişkili Terimler#
- Aktarım öğrenmesi: Uyarlanabilirlik için optimize etmeden, büyük bir görevde eğitilmiş ağırlıkları başka bir görevin başlangıç noktası olarak yeniden kullanır. Özel bir veri kümesinde COCO ile önceden eğitilmiş bir Ultralytics YOLO26 algılayıcısını ince ayarlamak, aktarım öğrenmesidir: başlangıç ağırlıkları COCO üzerinde sıradan eğitimden gelir ve uyarlama, az sayıda örnek ve birkaç gradyan adımı yerine etiketli bir veri kümesi ve çok sayıda eğitim epoch'u kullanır.
- Az örnekli öğrenme: Çok az örnekten öğrenme problemidir. Meta-öğrenme çözümlerden biridir; basit bir sınıflandırıcıyla kullanılan önceden eğitilmiş gömmeler de başka bir çözümdür.
- Otomatik makine öğrenimi (AutoML): Genellikle tek seferde bir veri kümesi için mimari ve hiperparametre araması yapar. Bazı incelemeler, görevler arasında hiperparametre öğrenimini meta-öğrenme olarak değerlendirir.
- Sürekli öğrenme: Önceki görevleri unutmadan bir görev dizisi öğrenirken meta-öğrenme, modeli yeni görevleri hızla öğrenmeye hazırlar.
Kıyaslamalar ve Bulgular#
Az örnekli görüntü kıyaslamaları, meta-öğrenme araştırmalarının çoğuna yön verdi: Omniglot, 50 alfabeden 1.623 el yazısı karakter içerir; miniImageNet ise her biri 600 görüntü içeren 100 ImageNet sınıfını meta-eğitim, doğrulama ve test için ayrı sınıflara böler. Sonraki iki çalışma, meta-öğrenmenin katkısını sorguladı. “Hızlı Öğrenme mi, Özellik Yeniden Kullanımı mı?” MAML'in başarısının esas olarak dış döngüde öğrenilen özelliklerin yeniden kullanılmasından geldiğini gösterdi; iç döngüde yalnızca son katmanı uyarlayan basitleştirilmiş ANIL varyantı da MAML ile aynı sonucu verdi. Ardından “Az Örnekli Görüntü Sınıflandırmasını Yeniden Düşünmek”, meta-eğitim sınıflarında olağan denetimli veya öz denetimli eğitimle öğrenilmiş, iyi bir gömme üzerine kurulu doğrusal sınıflandırıcının o dönemin önde gelen az örnekli meta-öğrenme yöntemlerinden daha iyi performans gösterdiğini buldu.










