Transfer learning nedir? Önceden eğitilmiş bir modeli küçük bir veri setine nasıl fine-tune edersiniz?

Cevap

Transfer learning, büyük bir veri setinde önceden eğitilmiş (pretrained) bir modelin öğrendiği genel temsilleri yeni, genelde daha küçük bir göreve aktarmaktır. Sıfırdan eğitime göre çok daha az veri, hesaplama ve zaman gerektirir.

Stratejiler

  1. Feature extraction: Backbone tamamen dondurulur (freeze), sadece yeni eklenen sınıflandırıcı katman eğitilir. Veri çok azsa ve görev pretraining'e benziyorsa.
  2. Kısmi fine-tuning: Son birkaç katman açılır, ilk katmanlar donuk kalır. İlk katmanlar genel özellikler (kenar, doku), son katmanlar göreve özel özellikler öğrenir.
  3. Tam fine-tuning: Tüm ağ düşük learning rate ile eğitilir. Veri yeterliyse ve görev farklıysa.
  4. PEFT (LoRA, adapter): Özellikle büyük transformer'larda az sayıda ek parametre eğitilir.

Pratik ipuçları

  • Önce sadece yeni head'i birkaç epoch eğitip sonra backbone'u açmak, rastgele başlatılmış head'in büyük gradyanlarının pretrained ağırlıkları bozmasını önler.
  • Backbone için daha küçük, head için daha büyük learning rate (discriminative learning rate).
  • Pretraining ile aynı ön işlemeyi (normalizasyon değerleri, görüntü boyutu, tokenizer) kullan.
  • Data augmentation ve early stopping küçük veride çok önemlidir.
  • Catastrophic forgetting: Çok yüksek LR veya uzun eğitim modelin genel bilgisini bozar.
import torch, torch.nn as nn
from torchvision import models

m = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
for p in m.parameters():
    p.requires_grad = False                      # backbone'u dondur
m.fc = nn.Linear(m.fc.in_features, 5)            # 5 sınıflı yeni head

opt = torch.optim.AdamW([
    {"params": m.fc.parameters(), "lr": 1e-3},
    {"params": m.layer4.parameters(), "lr": 1e-5},  # ikinci aşamada açılacak
])

İkinci aşamada m.layer4 parametrelerinde requires_grad = True yapılarak son blok da eğitilir.

  1. NumPy ile sayısal olarak kararlı (numerically stable) softmax ve cross-entropy loss yazın. Logit'lere göre gradyanı nedir?ZorDerin ÖğrenmeYapay Zeka
  2. PyTorch ile bir sınıflandırma modeli için eksiksiz bir training loop yazın. Hangi adımlar sık unutulur?OrtaDerin ÖğrenmeYapay Zeka
  3. Embedding nedir? One-hot encoding'e göre avantajı nedir ve nerelerde kullanılır?KolayDerin ÖğrenmeYapay Zeka
  4. Transformer mimarisini anlatın. Encoder-only, decoder-only ve encoder-decoder modeller arasındaki fark nedir?ZorDerin ÖğrenmeYapay Zeka
  5. Self-attention nasıl çalışır? Scaled dot-product attention'ı NumPy ile yazın ve neden sqrt(d_k) ile bölündüğünü açıklayın.ZorDerin ÖğrenmeYapay Zeka
  6. RNN ve LSTM nasıl çalışır? Transformer'lar neden büyük ölçüde onların yerini aldı?OrtaDerin ÖğrenmeYapay Zeka

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle