Fine-tuning
- Makine Öğrenmesi kursu
- Uzman
- Ders 20/44
- 5 dk
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 azalmaAz 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
govde = 109_482_240
# buraya yazÖrnek çözüm
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.
return tepe * adim / ____
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ı |