Makine Öğrenmesi
Query, Key, Value
Attention, query ve key'in çarpımıyla ağırlıkları hesaplar ve value'yu toplar.
Query, Key, Value
Her eleman üç farklı role bürünür; her rol öğrenilen bir matrisle üretilir:
- Query (Q = X W_q): "ne arıyorum?"
- Key (K = X W_k): "bende ne var?"
- Value (V = X W_v): "bulunursam ne veririm?"
Q = X @ W_q # (n, d_k)
K = X @ W_k # (n, d_k)
V = X @ W_v # (n, d_v)
A = softmax(Q @ K.T, eksen=1)
Y = A @ V
Ayrı dönüşümler sayesinde "aradığı" ile "sunduğu" farklı olabilir: bir fiil öznesini arayabilir, ama kendisi başka bir şey sunar.
Arama motoru benzetmesi
Attention yumuşak bir sözlük aramasıdır: sorgu (query) tüm anahtarlarla (key) karşılaştırılır, eşleşme oranında değerler (value) karıştırılır. Tek bir anahtar mükemmel eşleşirse sonuç neredeyse o anahtarın değeridir:
K = np.array([[10., 0.], [0., 10.]])
V = np.array([[1., 2.], [3., 4.]])
q = np.array([1., 0.]) # ilk anahtara benziyor
print(np.round(softmax(q @ K.T) @ V, 3)) # [1. 2.]: ilk değer
Klasik sözlükte arama "ya tam eşleşir ya hiç"tir; attention bunun türevlenebilir hâlidir.
Uygulama Q, K, V
X (3 eleman, 4 boyut) ve öğrenilmiş gibi verilen W_q, W_k, W_v ile Q, K, V'yi hesapla. Dikkat matrisini satır başına softmax ile bul; şekillerini (Q.shape, A.shape, Y.shape) aynı satırda, ardından A'nın ilk satırını np.round(..., 3) ile yazdır.
Örnek çözümü göster
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.array([[1., 0., 1., 0.], [0., 1., 0., 1.], [1., 1., 0., 0.]])
W_q = np.eye(4)[:, :2]
W_k = np.eye(4)[:, 1:3]
W_v = np.eye(4)
Q, K, V = X @ W_q, X @ W_k, X @ W_v
A = softmax(Q @ K.T, eksen=1)
Y = A @ V
print(Q.shape, A.shape, Y.shape)
print(np.round(A[0], 3))
Kendini test et
-
Bir elemanın diğerine ne kadar dikkat edeceği hangi iki parçadan hesaplanır?
- İkisinin Value'su
- Query ve Value
- Yalnızca Key
- Birinin Query'si ile diğerinin Key'i
Cevabı göster
Birinin Query'si ile diğerinin Key'i — Skor = q_i · k_j; Value yalnızca taşınan bilgidir.
-
Sorguları anahtarlarla karşılaştır.
skor = Q @ ____
Cevabı göster
skor = Q @ K.T
-
Rolleri eşleştir.
- Query
- Ne arıyorum?
- Key
- Bende ne var?
- Value
- Ne veririm?
- W_q, W_k, W_v
- Öğrenilen dönüşümler
Sıradaki ders: Scaled dot-product