GPT nedir?
- Makine Öğrenmesi kursu
- Uzman
- Ders 23/44
- 5 dk
GPT (Generative Pre-trained Transformer), otoregresif metin üretim modelidir.
GPT nedir?
GPT (Generative Pre-trained Transformer), yalnızca transformer decoder bloklarından oluşan bir dil modelidir. Ön eğitim görevi tektir: bir sonraki belirteci tahmin et. Etiket gerekmez; metnin kendisi bir kaydırmayla hem girdi hem hedef olur:
ids = [12, 7, 33, 5, 9]
giris = ids[:-1] # [12, 7, 33, 5]
hedef = ids[1:] # [7, 33, 5, 9]Ölçek büyüdükçe bu basit görev çeviri, özetleme ve kod yazma gibi yetenekleri de ortaya çıkarır (GPT-2: 1.5B, GPT-3: 175B parametre).
Kayıp ve şaşkınlık (perplexity)
Her konumda model sözlük üzerinde bir olasılık dağılımı verir; kayıp, doğru belirtecin olasılığının negatif logaritmasının ortalamasıdır. Perplexity = e^kayıp; modelin her adımda ortalama kaç seçenek arasında "kararsız" kaldığını anlatır:
p_dogru = np.array([0.5, 0.25, 0.125])
kayip = -np.log(p_dogru).mean() # 1.386
print(np.exp(kayip)) # 4.0Rastgele tahmin eden bir model için perplexity sözlük boyutuna eşittir.
Uygulama Girdi, hedef ve perplexity
Verilen ids için girdi ve hedef dizilerini oluşturup aynı satırda yazdır. Sonra model olasılıkları olasilik (her satır bir konum) için doğru hedeflerin olasılıklarını seç, kaybı ve perplexity'yi round(..., 3) ile aynı satırda yazdır. Son olarak 8 kelimelik sözlükte düzgün dağılımın perplexity'sini yazdır.
Başlangıç kodu
import numpy as np
ids = [3, 1, 4, 1, 5]
olasilik = np.array([[0.1, 0.5, 0.1, 0.1, 0.1, 0.1],
[0.05, 0.05, 0.05, 0.05, 0.75, 0.05],
[0.2, 0.4, 0.1, 0.1, 0.1, 0.1],
[0.1, 0.1, 0.1, 0.1, 0.1, 0.5]])
# buraya yazÖrnek çözüm
import numpy as np
ids = [3, 1, 4, 1, 5]
olasilik = np.array([[0.1, 0.5, 0.1, 0.1, 0.1, 0.1],
[0.05, 0.05, 0.05, 0.05, 0.75, 0.05],
[0.2, 0.4, 0.1, 0.1, 0.1, 0.1],
[0.1, 0.1, 0.1, 0.1, 0.1, 0.5]])
giris, hedef = ids[:-1], ids[1:]
print(giris, hedef)
p = olasilik[np.arange(len(hedef)), hedef]
kayip = -np.log(p).mean()
print(round(kayip, 3), round(np.exp(kayip), 3))
print(round(np.exp(-np.log(np.full(8, 1 / 8)).mean()), 3))Beklenen çıktı
[3, 1, 4, 1] [1, 4, 1, 5] 0.648 1.911 8.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 GPT'nin ön eğitimi neden etiketli veri gerektirmez?
- Yalnızca sınıflandırma yapar
- Kayıp fonksiyonu yoktur
- Hedef, metnin bir sonraki belirtecidir; metin kendi etiketidir Doğru cevap
- Etiketleri model üretir
Açıklama: Buna öz-denetimli (self-supervised) öğrenme denir.
2 Hedefi bir adım kaydır.
hedef = ids[____:]
hedef = ids[1:]
Açıklama: Hedef dizisi ikinci belirteçten başlar.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
ids[:-1] |
Girdi |
ids[1:] |
Hedef |
e^kayıp |
Perplexity |
düzgün dağılım |
Perplexity = sözlük boyutu |