8. ünite / 10
Aşırı öğrenme ve düzenlileştirme
Yanlılık–varyans, aşırı öğrenme belirtileri; dropout, ağırlık sönümü (L2 / AdamW), erken durdurma, veri artırma, BatchNorm.
Bu ünitenin sonunda
- Kayıp eğrilerinden aşırı ve yetersiz öğrenmeyi ayırt etmek
- Dropout'un eğitim ve çıkarımda nasıl farklı çalıştığını açıklamak
- Ağırlık sönümünü ve erken durdurmayı uygulayıp etkisini ölçmek
- Veri artırma ve daha çok verinin neden en güçlü düzenlileştirme olduğunu tartışmak
Ders notları
Az ve gürültülü veride büyük bir ağ, genel deseni değil tek tek örnekleri (gürültü dahil) ezberler: eğitim kaybı sıfıra iner, doğrulama kaybı bir noktadan sonra yükselir. Aradaki açık genelleme hatasıdır. Düzenlileştirme, modelin ezberleme kapasitesini kısıtlayan her yöntemdir.
Yöntemler
- Dropout(p): eğitimde her ileri geçişte nöronların p oranını rastgele sıfırlar, kalanları 1/(1 − p) ile ölçekler. Ağ tek bir nörona güvenemez.
model.eval()'da kapalıdır. - Ağırlık sönümü: her adımda ağırlıkları sıfıra doğru biraz çeker (L2 cezası). Adam ile
AdamW'nun ayrık sönümü tercih edilir. - Erken durdurma: doğrulama kaybı belirli bir sabır süresince iyileşmezse dur ve en iyi ağırlıklara dön.
- Veri artırma: döndürme, kırpma, renk oynatma; model aynı nesnenin çeşitlemelerini görür.
- BatchNorm: ara aktivasyonları normalleştirir; eğitimi hızlandırır, hafif düzenlileştirici etkisi vardır.
En güçlü düzenlileştirme daha çok ve daha çeşitli veridir. Düzenlileştirme fazla olursa model yetersiz öğrenir: iki eğri de yüksek kalır.
Görselleştirici
Aşırı öğrenme ve düzenlileştirme deneyi
Az ve gürültülü veride büyük bir ağ ezberler: eğitim kaybı düşer, doğrulama kaybı yükselir. Dropout, ağırlık sönümü (weight decay) ve erken durdurmayı aç; aynı tohumla iki eğrinin arasındaki farkın nasıl kapandığını gör.
Kendin dene
Düzenlileştirme deneyinde önce hiçbir şey açmadan eğit: doğrulama kaybı hangi turdan sonra yükselmeye başladı? Sonra yalnız dropout 0,3, sonra yalnız ağırlık sönümü 0,01, sonra yalnız erken durdurma ile tekrar et; her birinde son doğrulama kaybını ve eğitim–doğrulama açığını tabloya yaz. Eğitim örneğini 40'tan 200'e çıkar: düzenlileştirmesiz açık ne oldu?
Kod
import copy
import torch
from torch import nn
model = nn.Sequential(nn.Linear(2, 64), nn.ReLU(), nn.Dropout(0.3), # eğitimde nöronların %30'u sıfırlanır
nn.Linear(64, 64), nn.ReLU(), nn.Dropout(0.3),
nn.Linear(64, 1))
opt = torch.optim.AdamW(model.parameters(), lr=0.01, weight_decay=0.01) # ayrık ağırlık sönümü
def egit_bir_tur(): ... # 5. ünitedeki döngü
def dogrula() -> float: ...
best, best_state, sabir, bekle = float('inf'), None, 15, 0
for epoch in range(500):
egit_bir_tur()
va = dogrula()
if va < best - 1e-4:
best, best_state, bekle = va, copy.deepcopy(model.state_dict()), 0
else:
bekle += 1
if bekle >= sabir: # 15 turdur iyileşme yok: dur
print('erken durdurma, tur', epoch)
break
model.load_state_dict(best_state) # en iyi doğrulama kaybındaki ağırlıklara dönColab defteri
PyTorch tarayıcıda çalışmaz; gerçek kodu Google Colab'da (ücretsiz GPU ile) çalıştır. Defteri indir, colab.research.google.com adresinde "Dosya → Not defteri yükle" ile aç, "Çalışma zamanı → Çalışma zamanı türünü değiştir → T4 GPU" seç ve hücreleri sırayla çalıştır.
Defteri indir (.ipynb)Sık yapılan hatalar
- Dropout'u çıkarımda açık bırakmak (model.eval() unutulur): her tahmin farklı çıkar.
- Erken durdurmada son ağırlıkları kullanmak: en iyi turdaki ağırlıklara (state_dict kopyası) dönülmeli.
- Adam ile weight_decay'i L2 sanmak: Adam'da uyarlamalı ölçekle karışır; ayrık sönüm için AdamW kullan.
- Aşırı öğrenmeyi yalnız eğitim doğruluğuna bakarak değerlendirmek: doğrulama eğrisi olmadan görülmez.
Yazılım mühendisliği bağlantısı
Düzenlileştirme denemeleri birer kontrollü deneydir: her seferinde tek bir şeyi değiştir.
- Aynı tohum ve aynı veri ayrımıyla karşılaştır (bu sayfadaki deney gibi); farkın gürültü olmadığından emin olmak için birkaç tohumla tekrarla.
- Sonuçları ablasyon tablosu olarak raporla: temel, +dropout, +sönüm, +erken durdurma.
Kendini sına
Dropout(0,5) çıkarımda (model.eval()) ne yapar?
Erken durdurma neye bakarak durur?
Eğitim ve doğrulama kaybının ikisi de yüksek kalıyorsa ne yapılmalı?
Ağırlık sönümü (L2) ağırlıklara ne yapar?
Bu üniteden sonra bitirme projesinde
- Değerlendirme ve iyileştirme: G1 ve G4; karışıklık matrisi, yanlış örnekler, düzenlileştirme ablasyonu.