Self-attention
- Makine Öğrenmesi kursu
- Uzman
- Ders 2/44
- 5 dk
Self-attention, bir dizinin her elemanının diğerleriyle ilişkisini hesaplar.
Self-attention
Öz-dikkatte dizinin her elemanı aynı dizinin tüm elemanlarına (kendisi dahil) dikkat eder. n elemanlı dizide n × n'lik bir ağırlık matrisi oluşur; her satır bir elemanın dağılımıdır:
X = np.random.default_rng(0).normal(size=(4, 8)) # 4 eleman, 8 boyut
skor = X @ X.T # (4, 4) benzerlikler
A = softmax(skor, eksen=1) # satır başına olasılık
Y = A @ X # (4, 8) yeni temsillerHesap n² ile büyür: 1000 kelimelik metin 1 milyonluk bir matris demektir. Uzun bağlam modellerinin temel maliyeti budur.
Dikkat matrisinin özellikleri
Softmax satır başına uygulandığı için her satırın toplamı 1'dir ve tüm elemanlar pozitiftir. Benzerlik kendi kendine en yüksek olduğundan (vektörün kendisiyle iç çarpımı) köşegen genellikle baskındır:
print(A.sum(axis=1)) # [1. 1. 1. 1.]
print((A.argmax(axis=1) == np.arange(4)).all()) # her eleman en çok kendine bakarGerçek modellerde Q, K, V ayrı öğrenilen dönüşümler olduğu için bu köşegen baskınlığı kırılır; bir sonraki derste bunu göreceksin.
Uygulama Öz-dikkat
Verilen X için X @ X.T skorlarından satır başına softmax ile dikkat matrisini hesapla. Şeklini ve satır toplamlarını (np.round(..., 3)) alt alta, ardından her elemanın en çok kendine baktığını (argmax köşegende) yazdır.
Başlangıç kodu
import numpy as np
def softmax(z, eksen=-1):
e = np.exp(z - z.max(axis=eksen, keepdims=True))
return e / e.sum(axis=eksen, keepdims=True)
X = np.random.default_rng(0).normal(size=(4, 8))
# buraya yazÖrnek çözüm
import numpy as np
def softmax(z, eksen=-1):
e = np.exp(z - z.max(axis=eksen, keepdims=True))
return e / e.sum(axis=eksen, keepdims=True)
X = np.random.default_rng(0).normal(size=(4, 8))
A = softmax(X @ X.T, eksen=1)
print(A.shape)
print(np.round(A.sum(axis=1), 3))
print((A.argmax(axis=1) == np.arange(4)).all())Beklenen çıktı
(4, 4) [1. 1. 1. 1.] True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 512 belirteçlik bir dizide dikkat matrisinin kaç elemanı vardır?
- 262144 Doğru cevap
- 512
- 1024
- 5120
Açıklama: 512 × 512 = 262144; uzunluk iki katına çıkınca maliyet dört katına çıkar.
2 Tüm çiftlerin benzerliğini hesapla.
skor = X @ X.____
skor = X @ X.T
Açıklama: X Xᵀ her satır çiftinin iç çarpımıdır.
3 Şekilleri eşleştir (n=4, d=8).
| Kavram | Anlamı |
|---|---|
X |
(4, 8) |
X @ X.T |
(4, 4) |
A.sum(axis=1) |
Hepsi 1 |
A[0] |
(4,) |