Dikkat ve Transformer

Q, K, V, ölçekli nokta çarpım, maske ve blok.

Mimari tarifte bir adım: her kelime parçası, diğer parçalara bakarak kendi sayı listesini karıştırır. Buna dikkat denir. Q, K, V üç ayrı çarpma tablosudur; yeni bir işlemci veya JVM değildir. “Banka” nehir kenarı mı, kurum mu? Karar, komşu parçaların listelerine bakılarak (ağırlıklı ortalama) alınmaya çalışılır. Transformer, bu adımı ve ardından küçük bir çarpma yığınını katman katman tekrarlayan tariftir.

Q, K, V

Her token’ın girdi vektörü xᵢ ∈ ℝᵈ. Üç öğrenilmiş matris:

qᵢ = xᵢ W_Q, kᵢ = xᵢ W_K, vᵢ = xᵢ W_V

W_Q, W_K ∈ ℝ^{d × d_k}, W_V ∈ ℝ^{d × d_v}. Sorgu “ne arıyorum”, anahtar “ne sunuyorum”, değer “katkım”. Skor qᵢ · kⱼ. Hepsi birden:

Attention(Q, K, V) = softmax(Q Kᵀ / √d_k) V

Q Kᵀ satır i, sütun j için qᵢ · kⱼ. √d_k ölçeği: d_k büyüdükçe nokta çarpımın varyansı d_k ile artar, softmax sivrileşir, gradyan ölür. Bölme, skoru O(1) varyansa çeker.

Softmax satır satırdır: konum i için ağırlıklar α_{i1} … α_{in} ≥ 0 toplamı 1. Çıktı oᵢ = Σⱼ α_{ij} vⱼ — değerlerin ağırlıklı ortalaması.

İki token, iki boyut

d_k = 2, ölçek √2 ≈ 1.414. Token A: q = [1, 0], k = [1, 0], v = [1, 0]. Token B: q = [0.2, 1], k = [0, 1], v = [0, 1].

A’nın skorları (ölçeklenmiş):

  • A←A: (1·1 + 0·0)/1.414 ≈ 0.707
  • A←B: (1·0 + 0·1)/1.414 = 0

softmax(0.707, 0) ≈ (0.67, 0.33) değil: e^{0.707} ≈ 2.03, e^0 = 1, toplam 3.03 → (0.67, 0.33). Evet. o_A ≈ 0.67[1,0] + 0.33[0,1] = [0.67, 0.33].

B’nin skorları:

  • B←A: (0.2·1 + 1·0)/1.414 ≈ 0.141
  • B←B: (0.2·0 + 1·1)/1.414 ≈ 0.707

softmax ≈ (0.36, 0.64), o_B B’nin değerine daha yakın. Ağırlık “anlam haritası” olmak zorunda değildir; bu sayılar rastgele seçilmiş vektörlerdir. Eğitim, W_Q, W_K, W_V’yi kayıptan oynatır.

Nedensel maske ve maliyet

Dil modelinde konum i, j > i göremez. Maske, gelecekteki skorlara −∞ yazar; exp(−∞) = 0. Maskesiz eğitim, sonraki token’ı kopyalar: sahte kayıp, sahte model.

Maliyet n token için Q Kᵀ → n × n skor, O(n² d_k) zaman ve (naif) bellek. n 4k’dan 128k’ye 32² = 1024 kat skor hücresi demektir. Uzun bağlamın fiyatı buradadır. KV önbelleği çıkarımdaki tekrarı keser; n² eğitim/prefill gerçeğini silmez.

Konum kodu yoksa dikkat sırayı görmez: qᵢ · kⱼ permütasyona duyarsız kalır (maske hariç). Sinüs / öğrenilmiş konum vektörü x’e eklenir veya döner (RoPE): aynı içerik, farklı yer, farklı skor.

Çok baş ve blok

Çok baş: h ayrı (W_Q^{(r)}, W_K^{(r)}, W_V^{(r)}), d_k = d / h. Çıktılar birleşir, W_O ile geri d boyuta döner. Başlar “sözdizimi / gönderim” diye etiketlenmek zorunda değildir; kapasiteyi böler, farklı altuzaylarda skor hesaplar.

Bir Transformer bloğu (kod çözücü):

  1. x ← LayerNorm(x) (pre-norm) veya dikkatten sonra (post-norm)
  2. x ← x + MultiHeadAttention(x) artık bağlantı
  3. x ← LayerNorm(x)
  4. x ← x + MLP(x) (genelde 4d geniş, GELU, geri d)

Artık yol ∂L/∂x_{in} += ∂L/∂x_{out}: gradyan derinliğe toplanarak ulaşır, yalnızca çarpılarak değil. LayerNorm, öznitelik ekseninde ortalama 0 varyans 1 (artı öğrenilmiş ölçek/kayma); katmanlar arası ölçek savrulmasını keser.

GPT tarzı yığın yalnızca kod çözücü, nedensel maskeli. Orijinal çeviri modeli kodlayıcı (çift yönlü) + kod çözücüydü. BERT maskeli dil: rastgele token’ı tahmin, çift yönlü; sohbet üretimi değil.

Dikkat ≠ anlama. α_{ij} bazen hizalamayı gösterir, bazen gürültüdür. İşe yarayan, her katmanın x’i bağlama göre yeniden karıştırmasıdır.

Alıştırma

Üç token’da nedensel maske ile n × n skor matrisinde hangi hücreler −∞’dur? (Üst üçgen, sıraya göre.) Aynı q, k ile d_k = 64 iken ölçek olmadan softmax’ın neden neredeyse one-hot olacağını varyans sezgisiyle söyleyin.