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
- 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.
- 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.
- Tam fine-tuning: Tüm ağ düşük learning rate ile eğitilir. Veri yeterliyse ve görev farklıysa.
- 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.
İlgili Derin Öğrenme soruları
- NumPy ile sayısal olarak kararlı (numerically stable) softmax ve cross-entropy loss yazın. Logit'lere göre gradyanı nedir?
- PyTorch ile bir sınıflandırma modeli için eksiksiz bir training loop yazın. Hangi adımlar sık unutulur?
- Embedding nedir? One-hot encoding'e göre avantajı nedir ve nerelerde kullanılır?
- Transformer mimarisini anlatın. Encoder-only, decoder-only ve encoder-decoder modeller arasındaki fark nedir?
- 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.
- RNN ve LSTM nasıl çalışır? Transformer'lar neden büyük ölçüde onların yerini aldı?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.