CodeBlanks Logo Icon CodeBlanks

Fine-tuning

BERT, sınıflandırma gibi görevler için fine-tuning yapılır.

İnce ayar

İnce ayarda önceden eğitilmiş BERT'in üstüne küçük bir görev katmanı (ör. 768 → 2 doğrusal katman) eklenir ve tüm model küçük bir öğrenme oranıyla birkaç tur eğitilir:

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
    "dbmdz/bert-base-turkish-cased", num_labels=2)
# tipik: lr = 2e-5, 2-4 tur, yığın 16-32, ısınma + doğrusal azalma

Az veride ya da kısıtlı donanımda gövde dondurulup yalnızca baş eğitilebilir; bu daha hızlıdır ama genellikle daha düşük doğruluk verir.

Isınma ve azalma takvimi

BERT ince ayarında öğrenme oranı önce sıfırdan hedefe doğrusal olarak ısınır, sonra sıfıra doğru doğrusal azalır. Isınma, rastgele başlatılan başın ilk adımlarda gövdeyi bozmasını önler:

def lr(adim, toplam, isinma, tepe=2e-5):
    if adim < isinma:
        return tepe * adim / isinma
    return tepe * (toplam - adim) / (toplam - isinma)

Hugging Face'te get_linear_schedule_with_warmup aynı takvimi uygular.

Uygulama Takvim ve eğitilebilir parametreler

lr(adim, toplam, isinma) fonksiyonunu yaz. toplam=1000, isinma=100 için 0, 50, 100, 550 ve 1000. adımdaki oranları aynı satırda yazdır. Ardından BERT-base (109 482 240 parametre) üstüne 768 → 2 sınıflandırma başı eklenince tam ince ayarda ve gövde donukken eğitilen parametre sayılarını aynı satırda yazdır.

Başlangıç kodu

model.py
govde = 109_482_240

# buraya yaz

Örnek çözüm

model.py
govde = 109_482_240

def lr(adim, toplam, isinma, tepe=2e-5):
    if adim < isinma:
        return tepe * adim / isinma
    return tepe * (toplam - adim) / (toplam - isinma)

print(*[lr(a, 1000, 100) for a in [0, 50, 100, 550, 1000]])
bas = 768 * 2 + 2
print(govde + bas, bas)

Beklenen çıktı

0.0 1e-05 2e-05 1e-05 0.0
109483778 1538

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İnce ayarda öğrenme oranı neden küçük (ör. 2e-5) seçilir?

  • Önceden öğrenilmiş bilgiyi bozmamak (felaket unutmayı önlemek) için Doğru cevap
  • Eğitimi hızlandırmak için
  • Bellek kazanmak için
  • Tokenizasyon gerektirdiği için

Açıklama: Büyük adımlar ön eğitimle öğrenilen ağırlıkları hızla bozar.

2 Isınma döneminde oranı doğrusal artır.

Soru
return tepe * adim / ____
Cevap
return tepe * adim / isinma

Açıklama: adim = isinma olduğunda oran tepeye ulaşır.

3 Eşleştir.

Kavram Anlamı
tüm model eğitilir Tam ince ayar
yalnızca baş Dondurulmuş gövde
ısınma Oran sıfırdan artar
2e-5 Tipik öğrenme oranı

Uzman bölümündeki tüm dersler