Catastrophic Forgetting
Felaket düzeyinde unutma, bir sinir ağı yeni verilerle eğitilirken önceki becerilerin aniden kaybolmasıdır. Neden gerçekleştiğini, örnekleri ve önleme yöntemlerini ele alır.
Felaket düzeyinde girişim olarak da adlandırılan felaket düzeyinde unutma, bir sinir ağı artık eski göreve ait örnekleri içermeyen yeni veriler üzerinde eğitildiğinde, önceden öğrendiği becerileri aniden kaybetmesidir. Eğitim güncellemeleri, eski bilgiyi saklayan aynı paylaşılan model ağırlıklarını değiştirir; yeni kayıp fonksiyonunda bu bilgiyi korumayı ödüllendiren hiçbir şey yoktur. Bu nedenle eski görevdeki doğruluk birkaç yüz güncelleme içinde çökebilir. McCloskey ve Cohen bu etkiyi 1989'da aritmetik bilgilerini sırayla öğrenen ağlarda tanımladı. Bu durum, sürekli öğrenmenin temel engeli ve ince ayarda sık karşılaşılan bir risk olmaya devam ediyor.
Felaket Boyutunda Unutma Neden Gerçekleşir#
Bir sinir ağındaki bilgi dağıtılmıştır: her ağırlık birçok çıktıya katkıda bulunur ve her çıktı da birçok ağırlığa bağlıdır. Yeni bir görev üzerinde eğitim, ağırlıkları kayıp fonksiyonunun en hızlı azaldığı yöne taşır; eski görevi ölçen bir terim olmadığından model, eski görevin çalıştığı bölgeden uzaklaşır. Sınıflandırma, çıkış katmanındaki etkiyi belirginleştirir. Eğitim verilerinde yalnızca yeni sınıflar bulunduğunda her adım, bulunmayan sınıfların puanlarını düşürür; ta ki model bu sınıfları hiç tahmin etmez hale gelene kadar. 0–4 el yazısı rakamlarıyla, ardından 5–9 rakamlarıyla eğitilen küçük bir ağ bunu ve eski verilerden küçük bir örneği yeniden oynatmanın etkiyi nasıl sınırladığını gösterir:
import torch
from sklearn.datasets import load_digits
torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
train = torch.arange(len(y)) < 1400 # hold out the last 397 images for testing
task_a, task_b, test_a = train & (y < 5), train & (y >= 5), ~train & (y < 5)
replay = task_a & (torch.rand(len(y)) < 0.1) # keep 10% of task A for replay
for name, second_task in [("task B only", task_b), ("task B + 10% replay", task_b | replay)]:
model = torch.nn.Sequential(torch.nn.Linear(64, 64), torch.nn.ReLU(), torch.nn.Linear(64, 10))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# Train on digits 0-4 (task A), then on digits 5-9 (task B)
for mask in (task_a, second_task):
for _ in range(200):
loss = torch.nn.functional.cross_entropy(model(X[mask]), y[mask])
optimizer.zero_grad()
loss.backward()
optimizer.step()
accuracy = (model(X[test_a]).argmax(1) == y[test_a]).float().mean()
print(f"{name}: held-out digits 0-4 accuracy {accuracy:.1%}")A görevinden sonra ağ, ayrılmış 0–4 rakamlarının 198 örneğinin %92,4'ünü doğru sınıflandırır. Yalnızca 5–9 rakamlarıyla eğitim, model artık sadece yeni sınıfları tahmin ettiği için bu oranı %0,0'a düşürür. İkinci aşamaya A görevinden 66 görüntüyü yeniden oynatarak eklemek doğruluğu %74,7'de tutar.
Uygulamada Felaket Düzeyinde Unutma#
- Nesne algılama: Yayaları ve trafik işaretlerini algılamak üzere eğitilen, ardından yalnızca yeni inşaat işaretlerinin görüntüleriyle ince ayar yapılan bir algılayıcı yayaları algılamayı bırakır. Yeni görüntülerde etiketsiz kalan her yaya, arka plan olarak öğretilir ve unutma hızlanır.
- Büyük dil modelleri: 1 milyardan 7 milyar parametreye kadar LLM'lerde sürekli talimat ince ayarı sırasında alan bilgisi, akıl yürütme ve okuduğunu anlama becerilerinin tümü geriledi; bu aralıkta model boyutu arttıkça unutma daha da şiddetlendi. Hizalanmış modellerin ince ayarı, zararsız verilerle yapılsa bile güvenlik davranışlarını zayıflatabilir.
Felaket Düzeyinde Unutma ve İlgili Terimler#
- Sürekli öğrenme: Önceki görevleri unutmadan bir görevler dizisini öğrenmenin yollarını inceleyen araştırma alanıdır. Felaket düzeyinde unutma, bu alanın ele aldığı sorundur.
- Model çökmesi: Modeller aynı görev üzerinde bile daha önceki modeller tarafından üretilen verilerle eğitildiğinde kalite ve çeşitliliğin kademeli olarak kaybolmasıdır.
- Aşırı öğrenme: Yeni verilerde aynı görevdeki performansı düşürecek kadar mevcut eğitim verilerinin gürültüsüne uyum sağlamaktır. Unutma ise önceki bir görevin kaybedilmesidir.
- Makine unutması: Eğitilmiş bir modelden belirli verileri veya bilgileri bilinçli olarak kaldırmaktır; unutmanın kasıtlı karşılığıdır.
- Kararlılık-esneklik ikilemi: Her azaltma yönteminin farklı biçimde dengelediği, eski bilgileri koruma ile yeni görevleri öğrenecek kadar esnek kalma arasındaki ödünleşimdir.
Felaket Düzeyinde Unutmayı Azaltma Yöntemleri#
Azaltma yöntemleri üç gruba ayrılır: yeniden oynatma, düzenlileştirme ve parametre yalıtımı. Bir projede hangisinin uygulanacağını genellikle projenin kısıtları belirler:
- Yeniden oynatma: Önceki görevlerden saklanan örnekleri yeni eğitime dahil etmek en güvenilir çözümdür; rakam örneğinde de görüldüğü gibi. YOLO26 algılayıcılarında Ultralytics veri YAML dosyaları, eğitim görüntüsü klasörlerinin listesini kabul eder. Bu nedenle yeniden oynatma, eski görüntülerden bir örneği yeni görüntülerin yanına, birleştirilmiş tek bir sınıf listesi altında eklemek demektir.
- Düzenlileştirme: Elastik ağırlık birleştirme (EWC), önceki görevler için önemine göre her ağırlıktaki değişikliği cezalandırır; bu önem Fisher bilgisiyle tahmin edilir. Unutmadan öğrenme bunun yerine bilgi damıtma kullanır ve modeli yeni veriler üzerindeki eski çıktılarını eşleştirmeyi sürdürmesi için eğitir.
- Parametre yalıtımı: Paylaşılan katmanları dondurmak, göreve özgü başlıklar eklemek veya LoRA gibi bağdaştırıcılar eğitmek, özgün ağırlıkları değiştirmeden bırakır. Programlama ve matematik görevlerinde LoRA, tam ince ayardan daha az öğrendi ama daha az unuttu; tam ince ayarda ağırlık değişikliklerinin rütbesi, tipik LoRA yapılandırmalarına kıyasla 10 ila 100 kat daha yüksekti.










