Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

Bölüm 8 · Büyük dil modellerinin parçaları · Ders 34

Dikkat mekanizması

"o" kimi kastediyor? Sorgu, anahtar, değer ve softmax

Veri. Robota sesli bir rapor geliyor: "robot kutuyu aldı çünkü o hafifti". Burada "o" kutu; "o güçlüydü" deseydik robot olurdu. Dil modeli bunu dikkat ile çözer. Altı kelimenin her birine 5 sayılık elle kurulmuş bir vektör verdik (ajan, nesne, eylem, hafif, güçlü) ve dil modellerindeki hesabı birebir yapıyoruz; yalnız boyutlar küçük.

altı kelimelik bir cümlesorgu "o" · d = 3 · τ = 1,00
1 / 60
dikkat.pypython
  1. import numpy as np
  2. words = ["robot", "box", "picked", "because", "it", "light"]
  3. X = np.array([[1, 0, 0, 0, 0], # robot: ajan
  4. [0, 1, 0, 0, 0], # kutu: nesne
  5. [0, 0, 1, 0, 0], # aldı: eylem
  6. [0, 0, .5, 0, 0], # çünkü
  7. [.5, .5, 0, 0, 0], # o: ajan mı nesne mi?
  8. [0, 0, 0, 1, 0]], float) # hafifti (güçlüydü: 0,0,0,0,1)
  9. X[4] += X[5] # önceki katman: "o" cümle sonunu görmüş
  10. WQ = 2.5 * np.array([[0, 0, 1], [0, 0, 1], [1, 1, 0], # sütunlar: ajan, nesne, eylem arar
  11. [0, 2, 0], [2, 0, 0]]) # hafif → nesne, güçlü → ajan
  12. WK = WV = np.eye(5, 3) # anahtar = değer = ilk 3 özellik
  13. Q, K, V = X @ WQ, X @ WK, X @ WV
  14. d, tau = K.shape[1], 1.0 # d = 3, sıcaklık
  15. S = Q @ K.T # benzerlik: her sorgu · her anahtar
  16. S = S / (np.sqrt(d) * tau) # ölçekle
  17. A = np.exp(S - S.max(1, keepdims=True)) # softmax: üs al
  18. A = A / A.sum(1, keepdims=True) # satır toplamı 1
  19. out = A @ V # değerlerin ağırlıklı karışımı
  20. print(A[4].round(2), words[A[4].argmax()]) # "o" kime bakıyor?
  21. print(out[4].round(2)) # "o"nun yeni vektörü

Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.

Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.

Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide

Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.

dikkat.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. Her kelime üç vektör üretir: sorgu (Q, "ne arıyorum"), anahtar (K, "ben neyim"), değer (V, "ne taşıyorum"). Bunlar kelime vektörünün üç ayrı matrisle çarpımıdır.
  2. Benzerlik: sorgunun her anahtarla nokta çarpımı. Ölçekleme: √d’ye (burada √3) bölünür ki boyut büyüdükçe sayılar patlamasın; τ sıcaklığıyla da bölüyoruz.
  3. Softmax: her sayının üssü alınır ve toplama bölünür; satırın toplamı 1 olur, yani ağırlıklar bir olasılık dağılımıdır.
  4. Karışım: kelimenin yeni vektörü, değerlerin bu ağırlıklarla ortalamasıdır. "o"nun yeni vektörü çoğunlukla "kutu"nun değerini taşır.
  5. Şunu dene: son kelimeyi "güçlüydü" yap; dikkat robota kayar. τ’yu 3 yap; dağılım düzleşir ve karar bulanıklaşır.

Neden önemli

Dikkat, transformer’ın kalbidir: ChatGPT gibi modeller her katmanda, her kelime için bu hesabı binlerce boyutta ve onlarca "kafa" ile yapar; sunuculardaki GPU’ların işinin büyük kısmı bu matris çarpımlarıdır. Robotikte aynı mekanizma sesli komutları anlamada, kamera görüntüsünün parçaları arasında ilişki kurmada ve görme-dil-eylem modellerinde kullanılır.

ESOF 323, 11. hafta: robotlarda derin öğrenme →
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç